From 2f38d579cdd25f2848d0728a185145342e7b2e0f Mon Sep 17 00:00:00 2001 From: Nico Date: Wed, 13 Feb 2013 00:11:48 +0100 Subject: [PATCH] init --- Gemfile | 65 +- Gemfile.lock | 133 +- README.rdoc | 261 + Rakefile | 2 +- .../images/admin/backgrounds/background.png | Bin 3044 -> 0 bytes .../images/admin/backgrounds/background2.png | Bin 3044 -> 0 bytes .../images/admin/backgrounds/bg-brown.jpg | Bin 15806 -> 0 bytes .../images/admin/backgrounds/bg-dark.jpg | Bin 15662 -> 0 bytes .../admin/backgrounds/bg-green-dark.jpg | Bin 21573 -> 0 bytes .../images/admin/backgrounds/bg-white.jpg | Bin 22683 -> 0 bytes app/assets/images/admin/backgrounds/fond.jpg | Bin 36918 -> 0 bytes app/assets/images/admin/backgrounds/legno.jpg | Bin 154377 -> 0 bytes .../images/admin/backgrounds/white_oak.png | Bin 238188 -> 0 bytes .../admin/content_type/type_BlockContent.png | Bin 2799 -> 0 bytes .../admin/content_type/type_BreakContent.png | Bin 2619 -> 0 bytes .../content_type/type_DownloadContent.png | Bin 3002 -> 0 bytes .../content_type/type_DynamicContent.png | Bin 3101 -> 0 bytes .../admin/content_type/type_EventContent.png | Bin 3225 -> 0 bytes .../content_type/type_GalleryContent.png | Bin 3099 -> 0 bytes .../admin/content_type/type_HtmlContent.png | Bin 3349 -> 0 bytes .../admin/content_type/type_ImageContent.png | Bin 3086 -> 0 bytes .../content_type/type_ImgLinkContent.png | Bin 3064 -> 0 bytes .../admin/content_type/type_LinkContent.png | Bin 3291 -> 0 bytes .../admin/content_type/type_MapContent.png | Bin 3401 -> 0 bytes .../admin/content_type/type_TableContent.png | Bin 3028 -> 0 bytes .../admin/content_type/type_TextContent.png | Bin 2954 -> 0 bytes .../admin/content_type/type_TitleContent.png | Bin 3047 -> 0 bytes .../images/admin/dashboard/icones_admins.png | Bin 3029 -> 0 bytes .../admin/dashboard/icones_data_files.png | Bin 1584 -> 0 bytes .../images/admin/dashboard/icones_folders.png | Bin 3137 -> 0 bytes .../admin/dashboard/icones_image_files.png | Bin 1599 -> 0 bytes .../admin/dashboard/icones_menu_items.png | Bin 1447 -> 0 bytes .../images/admin/dashboard/icones_u.png | Bin 1339 -> 0 bytes app/assets/images/admin/default_image.png | Bin 6483 -> 0 bytes app/assets/images/admin/pbar-ani.gif | Bin 7970 -> 0 bytes app/assets/images/admin/rte-sf437e1403c.png | Bin 1145 -> 0 bytes .../images/admin/spr_toolbar_icons_r1.png | Bin 2119 -> 0 bytes app/assets/images/fond.jpg | Bin 0 -> 12526 bytes app/assets/images/front/background.png | Bin 56324 -> 0 bytes app/assets/images/front/fleche.png | Bin 791 -> 0 bytes app/assets/images/front/go_top.png | Bin 1474 -> 0 bytes app/assets/images/front/logo.png | Bin 30968 -> 0 bytes app/assets/images/front/logo_fade.png | Bin 64535 -> 0 bytes app/assets/images/front/pagination.png | Bin 706 -> 0 bytes app/assets/images/front/slider_shadow.png | Bin 3630 -> 0 bytes app/assets/images/logo.png | Bin 0 -> 21575 bytes app/assets/images/logoa.png | Bin 0 -> 13016 bytes app/assets/images/miniature.png | Bin 0 -> 476 bytes app/assets/images/rte-sf5bccc07eb.png | Bin 3645 -> 0 bytes app/assets/images/rte/rte_blockquote.png | Bin 378 -> 0 bytes app/assets/images/rte/rte_bold.png | Bin 440 -> 0 bytes app/assets/images/rte/rte_em.png | Bin 343 -> 0 bytes app/assets/images/rte/rte_fore_color.png | Bin 264 -> 0 bytes app/assets/images/rte/rte_html.png | Bin 485 -> 0 bytes app/assets/images/rte/rte_italic.png | Bin 340 -> 0 bytes app/assets/images/rte/rte_justify.png | Bin 266 -> 0 bytes app/assets/images/rte/rte_justify_center.png | Bin 285 -> 0 bytes app/assets/images/rte/rte_justify_left.png | Bin 251 -> 0 bytes app/assets/images/rte/rte_justify_right.png | Bin 234 -> 0 bytes app/assets/images/rte/rte_link.png | Bin 571 -> 0 bytes app/assets/images/rte/rte_ordered_list.png | Bin 317 -> 0 bytes app/assets/images/rte/rte_strong.png | Bin 497 -> 0 bytes app/assets/images/rte/rte_sub.png | Bin 508 -> 0 bytes app/assets/images/rte/rte_sup.png | Bin 490 -> 0 bytes app/assets/images/rte/rte_underline.png | Bin 503 -> 0 bytes app/assets/images/rte/rte_unordered_list.png | Bin 222 -> 0 bytes app/assets/javascripts/admin.js | 144 +- .../javascripts/admin/articles_actions.coffee | 41 - app/assets/javascripts/admin/auto_tiny_mce.js | 34 - app/assets/javascripts/admin/block.js | 169 - app/assets/javascripts/admin/browser.js | 22 - app/assets/javascripts/admin/cible.js | 19 - app/assets/javascripts/admin/data_files.js | 258 - app/assets/javascripts/admin/forms.js | 46 - app/assets/javascripts/admin/image_files.js | 267 - .../admin/jquery-activity-indicator.js | 10 - .../javascripts/admin/jquery-fileupload-ui.js | 490 - .../javascripts/admin/jquery-fileupload.js | 906 - .../javascripts/admin/jquery.tinymce.js | 1 - app/assets/javascripts/admin/manager.js | 173 - app/assets/javascripts/admin/menu_items.js | 109 - .../javascripts/admin/pages_actions.js.coffee | 43 - app/assets/javascripts/admin/pane_hover.js | 49 - app/assets/javascripts/admin/qi_core.js | 111 - .../javascripts/admin/timepicker.coffee | 8 - app/assets/javascripts/admin/uploads.js | 90 - app/assets/javascripts/application.js | 77 + app/assets/javascripts/connexion.js | 10 - app/assets/javascripts/public.js.coffee | 11 - app/assets/javascripts/shared/ace.js | 11 + .../javascripts/shared/ajquery.ui.widget.js | 528 + app/assets/javascripts/shared/jquery-ui.js | 791 - app/assets/javascripts/shared/jquery.cycle.js | 27 - .../javascripts/shared/jquery.easing.1.3.js | 205 - .../shared/jquery.fancybox-1.3.4.pack.js | 46 - .../javascripts/shared/jquery.fileupload.js | 1113 + app/assets/javascripts/shared/jquery.js | 9046 ------- .../javascripts/shared/jquery.masonry.min.js | 10 + .../javascripts/shared/jquery.mobile-1.1.1.js | 7690 ------ .../shared/jquery.mousewheel-3.0.4.pack.js | 14 - .../javascripts/shared/jquery.strings.js | 291 - app/assets/javascripts/shared/jquery.utils.js | 260 - .../javascripts/shared/jquery.utils.ui.min.js | 26 - app/assets/javascripts/shared/maxlenght.js | 57 - .../javascripts/shared/mode-markdown.js | 1786 +- .../shared/modernizr.custom.39712.js | 4 - .../javascripts/shared/slides.min.jquery.js | 20 - .../javascripts/shared/theme-textmate.js | 1 + app/assets/javascripts/shared/ui.timepickr.js | 386 - .../javascripts/wysihtml5/parser_rules.js | 551 - app/assets/javascripts/wysihtml5/wysihtml5.js | 9610 -------- app/assets/stylesheets/admin.css.scss | 438 +- .../stylesheets/admin/articles.css.scss | 187 - app/assets/stylesheets/admin/forms.scss | 138 - .../stylesheets/admin/menu_items.css.scss | 192 - .../stylesheets/admin/portlets.css.scss | 77 - app/assets/stylesheets/admin/qi.scss | 58 - app/assets/stylesheets/admin/qi_cms.css.scss | 1496 -- app/assets/stylesheets/admin/qi_core.css.scss | 970 - .../stylesheets/admin/qi_pane_hover.css.scss | 58 - app/assets/stylesheets/admin/uploads.css.scss | 42 - .../stylesheets/admin/wisihtml5.css.scss | 93 - .../admin/x-qi-datepicker.css.scss | 177 - app/assets/stylesheets/application.css.scss | 281 + app/assets/stylesheets/connexion.css.scss | 157 - .../stylesheets/{admin => }/general.css.scss | 158 +- app/assets/stylesheets/public.css.scss | 95 - .../stylesheets/public/articles.css.scss | 58 - .../stylesheets/public/gallery.css.scss | 23 - .../stylesheets/public/portlets.css.scss | 31 - app/assets/stylesheets/public/slider.css.scss | 92 - app/assets/stylesheets/shared/fluid_grid.css | 345 - app/assets/stylesheets/shared/formtastic.css | 145 - .../shared/jquery-ui-1.8.11.custom.css | 573 - .../shared/jquery.fancybox-1.3.4.css | 359 - .../shared/jquery.mobile-1.1.1.css | 2140 -- .../stylesheets/shared/ui.timepickr.css | 64 - app/assets/stylesheets/shared/wysiwg.css.scss | 133 - app/controllers/admin/admins_controller.rb | 161 +- app/controllers/admin/albums_controller.rb | 48 - app/controllers/admin/articles_controller.rb | 103 - app/controllers/admin/auths_controller.rb | 25 + app/controllers/admin/blocks_controller.rb | 56 - .../admin/categories_controller.rb | 77 - app/controllers/admin/cibles_controller.rb | 24 - app/controllers/admin/comments_controller.rb | 52 - .../admin/data_files_controller.rb | 60 - .../admin/external_links_controller.rb | 72 - .../admin/file_folders_controller.rb | 49 - .../admin/image_files_controller.rb | 66 - .../admin/menu_aliases_controller.rb | 15 - .../admin/menu_items_controller.rb | 250 - app/controllers/admin/menu_urls_controller.rb | 14 - app/controllers/admin/menus_controller.rb | 79 - app/controllers/admin/pages_controller.rb | 60 +- app/controllers/admin/passwords_controller.rb | 17 - .../admin/portfolio_images_controller.rb | 72 + app/controllers/admin/sessions_controller.rb | 5 - app/controllers/application_controller.rb | 93 +- .../download_data_files_controller.rb | 14 - app/controllers/pages_controller.rb | 21 + app/controllers/portfolios_controller.rb | 80 + .../portlet/block_contents_controller.rb | 111 - .../portlet/break_contents_controller.rb | 116 - .../portlet/download_contents_controller.rb | 109 - .../portlet/dynamic_contents_controller.rb | 116 - .../portlet/event_contents_controller.rb | 100 - .../portlet/gallery_contents_controller.rb | 109 - .../portlet/gallery_images_controller.rb | 82 - .../portlet/html_contents_controller.rb | 116 - .../portlet/image_contents_controller.rb | 100 - .../portlet/img_link_contents_controller.rb | 112 - .../portlet/link_contents_controller.rb | 110 - .../portlet/map_contents_controller.rb | 116 - .../portlet/portlets_controller.rb | 124 - .../portlet/table_cols_controller.rb | 35 - .../portlet/table_contents_controller.rb | 108 - .../portlet/table_rows_controller.rb | 106 - .../portlet/text_contents_controller.rb | 116 - .../portlet/title_contents_controller.rb | 116 - app/controllers/public/articles_controller.rb | 76 - app/controllers/public/comments_controller.rb | 19 - app/controllers/public/home_controller.rb | 16 - .../public/menu_items_controller.rb | 35 - app/helpers/admin/auto_load_div_helper.rb | 35 - app/helpers/admin/javascripts_helper.rb | 28 - app/helpers/admin/magick_order_helper.rb | 36 - app/helpers/admin/pagination_helper.rb | 40 - app/helpers/application_helper.rb | 29 - app/helpers/{admin => }/icon_helper.rb | 6 +- app/helpers/markdown_helper.rb | 46 + app/helpers/public/menu_items_helper.rb | 7 - .../_edit.html.haml => mailers/.gitkeep} | 0 app/models/admin.rb | 51 +- app/models/album.rb | 5 - app/models/allowed_block_content.rb | 5 - app/models/article.rb | 54 - app/models/block.rb | 28 - app/models/block_content.rb | 33 - app/models/break_content.rb | 6 - app/models/category.rb | 12 - app/models/cel_table.rb | 95 - app/models/cible_alias.rb | 26 - app/models/cible_type.rb | 3 - app/models/cible_url.rb | 11 - app/models/comment.rb | 16 - app/models/content_type.rb | 3 - app/models/data_file.rb | 33 - app/models/download_content.rb | 9 - app/models/dynamic_content.rb | 9 - app/models/event.rb | 117 - app/models/event_content.rb | 62 - app/models/external_link.rb | 16 - app/models/file_folder.rb | 3 - app/models/gallery_content.rb | 27 - app/models/gallery_image.rb | 8 - app/models/html_content.rb | 7 - app/models/image_content.rb | 32 - app/models/image_file.rb | 43 - app/models/img_link_content.rb | 35 - app/models/link_content.rb | 34 - app/models/map_content.rb | 12 - app/models/menu.rb | 15 - app/models/menu_alias.rb | 13 - app/models/menu_folder.rb | 8 - app/models/menu_item.rb | 190 - app/models/menu_item_content_type.rb | 3 - app/models/menu_url.rb | 9 - app/models/page.rb | 55 +- app/models/portfolio.rb | 16 + app/models/portfolio_image.rb | 65 + app/models/portfolio_portfolio_image.rb | 10 + app/models/portlet.rb | 39 - app/models/table_content.rb | 48 - app/models/table_row.rb | 82 - app/models/text_content.rb | 6 - app/models/title_content.rb | 7 - app/uploaders/avatar_uploader.rb | 65 + app/uploaders/file_uploader.rb | 2 +- app/uploaders/image_uploader.rb | 50 +- app/views/admin/admins/_admin.haml | 11 + app/views/admin/admins/_admin.html.haml | 12 - app/views/admin/admins/_form.haml | 17 + app/views/admin/admins/_form.html.haml | 46 - app/views/admin/admins/_index_block.haml | 39 - app/views/admin/admins/create.js.erb | 2 - app/views/admin/admins/edit.haml | 1 + app/views/admin/admins/edit.html.haml | 6 - app/views/admin/admins/edit.js.erb | 1 - app/views/admin/admins/index.haml | 13 + app/views/admin/admins/index.html.haml | 6 - app/views/admin/admins/index.js.erb | 2 - app/views/admin/admins/new.haml | 1 + app/views/admin/admins/new.js.erb | 1 - app/views/admin/admins/show.haml | 7 + app/views/admin/admins/show.html.haml | 31 - app/views/admin/admins/update.js.erb | 2 - app/views/admin/albums/_album.html.haml | 1 - app/views/admin/albums/_albums.html.haml | 2 - app/views/admin/albums/create.js.erb | 2 - app/views/admin/albums/destroy.js.erb | 4 - app/views/admin/albums/edit.js.erb | 16 - app/views/admin/albums/index.js.erb | 4 - app/views/admin/albums/new.js.erb | 16 - app/views/admin/albums/update.js.erb | 2 - app/views/admin/articles/_article.html.haml | 23 - app/views/admin/articles/_form.html.haml | 15 - .../admin/articles/_index_block.html.haml | 22 - app/views/admin/articles/_show.html.haml | 17 - app/views/admin/articles/create.js.erb | 5 - app/views/admin/articles/destroy.js.erb | 2 - app/views/admin/articles/edit.html.haml | 23 - app/views/admin/articles/edit.js.erb | 1 - app/views/admin/articles/index.html.haml | 11 - app/views/admin/articles/index.js.erb | 2 - app/views/admin/articles/new.js.erb | 2 - app/views/admin/articles/update.js.erb | 5 - app/views/admin/auths/new.haml | 12 + app/views/admin/blocks/_block.html.haml | 19 - .../admin/blocks/_block_allowed.html.haml | 12 - app/views/admin/blocks/_form.html.haml | 16 - app/views/admin/blocks/edit.html.haml | 1 - app/views/admin/blocks/edit.js.erb | 8 - app/views/admin/blocks/old.block | 5 - app/views/admin/blocks/old.show.html.haml | 19 - .../admin/categories/_category.html.haml | 10 - app/views/admin/categories/_form.html.haml | 8 - app/views/admin/categories/cible.html.haml | 6 - app/views/admin/categories/create.js.erb | 3 - app/views/admin/categories/destroy.js.erb | 3 - app/views/admin/categories/edit.js.erb | 1 - app/views/admin/categories/index.html.haml | 7 - app/views/admin/categories/new.js.erb | 1 - app/views/admin/categories/update.js.erb | 2 - app/views/admin/cibles/_cible_place.html.haml | 7 - app/views/admin/cibles/index.html.haml | 1 - app/views/admin/cibles/index.js.erb | 2 - app/views/admin/cibles/new.html.haml | 15 - app/views/admin/comments/_comment.html.haml | 11 - app/views/admin/comments/_form.html.haml | 15 - app/views/admin/comments/destroy.js.erb | 3 - app/views/admin/comments/edit.js.erb | 1 - app/views/admin/comments/index.html.haml | 6 - app/views/admin/comments/update.js.erb | 3 - app/views/admin/dashboard/index.html.haml | 30 +- .../admin/data_files/_data_file.html.haml | 20 - .../_data_files_container.html.haml | 3 - app/views/admin/data_files/_form.html.haml | 15 - .../admin/data_files/_index_block.html.haml | 53 - app/views/admin/data_files/_show.html.haml | 18 - app/views/admin/data_files/create.js.erb | 5 - app/views/admin/data_files/destroy.js.erb | 4 - app/views/admin/data_files/index.html.haml | 2 - app/views/admin/data_files/index.js.erb | 18 - app/views/admin/data_files/show.js.erb | 3 - app/views/admin/data_files/update.js.erb | 5 - .../external_links/_external_link.html.haml | 11 - .../admin/external_links/_form.html.haml | 14 - .../admin/external_links/cible.html.haml | 11 - app/views/admin/external_links/create.js.erb | 3 - app/views/admin/external_links/destroy.js.erb | 1 - app/views/admin/external_links/edit.html.haml | 6 - app/views/admin/external_links/edit.js.erb | 1 - app/views/admin/external_links/index.js.erb | 2 - app/views/admin/external_links/new.js.erb | 1 - app/views/admin/external_links/show.html.haml | 31 - app/views/admin/external_links/update.js.erb | 2 - .../admin/file_folders/_file_folder.html.haml | 2 - .../file_folders/_file_folders.html.haml | 2 - app/views/admin/file_folders/create.js.erb | 2 - app/views/admin/file_folders/destroy.js.erb | 4 - app/views/admin/file_folders/edit.js.erb | 16 - app/views/admin/file_folders/index.js.erb | 3 - app/views/admin/file_folders/new.js.erb | 16 - app/views/admin/file_folders/update.js.erb | 2 - app/views/admin/image_files/_form.html.haml | 17 - .../admin/image_files/_image_file.html.haml | 11 - .../_image_files_container.html.haml | 3 - .../admin/image_files/_index_block.html.haml | 60 - app/views/admin/image_files/_show.html.haml | 16 - app/views/admin/image_files/create.js.erb | 5 - app/views/admin/image_files/destroy.js.erb | 4 - app/views/admin/image_files/index.html.haml | 2 - app/views/admin/image_files/index.js.erb | 18 - app/views/admin/image_files/rotate.js.erb | 9 - app/views/admin/image_files/show.js.erb | 3 - app/views/admin/image_files/update.js.erb | 5 - app/views/admin/menu_aliases/_form.html.haml | 6 - .../admin/menu_aliases/_menu_alias.html.haml | 4 - .../admin/menu_items/_cible_line.html.haml | 9 - .../admin/menu_items/_edit_form.html.haml | 12 - app/views/admin/menu_items/_form.html.haml | 12 - .../admin/menu_items/_form_line.html.haml | 7 - .../admin/menu_items/_index_block.html.haml | 36 - .../admin/menu_items/_menu_item.html.haml | 28 - .../_menu_item_content_form.html.haml | 7 - .../admin/menu_items/_new_form.html.haml | 18 - app/views/admin/menu_items/_show.html.haml | 7 - app/views/admin/menu_items/cible.html.haml | 5 - app/views/admin/menu_items/create.js.erb | 4 - app/views/admin/menu_items/edit.html.haml | 30 - app/views/admin/menu_items/edit.js.erb | 3 - app/views/admin/menu_items/index.html.haml | 14 - app/views/admin/menu_items/index.js.erb | 13 - app/views/admin/menu_items/new.html.haml | 4 - app/views/admin/menu_items/new.js.erb | 1 - app/views/admin/menu_items/show.js.erb | 12 - app/views/admin/menu_items/update.js.erb | 4 - .../menu_items/update_reorder_failled.js.erb | 5 - app/views/admin/menu_urls/_form.html.haml | 5 - app/views/admin/menu_urls/_menu_url.html.haml | 4 - app/views/admin/menus/_form.html.haml | 8 - app/views/admin/menus/_index_block.html.haml | 43 - app/views/admin/menus/_menu.html.haml | 9 - app/views/admin/menus/edit.html.haml | 4 - app/views/admin/menus/index.html.haml | 5 - app/views/admin/menus/index.js.erb | 2 - app/views/admin/menus/new.html.haml | 4 - app/views/admin/menus/show.html.haml | 2 - app/views/admin/pages/_form.haml | 15 + app/views/admin/pages/_form.html.haml | 6 - app/views/admin/pages/_page.haml | 10 + app/views/admin/pages/_page.html.haml | 1 - app/views/admin/pages/edit.haml | 1 + app/views/admin/pages/index.haml | 13 + app/views/admin/pages/new.haml | 1 + app/views/admin/pages/show.haml | 7 + app/views/admin/pages/update.html.haml | 2 - app/views/admin/passwords/edit.html.haml | 16 - app/views/admin/passwords/new.html.haml | 11 - .../portfolio_images/_portfolio_image.haml | 19 + .../admin/portfolio_images/create.js.erb | 3 + .../admin/portfolio_images/destroy.js.erb | 1 + app/views/admin/portfolio_images/edit.haml | 1 + app/views/admin/portfolio_images/edit.js.erb | 1 + app/views/admin/portfolio_images/index.haml | 34 + app/views/admin/portfolio_images/new.haml | 1 + .../admin/portfolio_images/rotate.js.erb | 2 + app/views/admin/portfolio_images/show.haml | 3 + app/views/admin/sessions/new.html.haml | 21 - .../reset_password_instructions.html.haml | 6 - app/views/download_data_files/index.html.haml | 2 - app/views/kaminari/_first_page.html.haml | 2 +- app/views/kaminari/_gap.html.haml | 4 +- app/views/kaminari/_last_page.html.haml | 2 +- app/views/kaminari/_next_page.html.haml | 2 +- app/views/kaminari/_page.html.haml | 2 +- app/views/kaminari/_paginator.html.haml | 26 +- app/views/kaminari/_prev_page.html.haml | 4 +- app/views/layouts/admin.html.haml | 35 +- app/views/layouts/application.html.haml | 57 + app/views/layouts/connexion.html.haml | 61 - app/views/layouts/public.html.haml | 47 - app/views/pages/show.html.haml | 1 + .../portfolio_images/_portfolio_image.haml | 56 + app/views/portfolios/_form.haml | 18 + app/views/portfolios/_image_form.haml | 10 + app/views/portfolios/_pagination.html.haml | 22 + app/views/portfolios/_portfolio.haml | 6 + app/views/portfolios/create.js.erb | 2 + app/views/portfolios/destroy.js.erb | 1 + app/views/portfolios/edit.js.erb | 2 + app/views/portfolios/index.html.haml | 29 + app/views/portfolios/new.js.erb | 3 + app/views/portfolios/show.html.haml | 40 + app/views/portfolios/show.js.erb | 16 + app/views/portfolios/update.js.erb | 2 + .../block_contents/_block_content.html.haml | 20 - .../portlet/block_contents/_form.html.haml | 25 - .../break_contents/_break_content.html.haml | 1 - .../portlet/break_contents/_form.html.haml | 15 - .../_download_content.html.haml | 8 - .../portlet/download_contents/_form.html.haml | 39 - .../_dynamic_content.html.haml | 1 - .../portlet/dynamic_contents/_form.html.haml | 18 - .../event_contents/_event_content.html.haml | 48 - .../portlet/event_contents/_form.html.haml | 56 - .../portlet/gallery_contents/_form.html.haml | 9 - .../_gallery_content.html.haml | 24 - .../portlet/gallery_images/_form.html.haml | 10 - .../gallery_images/_gallery_image.html.haml | 9 - .../portlet/gallery_images/create.js.erb | 1 - .../portlet/gallery_images/destroy.js.erb | 4 - app/views/portlet/gallery_images/edit.js.erb | 1 - .../portlet/gallery_images/reorder.js.erb | 0 .../portlet/gallery_images/update.js.erb | 2 - .../portlet/html_contents/_form.html.haml | 60 - .../html_contents/_html_content.html.haml | 11 - .../portlet/image_contents/_form.html.haml | 32 - .../image_contents/_image_content.html.haml | 42 - .../portlet/img_link_contents/_form.html.haml | 20 - .../_img_link_content.html.haml | 16 - .../portlet/link_contents/_form.html.haml | 14 - .../link_contents/_link_content.html.haml | 10 - .../portlet/map_contents/_form.html.haml | 26 - .../map_contents/_map_content.html.haml | 64 - app/views/portlet/portlets/_portlet.html.haml | 18 - app/views/portlet/portlets/new.html.haml | 7 - app/views/portlet/portlets/new.js.erb | 12 - app/views/portlet/portlets/update.js.erb | 8 - app/views/portlet/shared/_new.html.haml | 6 - app/views/portlet/shared/create.js.erb | 5 - app/views/portlet/shared/destroy.js.erb | 4 - app/views/portlet/shared/edit.js.erb | 16 - app/views/portlet/shared/new.js.erb | 24 - app/views/portlet/shared/update.js.erb | 6 - app/views/portlet/table_cols/create.js.erb | 5 - app/views/portlet/table_cols/destroy.js.erb | 5 - app/views/portlet/table_cols/update.js.erb | 2 - .../portlet/table_contents/_form.html.haml | 22 - .../table_contents/_table_content.html.haml | 46 - .../_table_content_edit_pane.html.haml | 33 - .../portlet/table_contents/destroy_row.js.erb | 6 - app/views/portlet/table_rows/create.js.erb | 5 - app/views/portlet/table_rows/destroy.js.erb | 5 - .../portlet/text_contents/_form.html.haml | 92 - .../text_contents/_text_content.html.haml | 1 - .../portlet/title_contents/_form.html.haml | 15 - .../title_contents/_title_content.html.haml | 4 - .../render_public/_blockcontent.html.haml | 17 - .../render_public/_breakcontent.html.haml | 9 - .../render_public/_downloadcontent.html.haml | 11 - .../render_public/_dynamiccontent.html.haml | 3 - .../render_public/_eventcontent.html.haml | 106 - .../render_public/_gallerycontent.html.haml | 41 - .../render_public/_htmlcontent.html.haml | 6 - .../render_public/_imagecontent.html.haml | 51 - .../render_public/_imglinkcontent.html.haml | 27 - .../render_public/_linkcontent.html.haml | 6 - .../render_public/_mapcontent.html.haml | 64 - .../render_public/_tablecontent.html.haml | 18 - .../render_public/_textcontent.html.haml | 1 - .../render_public/_titlecontent.html.haml | 5 - app/views/public/articles/_article.html.haml | 38 - .../public/articles/_article_intro.html.haml | 35 - .../articles/_sidebar_archives.html.haml | 16 - .../articles/_sidebar_categories.html.haml | 7 - .../articles/_sidebar_recents.html.haml | 8 - .../public/articles/_sidebar_tags.html.haml | 8 - app/views/public/articles/feed.rss.builder | 22 - app/views/public/articles/index.html.haml | 8 - app/views/public/articles/show.html.haml | 23 - app/views/public/blocks/_block.html.haml | 4 - app/views/public/comments/_comment.html.haml | 26 - app/views/public/comments/_form.html.haml | 32 - app/views/public/comments/create.js.erb | 12 - app/views/public/home/home.html.haml | 7 - app/views/public/menu_items/show.html.haml | 23 - app/views/public/shared/_first_menu.html.haml | 3 - app/views/{public => }/shared/_ga.html.erb | 2 +- config.ru | 2 +- config/application.rb | 19 +- config/database.yml | 17 +- config/deploy.rb | 137 +- config/environment.rb | 2 +- config/environments/development.rb | 62 +- config/environments/production.rb | 20 +- config/environments/test.rb | 12 +- config/initializers/devise.rb | 149 - config/initializers/formtastic.rb | 94 - config/initializers/inflections.rb | 5 + config/initializers/secret_token.rb | 2 +- config/initializers/session_store.rb | 4 +- config/initializers/to_slug.rb | 2 +- config/locales/devise.fr.yml | 70 - config/locales/fr.yml | 2 + config/nginx.conf | 16 +- config/routes.rb | 192 +- config/unicorn.rb | 2 +- db/migrate/0001_create_cible_types.rb | 15 - db/migrate/0003_create_menu.rb | 15 - db/migrate/0004_menu_items.rb | 36 - .../0005_create_menu_item_content_types.rb | 16 - db/migrate/0010_create_pages.rb | 20 - .../0011_create_allowed_block_contents.rb | 15 - db/migrate/0065_create_blocks.rb | 19 - db/migrate/0070_create_portlets.rb | 19 - db/migrate/0071_create_content_types.rb | 15 - db/migrate/0075_create_title_contents.rb | 18 - db/migrate/0076_create_text_contents.rb | 17 - db/migrate/0077_create_image_contents.rb | 26 - db/migrate/0078_create_link_contents.rb | 25 - db/migrate/0079_create_break_contents.rb | 17 - db/migrate/0080_create_html_contents.rb | 16 - db/migrate/0081_create_download_contents.rb | 20 - db/migrate/0082_create_gallery_contents.rb | 20 - db/migrate/0101_create_gallery_images.rb | 18 - db/migrate/0102_create_dynamic_contents.rb | 16 - .../20110215144022_create_table_contents.rb | 19 - .../20110215144326_create_table_rows.rb | 15 - .../20110215144501_create_cel_tables.rb | 17 - .../20110412080316_create_image_files.rb | 19 - db/migrate/20110414184246_create_albums.rb | 17 - .../20110418153215_create_block_contents.rb | 17 - .../20110420132008_create_menu_aliases.rb | 16 - db/migrate/20110420132127_create_menu_urls.rb | 16 - .../20110421125532_create_file_folders.rb | 16 - .../20110421125631_create_data_files.rb | 18 - .../20110422144907_create_cible_aliases.rb | 17 - .../20110422144942_create_cible_urls.rb | 16 - .../20110427164514_create_map_contents.rb | 19 - .../20110708093908_create_external_links.rb | 21 - db/migrate/20110710114840_create_articles.rb | 22 - .../20110929085855_create_qa_auth_admins.rb | 23 - db/migrate/20111006155955_create_comments.rb | 22 - .../20111128164327_create_categories.rb | 13 - .../20111209094403_create_event_contents.rb | 27 - .../20120509084011_add_author_to_articles.rb | 6 - ...516110751_add_photograph_to_image_files.rb | 10 - ...65921_add_content_type_to_html_contents.rb | 6 - db/migrate/20130205214359_create_admins.rb | 34 + db/migrate/20130205223005_create_pages.rb | 17 + .../20130205231135_create_portfolios.rb | 17 + .../20130205231250_create_portfolio_images.rb | 14 + ...31418_create_portfolio_portfolio_images.rb | 12 + db/schema.rb | 367 +- public/500.html | 1 - public/ace_editor/ace-compat-noconflict.js | 1 - .../ace-compat-uncompressed-noconflict.js | 480 - public/ace_editor/ace-compat-uncompressed.js | 480 - public/ace_editor/ace-compat.js | 1 - public/ace_editor/ace-noconflict.js | 10 - .../ace_editor/ace-uncompressed-noconflict.js | 19976 ---------------- public/ace_editor/ace-uncompressed.js | 19976 ---------------- public/ace_editor/ace.js | 10 - .../ace_editor/keybinding-emacs-noconflict.js | 1 - ...eybinding-emacs-uncompressed-noconflict.js | 150 - .../keybinding-emacs-uncompressed.js | 150 - public/ace_editor/keybinding-emacs.js | 1 - .../ace_editor/keybinding-vim-noconflict.js | 1 - .../keybinding-vim-uncompressed-noconflict.js | 138 - .../ace_editor/keybinding-vim-uncompressed.js | 138 - public/ace_editor/keybinding-vim.js | 1 - public/ace_editor/mode-c_cpp-noconflict.js | 1 - .../mode-c_cpp-uncompressed-noconflict.js | 919 - public/ace_editor/mode-c_cpp-uncompressed.js | 919 - public/ace_editor/mode-c_cpp.js | 1 - public/ace_editor/mode-clojure-noconflict.js | 1 - .../mode-clojure-uncompressed-noconflict.js | 422 - .../ace_editor/mode-clojure-uncompressed.js | 422 - public/ace_editor/mode-clojure.js | 1 - public/ace_editor/mode-coffee-noconflict.js | 1 - .../mode-coffee-uncompressed-noconflict.js | 607 - public/ace_editor/mode-coffee-uncompressed.js | 607 - public/ace_editor/mode-coffee.js | 1 - .../ace_editor/mode-coldfusion-noconflict.js | 1 - ...mode-coldfusion-uncompressed-noconflict.js | 2458 -- .../mode-coldfusion-uncompressed.js | 2458 -- public/ace_editor/mode-coldfusion.js | 1 - public/ace_editor/mode-csharp-noconflict.js | 1 - .../mode-csharp-uncompressed-noconflict.js | 769 - public/ace_editor/mode-csharp-uncompressed.js | 769 - public/ace_editor/mode-csharp.js | 1 - public/ace_editor/mode-css-noconflict.js | 1 - .../mode-css-uncompressed-noconflict.js | 641 - public/ace_editor/mode-css-uncompressed.js | 641 - public/ace_editor/mode-css.js | 1 - public/ace_editor/mode-golang-noconflict.js | 1 - .../mode-golang-uncompressed-noconflict.js | 378 - public/ace_editor/mode-golang-uncompressed.js | 378 - public/ace_editor/mode-golang.js | 1 - public/ace_editor/mode-groovy-noconflict.js | 1 - .../mode-groovy-uncompressed-noconflict.js | 1393 -- public/ace_editor/mode-groovy-uncompressed.js | 1393 -- public/ace_editor/mode-groovy.js | 1 - public/ace_editor/mode-haxe-noconflict.js | 1 - .../mode-haxe-uncompressed-noconflict.js | 769 - public/ace_editor/mode-haxe-uncompressed.js | 769 - public/ace_editor/mode-haxe.js | 1 - public/ace_editor/mode-html-noconflict.js | 1 - .../mode-html-uncompressed-noconflict.js | 2475 -- public/ace_editor/mode-html-uncompressed.js | 2475 -- public/ace_editor/mode-html.js | 1 - public/ace_editor/mode-java-noconflict.js | 1 - .../mode-java-uncompressed-noconflict.js | 1395 -- public/ace_editor/mode-java-uncompressed.js | 1395 -- public/ace_editor/mode-java.js | 1 - .../ace_editor/mode-javascript-noconflict.js | 1 - ...mode-javascript-uncompressed-noconflict.js | 1226 - .../mode-javascript-uncompressed.js | 1226 - public/ace_editor/mode-javascript.js | 1 - public/ace_editor/mode-json-noconflict.js | 1 - .../mode-json-uncompressed-noconflict.js | 701 - public/ace_editor/mode-json-uncompressed.js | 701 - public/ace_editor/mode-json.js | 1 - public/ace_editor/mode-latex-noconflict.js | 1 - .../mode-latex-uncompressed-noconflict.js | 95 - public/ace_editor/mode-latex-uncompressed.js | 95 - public/ace_editor/mode-latex.js | 1 - public/ace_editor/mode-less-noconflict.js | 1 - .../mode-less-uncompressed-noconflict.js | 655 - public/ace_editor/mode-less-uncompressed.js | 655 - public/ace_editor/mode-less.js | 1 - public/ace_editor/mode-liquid-noconflict.js | 1 - .../mode-liquid-uncompressed-noconflict.js | 1353 -- public/ace_editor/mode-liquid-uncompressed.js | 1353 -- public/ace_editor/mode-liquid.js | 1 - public/ace_editor/mode-lua-noconflict.js | 1 - .../mode-lua-uncompressed-noconflict.js | 523 - public/ace_editor/mode-lua-uncompressed.js | 523 - public/ace_editor/mode-lua.js | 1 - public/ace_editor/mode-markdown-noconflict.js | 1 - .../ace_editor/mode-markdown-uncompressed.js | 2925 --- public/ace_editor/mode-markdown.js | 1 - public/ace_editor/mode-ocaml-noconflict.js | 1 - .../mode-ocaml-uncompressed-noconflict.js | 539 - public/ace_editor/mode-ocaml-uncompressed.js | 539 - public/ace_editor/mode-ocaml.js | 1 - public/ace_editor/mode-perl-noconflict.js | 1 - .../mode-perl-uncompressed-noconflict.js | 574 - public/ace_editor/mode-perl-uncompressed.js | 574 - public/ace_editor/mode-perl.js | 1 - public/ace_editor/mode-pgsql-noconflict.js | 1 - .../mode-pgsql-uncompressed-noconflict.js | 1104 - public/ace_editor/mode-pgsql-uncompressed.js | 1104 - public/ace_editor/mode-pgsql.js | 1 - public/ace_editor/mode-php-noconflict.js | 1 - .../mode-php-uncompressed-noconflict.js | 1885 -- public/ace_editor/mode-php-uncompressed.js | 1885 -- public/ace_editor/mode-php.js | 1 - .../ace_editor/mode-powershell-noconflict.js | 1 - ...mode-powershell-uncompressed-noconflict.js | 710 - .../mode-powershell-uncompressed.js | 710 - public/ace_editor/mode-powershell.js | 1 - public/ace_editor/mode-python-noconflict.js | 1 - .../mode-python-uncompressed-noconflict.js | 507 - public/ace_editor/mode-python-uncompressed.js | 507 - public/ace_editor/mode-python.js | 1 - public/ace_editor/mode-ruby-noconflict.js | 1 - .../mode-ruby-uncompressed-noconflict.js | 391 - public/ace_editor/mode-ruby-uncompressed.js | 391 - public/ace_editor/mode-ruby.js | 1 - public/ace_editor/mode-scad-noconflict.js | 1 - .../mode-scad-uncompressed-noconflict.js | 907 - public/ace_editor/mode-scad-uncompressed.js | 907 - public/ace_editor/mode-scad.js | 1 - public/ace_editor/mode-scala-noconflict.js | 1 - .../mode-scala-uncompressed-noconflict.js | 1395 -- public/ace_editor/mode-scala-uncompressed.js | 1395 -- public/ace_editor/mode-scala.js | 1 - public/ace_editor/mode-scss-noconflict.js | 1 - .../mode-scss-uncompressed-noconflict.js | 679 - public/ace_editor/mode-scss-uncompressed.js | 679 - public/ace_editor/mode-scss.js | 1 - public/ace_editor/mode-sh-noconflict.js | 1 - .../mode-sh-uncompressed-noconflict.js | 289 - public/ace_editor/mode-sh-uncompressed.js | 289 - public/ace_editor/mode-sh.js | 1 - public/ace_editor/mode-sql-noconflict.js | 1 - .../mode-sql-uncompressed-noconflict.js | 159 - public/ace_editor/mode-sql-uncompressed.js | 159 - public/ace_editor/mode-sql.js | 1 - public/ace_editor/mode-svg-noconflict.js | 1 - .../mode-svg-uncompressed-noconflict.js | 2137 -- public/ace_editor/mode-svg-uncompressed.js | 2137 -- public/ace_editor/mode-svg.js | 1 - public/ace_editor/mode-text-noconflict.js | 0 .../mode-text-uncompressed-noconflict.js | 0 public/ace_editor/mode-text-uncompressed.js | 0 public/ace_editor/mode-text.js | 0 public/ace_editor/mode-textile-noconflict.js | 1 - .../mode-textile-uncompressed-noconflict.js | 254 - .../ace_editor/mode-textile-uncompressed.js | 254 - public/ace_editor/mode-textile.js | 1 - public/ace_editor/mode-xml-noconflict.js | 1 - .../mode-xml-uncompressed-noconflict.js | 1012 - public/ace_editor/mode-xml-uncompressed.js | 1012 - public/ace_editor/mode-xml.js | 1 - public/ace_editor/mode-xquery-noconflict.js | 1 - .../mode-xquery-uncompressed-noconflict.js | 540 - public/ace_editor/mode-xquery-uncompressed.js | 540 - public/ace_editor/mode-xquery.js | 1 - public/ace_editor/theme-chrome-noconflict.js | 1 - .../theme-chrome-uncompressed-noconflict.js | 207 - .../ace_editor/theme-chrome-uncompressed.js | 207 - public/ace_editor/theme-chrome.js | 1 - public/ace_editor/theme-clouds-noconflict.js | 1 - .../theme-clouds-uncompressed-noconflict.js | 160 - .../ace_editor/theme-clouds-uncompressed.js | 160 - public/ace_editor/theme-clouds.js | 1 - .../theme-clouds_midnight-noconflict.js | 1 - ...clouds_midnight-uncompressed-noconflict.js | 161 - .../theme-clouds_midnight-uncompressed.js | 161 - public/ace_editor/theme-clouds_midnight.js | 1 - public/ace_editor/theme-cobalt-noconflict.js | 1 - .../theme-cobalt-uncompressed-noconflict.js | 187 - .../ace_editor/theme-cobalt-uncompressed.js | 187 - public/ace_editor/theme-cobalt.js | 1 - .../theme-crimson_editor-noconflict.js | 1 - ...-crimson_editor-uncompressed-noconflict.js | 198 - .../theme-crimson_editor-uncompressed.js | 198 - public/ace_editor/theme-crimson_editor.js | 1 - public/ace_editor/theme-dawn-noconflict.js | 1 - .../theme-dawn-uncompressed-noconflict.js | 191 - public/ace_editor/theme-dawn-uncompressed.js | 191 - public/ace_editor/theme-dawn.js | 1 - .../theme-dreamweaver-noconflict.js | 1 - ...eme-dreamweaver-uncompressed-noconflict.js | 227 - .../theme-dreamweaver-uncompressed.js | 227 - public/ace_editor/theme-dreamweaver.js | 1 - public/ace_editor/theme-eclipse-noconflict.js | 1 - .../theme-eclipse-uncompressed-noconflict.js | 147 - .../ace_editor/theme-eclipse-uncompressed.js | 147 - public/ace_editor/theme-eclipse.js | 1 - .../theme-idle_fingers-noconflict.js | 1 - ...me-idle_fingers-uncompressed-noconflict.js | 179 - .../theme-idle_fingers-uncompressed.js | 179 - public/ace_editor/theme-idle_fingers.js | 1 - .../ace_editor/theme-kr_theme-noconflict.js | 1 - .../theme-kr_theme-uncompressed-noconflict.js | 182 - .../ace_editor/theme-kr_theme-uncompressed.js | 182 - public/ace_editor/theme-kr_theme.js | 1 - .../ace_editor/theme-merbivore-noconflict.js | 1 - ...theme-merbivore-uncompressed-noconflict.js | 182 - .../theme-merbivore-uncompressed.js | 182 - public/ace_editor/theme-merbivore.js | 1 - .../theme-merbivore_soft-noconflict.js | 1 - ...-merbivore_soft-uncompressed-noconflict.js | 188 - .../theme-merbivore_soft-uncompressed.js | 188 - public/ace_editor/theme-merbivore_soft.js | 1 - .../theme-mono_industrial-noconflict.js | 1 - ...mono_industrial-uncompressed-noconflict.js | 190 - .../theme-mono_industrial-uncompressed.js | 190 - public/ace_editor/theme-mono_industrial.js | 1 - public/ace_editor/theme-monokai-noconflict.js | 1 - .../theme-monokai-uncompressed-noconflict.js | 191 - .../ace_editor/theme-monokai-uncompressed.js | 191 - public/ace_editor/theme-monokai.js | 1 - .../theme-pastel_on_dark-noconflict.js | 1 - ...-pastel_on_dark-uncompressed-noconflict.js | 192 - .../theme-pastel_on_dark-uncompressed.js | 192 - public/ace_editor/theme-pastel_on_dark.js | 1 - .../theme-solarized_dark-noconflict.js | 1 - ...-solarized_dark-uncompressed-noconflict.js | 176 - .../theme-solarized_dark-uncompressed.js | 176 - public/ace_editor/theme-solarized_dark.js | 1 - .../theme-solarized_light-noconflict.js | 1 - ...solarized_light-uncompressed-noconflict.js | 172 - .../theme-solarized_light-uncompressed.js | 172 - public/ace_editor/theme-solarized_light.js | 1 - .../ace_editor/theme-textmate-noconflict.js | 0 .../theme-textmate-uncompressed-noconflict.js | 0 .../ace_editor/theme-textmate-uncompressed.js | 0 public/ace_editor/theme-textmate.js | 0 .../ace_editor/theme-tomorrow-noconflict.js | 1 - .../theme-tomorrow-uncompressed-noconflict.js | 206 - .../ace_editor/theme-tomorrow-uncompressed.js | 206 - public/ace_editor/theme-tomorrow.js | 1 - .../theme-tomorrow_night-noconflict.js | 1 - ...-tomorrow_night-uncompressed-noconflict.js | 206 - .../theme-tomorrow_night-uncompressed.js | 206 - public/ace_editor/theme-tomorrow_night.js | 1 - .../theme-tomorrow_night_blue-noconflict.js | 1 - ...rrow_night_blue-uncompressed-noconflict.js | 209 - .../theme-tomorrow_night_blue-uncompressed.js | 209 - .../ace_editor/theme-tomorrow_night_blue.js | 1 - .../theme-tomorrow_night_bright-noconflict.js | 1 - ...ow_night_bright-uncompressed-noconflict.js | 206 - ...heme-tomorrow_night_bright-uncompressed.js | 206 - .../ace_editor/theme-tomorrow_night_bright.js | 1 - ...heme-tomorrow_night_eighties-noconflict.js | 1 - ..._night_eighties-uncompressed-noconflict.js | 202 - ...me-tomorrow_night_eighties-uncompressed.js | 202 - .../theme-tomorrow_night_eighties.js | 1 - .../ace_editor/theme-twilight-noconflict.js | 1 - .../theme-twilight-uncompressed-noconflict.js | 204 - .../ace_editor/theme-twilight-uncompressed.js | 204 - public/ace_editor/theme-twilight.js | 1 - .../theme-vibrant_ink-noconflict.js | 1 - ...eme-vibrant_ink-uncompressed-noconflict.js | 183 - .../theme-vibrant_ink-uncompressed.js | 183 - public/ace_editor/theme-vibrant_ink.js | 1 - public/ace_editor/worker-coffee.js | 7997 ------- public/ace_editor/worker-css.js | 12228 ---------- public/ace_editor/worker-javascript.js | 11132 --------- public/ace_editor/worker-json.js | 3597 --- .../fonts/FrancoisOne/FrancoisOne-webfont.eot | Bin 17270 -> 0 bytes .../fonts/FrancoisOne/FrancoisOne-webfont.svg | 189 - .../fonts/FrancoisOne/FrancoisOne-webfont.ttf | Bin 32596 -> 0 bytes .../FrancoisOne/FrancoisOne-webfont.woff | Bin 19708 -> 0 bytes public/fonts/FrancoisOne/stylesheet.css | 16 - public/robots.txt | 8 +- public/tiny_mce/langs/en.js | 222 - public/tiny_mce/license.txt | 504 - public/tiny_mce/plugins/advhr/css/advhr.css | 5 - .../tiny_mce/plugins/advhr/editor_plugin.js | 1 - .../plugins/advhr/editor_plugin_src.js | 57 - public/tiny_mce/plugins/advhr/js/rule.js | 43 - public/tiny_mce/plugins/advhr/langs/en_dlg.js | 7 - public/tiny_mce/plugins/advhr/rule.htm | 58 - .../plugins/advimage/css/advimage.css | 13 - .../plugins/advimage/editor_plugin.js | 1 - .../plugins/advimage/editor_plugin_src.js | 50 - public/tiny_mce/plugins/advimage/image.htm | 235 - .../tiny_mce/plugins/advimage/img/sample.gif | Bin 1624 -> 0 bytes public/tiny_mce/plugins/advimage/js/image.js | 445 - .../tiny_mce/plugins/advimage/langs/en_dlg.js | 45 - .../tiny_mce/plugins/advlink/css/advlink.css | 8 - .../tiny_mce/plugins/advlink/editor_plugin.js | 1 - .../plugins/advlink/editor_plugin_src.js | 61 - public/tiny_mce/plugins/advlink/js/advlink.js | 523 - .../tiny_mce/plugins/advlink/langs/en_dlg.js | 54 - public/tiny_mce/plugins/advlink/link.htm | 338 - .../tiny_mce/plugins/advlist/editor_plugin.js | 1 - .../plugins/advlist/editor_plugin_src.js | 154 - .../plugins/autolink/editor_plugin.js | 1 - .../plugins/autolink/editor_plugin_src.js | 169 - .../plugins/autoresize/editor_plugin.js | 1 - .../plugins/autoresize/editor_plugin_src.js | 119 - .../plugins/autosave/editor_plugin.js | 1 - .../plugins/autosave/editor_plugin_src.js | 431 - public/tiny_mce/plugins/autosave/langs/en.js | 4 - .../tiny_mce/plugins/bbcode/editor_plugin.js | 1 - .../plugins/bbcode/editor_plugin_src.js | 120 - .../plugins/contextmenu/editor_plugin.js | 1 - .../plugins/contextmenu/editor_plugin_src.js | 156 - .../plugins/directionality/editor_plugin.js | 1 - .../directionality/editor_plugin_src.js | 82 - .../plugins/emotions/editor_plugin.js | 1 - .../plugins/emotions/editor_plugin_src.js | 43 - public/tiny_mce/plugins/emotions/emotions.htm | 41 - .../plugins/emotions/img/smiley-cool.gif | Bin 354 -> 0 bytes .../plugins/emotions/img/smiley-cry.gif | Bin 329 -> 0 bytes .../emotions/img/smiley-embarassed.gif | Bin 331 -> 0 bytes .../emotions/img/smiley-foot-in-mouth.gif | Bin 344 -> 0 bytes .../plugins/emotions/img/smiley-frown.gif | Bin 340 -> 0 bytes .../plugins/emotions/img/smiley-innocent.gif | Bin 336 -> 0 bytes .../plugins/emotions/img/smiley-kiss.gif | Bin 338 -> 0 bytes .../plugins/emotions/img/smiley-laughing.gif | Bin 344 -> 0 bytes .../emotions/img/smiley-money-mouth.gif | Bin 321 -> 0 bytes .../plugins/emotions/img/smiley-sealed.gif | Bin 325 -> 0 bytes .../plugins/emotions/img/smiley-smile.gif | Bin 345 -> 0 bytes .../plugins/emotions/img/smiley-surprised.gif | Bin 342 -> 0 bytes .../emotions/img/smiley-tongue-out.gif | Bin 328 -> 0 bytes .../plugins/emotions/img/smiley-undecided.gif | Bin 337 -> 0 bytes .../plugins/emotions/img/smiley-wink.gif | Bin 351 -> 0 bytes .../plugins/emotions/img/smiley-yell.gif | Bin 336 -> 0 bytes .../tiny_mce/plugins/emotions/js/emotions.js | 22 - .../tiny_mce/plugins/emotions/langs/en_dlg.js | 20 - public/tiny_mce/plugins/example/dialog.htm | 22 - .../tiny_mce/plugins/example/editor_plugin.js | 1 - .../plugins/example/editor_plugin_src.js | 84 - .../tiny_mce/plugins/example/img/example.gif | Bin 87 -> 0 bytes public/tiny_mce/plugins/example/js/dialog.js | 19 - public/tiny_mce/plugins/example/langs/en.js | 3 - .../tiny_mce/plugins/example/langs/en_dlg.js | 3 - .../plugins/fullpage/css/fullpage.css | 184 - .../plugins/fullpage/editor_plugin.js | 1 - .../plugins/fullpage/editor_plugin_src.js | 198 - public/tiny_mce/plugins/fullpage/fullpage.htm | 571 - .../tiny_mce/plugins/fullpage/js/fullpage.js | 497 - .../tiny_mce/plugins/fullpage/langs/en_dlg.js | 85 - .../plugins/fullscreen/editor_plugin.js | 1 - .../plugins/fullscreen/editor_plugin_src.js | 159 - .../plugins/fullscreen/fullscreen.htm | 109 - .../tiny_mce/plugins/iespell/editor_plugin.js | 1 - .../plugins/iespell/editor_plugin_src.js | 54 - .../plugins/inlinepopups/editor_plugin.js | 1 - .../plugins/inlinepopups/editor_plugin_src.js | 696 - .../skins/clearlooks2/img/alert.gif | Bin 818 -> 0 bytes .../skins/clearlooks2/img/button.gif | Bin 280 -> 0 bytes .../skins/clearlooks2/img/buttons.gif | Bin 1195 -> 0 bytes .../skins/clearlooks2/img/confirm.gif | Bin 915 -> 0 bytes .../skins/clearlooks2/img/corners.gif | Bin 911 -> 0 bytes .../skins/clearlooks2/img/horizontal.gif | Bin 769 -> 0 bytes .../skins/clearlooks2/img/vertical.gif | Bin 92 -> 0 bytes .../inlinepopups/skins/clearlooks2/window.css | 90 - .../plugins/inlinepopups/template.htm | 387 - .../plugins/insertdatetime/editor_plugin.js | 1 - .../insertdatetime/editor_plugin_src.js | 83 - .../tiny_mce/plugins/layer/editor_plugin.js | 1 - .../plugins/layer/editor_plugin_src.js | 214 - .../plugins/legacyoutput/editor_plugin.js | 1 - .../plugins/legacyoutput/editor_plugin_src.js | 139 - .../tiny_mce/plugins/lists/editor_plugin.js | 1 - .../plugins/lists/editor_plugin_src.js | 617 - public/tiny_mce/plugins/media/css/media.css | 17 - .../tiny_mce/plugins/media/editor_plugin.js | 1 - .../plugins/media/editor_plugin_src.js | 770 - public/tiny_mce/plugins/media/js/embed.js | 73 - public/tiny_mce/plugins/media/js/media.js | 354 - public/tiny_mce/plugins/media/langs/en_dlg.js | 109 - public/tiny_mce/plugins/media/media.htm | 812 - public/tiny_mce/plugins/media/moxieplayer.swf | Bin 33931 -> 0 bytes .../plugins/nonbreaking/editor_plugin.js | 1 - .../plugins/nonbreaking/editor_plugin_src.js | 53 - .../plugins/noneditable/editor_plugin.js | 1 - .../plugins/noneditable/editor_plugin_src.js | 90 - .../plugins/pagebreak/editor_plugin.js | 1 - .../plugins/pagebreak/editor_plugin_src.js | 74 - .../tiny_mce/plugins/paste/editor_plugin.js | 1 - .../plugins/paste/editor_plugin_src.js | 930 - public/tiny_mce/plugins/paste/js/pastetext.js | 36 - public/tiny_mce/plugins/paste/js/pasteword.js | 51 - public/tiny_mce/plugins/paste/langs/en_dlg.js | 5 - public/tiny_mce/plugins/paste/pastetext.htm | 27 - public/tiny_mce/plugins/paste/pasteword.htm | 21 - .../tiny_mce/plugins/preview/editor_plugin.js | 1 - .../plugins/preview/editor_plugin_src.js | 53 - public/tiny_mce/plugins/preview/example.html | 28 - .../plugins/preview/jscripts/embed.js | 73 - public/tiny_mce/plugins/preview/preview.html | 17 - .../tiny_mce/plugins/print/editor_plugin.js | 1 - .../plugins/print/editor_plugin_src.js | 34 - public/tiny_mce/plugins/save/editor_plugin.js | 1 - .../plugins/save/editor_plugin_src.js | 101 - .../searchreplace/css/searchreplace.css | 6 - .../plugins/searchreplace/editor_plugin.js | 1 - .../searchreplace/editor_plugin_src.js | 61 - .../plugins/searchreplace/js/searchreplace.js | 142 - .../plugins/searchreplace/langs/en_dlg.js | 16 - .../plugins/searchreplace/searchreplace.htm | 100 - public/tiny_mce/plugins/style/css/props.css | 13 - .../tiny_mce/plugins/style/editor_plugin.js | 1 - .../plugins/style/editor_plugin_src.js | 55 - public/tiny_mce/plugins/style/js/props.js | 635 - public/tiny_mce/plugins/style/langs/en_dlg.js | 70 - public/tiny_mce/plugins/style/props.htm | 838 - .../plugins/tabfocus/editor_plugin.js | 1 - .../plugins/tabfocus/editor_plugin_src.js | 114 - public/tiny_mce/plugins/table/cell.htm | 178 - public/tiny_mce/plugins/table/css/cell.css | 17 - public/tiny_mce/plugins/table/css/row.css | 25 - public/tiny_mce/plugins/table/css/table.css | 13 - .../tiny_mce/plugins/table/editor_plugin.js | 1 - .../plugins/table/editor_plugin_src.js | 1198 - public/tiny_mce/plugins/table/js/cell.js | 284 - .../tiny_mce/plugins/table/js/merge_cells.js | 27 - public/tiny_mce/plugins/table/js/row.js | 232 - public/tiny_mce/plugins/table/js/table.js | 450 - public/tiny_mce/plugins/table/langs/en_dlg.js | 74 - public/tiny_mce/plugins/table/merge_cells.htm | 32 - public/tiny_mce/plugins/table/row.htm | 157 - public/tiny_mce/plugins/table/table.htm | 188 - public/tiny_mce/plugins/template/blank.htm | 12 - .../plugins/template/css/template.css | 23 - .../plugins/template/editor_plugin.js | 1 - .../plugins/template/editor_plugin_src.js | 159 - .../tiny_mce/plugins/template/js/template.js | 106 - .../tiny_mce/plugins/template/langs/en_dlg.js | 15 - public/tiny_mce/plugins/template/template.htm | 31 - .../plugins/visualchars/editor_plugin.js | 1 - .../plugins/visualchars/editor_plugin_src.js | 83 - .../plugins/wordcount/editor_plugin.js | 1 - .../plugins/wordcount/editor_plugin_src.js | 114 - public/tiny_mce/plugins/xhtmlxtras/abbr.htm | 142 - .../tiny_mce/plugins/xhtmlxtras/acronym.htm | 142 - .../plugins/xhtmlxtras/attributes.htm | 149 - public/tiny_mce/plugins/xhtmlxtras/cite.htm | 142 - .../plugins/xhtmlxtras/css/attributes.css | 11 - .../tiny_mce/plugins/xhtmlxtras/css/popup.css | 9 - public/tiny_mce/plugins/xhtmlxtras/del.htm | 162 - .../plugins/xhtmlxtras/editor_plugin.js | 1 - .../plugins/xhtmlxtras/editor_plugin_src.js | 132 - public/tiny_mce/plugins/xhtmlxtras/ins.htm | 162 - public/tiny_mce/plugins/xhtmlxtras/js/abbr.js | 28 - .../tiny_mce/plugins/xhtmlxtras/js/acronym.js | 28 - .../plugins/xhtmlxtras/js/attributes.js | 125 - public/tiny_mce/plugins/xhtmlxtras/js/cite.js | 28 - public/tiny_mce/plugins/xhtmlxtras/js/del.js | 53 - .../plugins/xhtmlxtras/js/element_common.js | 229 - public/tiny_mce/plugins/xhtmlxtras/js/ins.js | 53 - .../plugins/xhtmlxtras/langs/en_dlg.js | 32 - public/tiny_mce/themes/advanced/about.htm | 52 - public/tiny_mce/themes/advanced/anchor.htm | 26 - public/tiny_mce/themes/advanced/charmap.htm | 51 - .../tiny_mce/themes/advanced/color_picker.htm | 74 - .../themes/advanced/editor_template.js | 1 - .../themes/advanced/editor_template_src.js | 1360 -- public/tiny_mce/themes/advanced/image.htm | 80 - .../themes/advanced/img/colorpicker.jpg | Bin 3189 -> 0 bytes public/tiny_mce/themes/advanced/img/flash.gif | Bin 241 -> 0 bytes public/tiny_mce/themes/advanced/img/icons.gif | Bin 11794 -> 0 bytes .../tiny_mce/themes/advanced/img/iframe.gif | Bin 600 -> 0 bytes .../themes/advanced/img/pagebreak.gif | Bin 325 -> 0 bytes .../themes/advanced/img/quicktime.gif | Bin 303 -> 0 bytes .../themes/advanced/img/realmedia.gif | Bin 439 -> 0 bytes .../themes/advanced/img/shockwave.gif | Bin 387 -> 0 bytes public/tiny_mce/themes/advanced/img/trans.gif | Bin 43 -> 0 bytes public/tiny_mce/themes/advanced/img/video.gif | Bin 597 -> 0 bytes .../themes/advanced/img/windowsmedia.gif | Bin 415 -> 0 bytes public/tiny_mce/themes/advanced/js/about.js | 73 - public/tiny_mce/themes/advanced/js/anchor.js | 42 - public/tiny_mce/themes/advanced/js/charmap.js | 355 - .../themes/advanced/js/color_picker.js | 329 - public/tiny_mce/themes/advanced/js/image.js | 247 - public/tiny_mce/themes/advanced/js/link.js | 153 - .../themes/advanced/js/source_editor.js | 56 - public/tiny_mce/themes/advanced/langs/en.js | 68 - .../tiny_mce/themes/advanced/langs/en_dlg.js | 54 - public/tiny_mce/themes/advanced/link.htm | 57 - public/tiny_mce/themes/advanced/shortcuts.htm | 47 - .../themes/advanced/skins/cirkuit/content.css | 48 - .../themes/advanced/skins/cirkuit/dialog.css | 117 - .../advanced/skins/cirkuit/img/butt2.png | Bin 135 -> 0 bytes .../advanced/skins/cirkuit/img/button-bg.png | Bin 296 -> 0 bytes .../advanced/skins/cirkuit/img/buttons.png | Bin 3274 -> 0 bytes .../advanced/skins/cirkuit/img/down_arrow.gif | Bin 60 -> 0 bytes .../advanced/skins/cirkuit/img/fade-butt.png | Bin 785 -> 0 bytes .../advanced/skins/cirkuit/img/icons.png | Bin 30143 -> 0 bytes .../advanced/skins/cirkuit/img/items.gif | Bin 70 -> 0 bytes .../advanced/skins/cirkuit/img/menu-arrow.png | Bin 209 -> 0 bytes .../advanced/skins/cirkuit/img/menu-check.png | Bin 214 -> 0 bytes .../advanced/skins/cirkuit/img/progress.gif | Bin 1787 -> 0 bytes .../advanced/skins/cirkuit/img/tabs.gif | Bin 1326 -> 0 bytes .../advanced/skins/cirkuit/img/toolbarbg.png | Bin 143 -> 0 bytes .../themes/advanced/skins/cirkuit/ui.css | 996 - .../themes/advanced/skins/default/content.css | 47 - .../themes/advanced/skins/default/dialog.css | 117 - .../advanced/skins/default/img/buttons.png | Bin 3274 -> 0 bytes .../advanced/skins/default/img/items.gif | Bin 70 -> 0 bytes .../advanced/skins/default/img/menu_arrow.gif | Bin 68 -> 0 bytes .../advanced/skins/default/img/menu_check.gif | Bin 70 -> 0 bytes .../advanced/skins/default/img/progress.gif | Bin 1787 -> 0 bytes .../advanced/skins/default/img/tabs.gif | Bin 1326 -> 0 bytes .../themes/advanced/skins/default/ui.css | 213 - .../advanced/skins/highcontrast/content.css | 23 - .../advanced/skins/highcontrast/dialog.css | 105 - .../themes/advanced/skins/highcontrast/ui.css | 101 - .../themes/advanced/skins/o2k7/content.css | 46 - .../themes/advanced/skins/o2k7/dialog.css | 117 - .../advanced/skins/o2k7/img/button_bg.png | Bin 5859 -> 0 bytes .../skins/o2k7/img/button_bg_black.png | Bin 3736 -> 0 bytes .../skins/o2k7/img/button_bg_silver.png | Bin 5358 -> 0 bytes .../themes/advanced/skins/o2k7/ui.css | 216 - .../themes/advanced/skins/o2k7/ui_black.css | 8 - .../themes/advanced/skins/o2k7/ui_silver.css | 5 - .../themes/advanced/source_editor.htm | 25 - .../tiny_mce/themes/simple/editor_template.js | 1 - .../themes/simple/editor_template_src.js | 84 - public/tiny_mce/themes/simple/img/icons.gif | Bin 1440 -> 0 bytes public/tiny_mce/themes/simple/langs/en.js | 11 - .../themes/simple/skins/default/content.css | 25 - .../themes/simple/skins/default/ui.css | 32 - .../themes/simple/skins/o2k7/content.css | 17 - .../simple/skins/o2k7/img/button_bg.png | Bin 5102 -> 0 bytes .../tiny_mce/themes/simple/skins/o2k7/ui.css | 35 - public/tiny_mce/tiny_mce.js | 1 - public/tiny_mce/tiny_mce_popup.js | 5 - public/tiny_mce/tiny_mce_src.js | 14928 ------------ public/tiny_mce/utils/editable_selects.js | 70 - public/tiny_mce/utils/form_utils.js | 210 - public/tiny_mce/utils/mctabs.js | 162 - public/tiny_mce/utils/validate.js | 252 - test/fixtures/actualities.yml | 19 - test/fixtures/admins.yml | 11 + test/fixtures/events.yml | 17 - test/fixtures/observations.yml | 25 - test/fixtures/pages.yml | 19 + test/fixtures/portfolio_images.yml | 13 + test/fixtures/portfolio_portfolio_images.yml | 9 + test/fixtures/portfolios.yml | 21 + .../functional/public/home_controller_test.rb | 9 - test/unit/{event_test.rb => admin_test.rb} | 2 +- test/unit/helpers/public/home_helper_test.rb | 4 - test/unit/{actuality_test.rb => page_test.rb} | 2 +- test/unit/portfolio_image_test.rb | 7 + test/unit/portfolio_portfolio_image_test.rb | 7 + ...{observation_test.rb => portfolio_test.rb} | 2 +- .../assets/javascripts/.gitkeep | 0 .../assets/stylesheets/.gitkeep | 0 .../edit.html.haml => vendor/plugins/.gitkeep | 0 1122 files changed, 4948 insertions(+), 239428 deletions(-) create mode 100644 README.rdoc delete mode 100644 app/assets/images/admin/backgrounds/background.png delete mode 100644 app/assets/images/admin/backgrounds/background2.png delete mode 100644 app/assets/images/admin/backgrounds/bg-brown.jpg delete mode 100644 app/assets/images/admin/backgrounds/bg-dark.jpg delete mode 100644 app/assets/images/admin/backgrounds/bg-green-dark.jpg delete mode 100644 app/assets/images/admin/backgrounds/bg-white.jpg delete mode 100644 app/assets/images/admin/backgrounds/fond.jpg delete mode 100644 app/assets/images/admin/backgrounds/legno.jpg delete mode 100644 app/assets/images/admin/backgrounds/white_oak.png delete mode 100644 app/assets/images/admin/content_type/type_BlockContent.png delete mode 100644 app/assets/images/admin/content_type/type_BreakContent.png delete mode 100644 app/assets/images/admin/content_type/type_DownloadContent.png delete mode 100644 app/assets/images/admin/content_type/type_DynamicContent.png delete mode 100644 app/assets/images/admin/content_type/type_EventContent.png delete mode 100644 app/assets/images/admin/content_type/type_GalleryContent.png delete mode 100644 app/assets/images/admin/content_type/type_HtmlContent.png delete mode 100644 app/assets/images/admin/content_type/type_ImageContent.png delete mode 100644 app/assets/images/admin/content_type/type_ImgLinkContent.png delete mode 100644 app/assets/images/admin/content_type/type_LinkContent.png delete mode 100644 app/assets/images/admin/content_type/type_MapContent.png delete mode 100644 app/assets/images/admin/content_type/type_TableContent.png delete mode 100644 app/assets/images/admin/content_type/type_TextContent.png delete mode 100644 app/assets/images/admin/content_type/type_TitleContent.png delete mode 100644 app/assets/images/admin/dashboard/icones_admins.png delete mode 100644 app/assets/images/admin/dashboard/icones_data_files.png delete mode 100644 app/assets/images/admin/dashboard/icones_folders.png delete mode 100644 app/assets/images/admin/dashboard/icones_image_files.png delete mode 100644 app/assets/images/admin/dashboard/icones_menu_items.png delete mode 100644 app/assets/images/admin/dashboard/icones_u.png delete mode 100644 app/assets/images/admin/default_image.png delete mode 100755 app/assets/images/admin/pbar-ani.gif delete mode 100644 app/assets/images/admin/rte-sf437e1403c.png delete mode 100644 app/assets/images/admin/spr_toolbar_icons_r1.png create mode 100644 app/assets/images/fond.jpg delete mode 100644 app/assets/images/front/background.png delete mode 100644 app/assets/images/front/fleche.png delete mode 100644 app/assets/images/front/go_top.png delete mode 100644 app/assets/images/front/logo.png delete mode 100644 app/assets/images/front/logo_fade.png delete mode 100755 app/assets/images/front/pagination.png delete mode 100644 app/assets/images/front/slider_shadow.png create mode 100644 app/assets/images/logo.png create mode 100644 app/assets/images/logoa.png create mode 100644 app/assets/images/miniature.png delete mode 100644 app/assets/images/rte-sf5bccc07eb.png delete mode 100644 app/assets/images/rte/rte_blockquote.png delete mode 100644 app/assets/images/rte/rte_bold.png delete mode 100644 app/assets/images/rte/rte_em.png delete mode 100644 app/assets/images/rte/rte_fore_color.png delete mode 100644 app/assets/images/rte/rte_html.png delete mode 100644 app/assets/images/rte/rte_italic.png delete mode 100644 app/assets/images/rte/rte_justify.png delete mode 100644 app/assets/images/rte/rte_justify_center.png delete mode 100644 app/assets/images/rte/rte_justify_left.png delete mode 100644 app/assets/images/rte/rte_justify_right.png delete mode 100644 app/assets/images/rte/rte_link.png delete mode 100644 app/assets/images/rte/rte_ordered_list.png delete mode 100644 app/assets/images/rte/rte_strong.png delete mode 100644 app/assets/images/rte/rte_sub.png delete mode 100644 app/assets/images/rte/rte_sup.png delete mode 100644 app/assets/images/rte/rte_underline.png delete mode 100644 app/assets/images/rte/rte_unordered_list.png delete mode 100644 app/assets/javascripts/admin/articles_actions.coffee delete mode 100644 app/assets/javascripts/admin/auto_tiny_mce.js delete mode 100644 app/assets/javascripts/admin/block.js delete mode 100644 app/assets/javascripts/admin/browser.js delete mode 100644 app/assets/javascripts/admin/cible.js delete mode 100644 app/assets/javascripts/admin/data_files.js delete mode 100644 app/assets/javascripts/admin/forms.js delete mode 100644 app/assets/javascripts/admin/image_files.js delete mode 100644 app/assets/javascripts/admin/jquery-activity-indicator.js delete mode 100755 app/assets/javascripts/admin/jquery-fileupload-ui.js delete mode 100755 app/assets/javascripts/admin/jquery-fileupload.js delete mode 100644 app/assets/javascripts/admin/jquery.tinymce.js delete mode 100644 app/assets/javascripts/admin/manager.js delete mode 100644 app/assets/javascripts/admin/menu_items.js delete mode 100644 app/assets/javascripts/admin/pages_actions.js.coffee delete mode 100644 app/assets/javascripts/admin/pane_hover.js delete mode 100644 app/assets/javascripts/admin/qi_core.js delete mode 100644 app/assets/javascripts/admin/timepicker.coffee delete mode 100644 app/assets/javascripts/admin/uploads.js create mode 100644 app/assets/javascripts/application.js delete mode 100644 app/assets/javascripts/connexion.js delete mode 100644 app/assets/javascripts/public.js.coffee create mode 100755 app/assets/javascripts/shared/ace.js create mode 100755 app/assets/javascripts/shared/ajquery.ui.widget.js delete mode 100755 app/assets/javascripts/shared/jquery-ui.js delete mode 100644 app/assets/javascripts/shared/jquery.cycle.js delete mode 100644 app/assets/javascripts/shared/jquery.easing.1.3.js delete mode 100755 app/assets/javascripts/shared/jquery.fancybox-1.3.4.pack.js create mode 100755 app/assets/javascripts/shared/jquery.fileupload.js delete mode 100755 app/assets/javascripts/shared/jquery.js create mode 100644 app/assets/javascripts/shared/jquery.masonry.min.js delete mode 100644 app/assets/javascripts/shared/jquery.mobile-1.1.1.js delete mode 100755 app/assets/javascripts/shared/jquery.mousewheel-3.0.4.pack.js delete mode 100644 app/assets/javascripts/shared/jquery.strings.js delete mode 100644 app/assets/javascripts/shared/jquery.utils.js delete mode 100644 app/assets/javascripts/shared/jquery.utils.ui.min.js delete mode 100644 app/assets/javascripts/shared/maxlenght.js rename public/ace_editor/mode-markdown-uncompressed-noconflict.js => app/assets/javascripts/shared/mode-markdown.js (51%) mode change 100644 => 100755 delete mode 100644 app/assets/javascripts/shared/modernizr.custom.39712.js delete mode 100755 app/assets/javascripts/shared/slides.min.jquery.js create mode 100755 app/assets/javascripts/shared/theme-textmate.js delete mode 100644 app/assets/javascripts/shared/ui.timepickr.js delete mode 100755 app/assets/javascripts/wysihtml5/parser_rules.js delete mode 100755 app/assets/javascripts/wysihtml5/wysihtml5.js delete mode 100644 app/assets/stylesheets/admin/articles.css.scss delete mode 100755 app/assets/stylesheets/admin/forms.scss delete mode 100644 app/assets/stylesheets/admin/menu_items.css.scss delete mode 100644 app/assets/stylesheets/admin/portlets.css.scss delete mode 100644 app/assets/stylesheets/admin/qi.scss delete mode 100644 app/assets/stylesheets/admin/qi_cms.css.scss delete mode 100644 app/assets/stylesheets/admin/qi_core.css.scss delete mode 100644 app/assets/stylesheets/admin/qi_pane_hover.css.scss delete mode 100644 app/assets/stylesheets/admin/uploads.css.scss delete mode 100644 app/assets/stylesheets/admin/wisihtml5.css.scss delete mode 100644 app/assets/stylesheets/admin/x-qi-datepicker.css.scss create mode 100644 app/assets/stylesheets/application.css.scss delete mode 100644 app/assets/stylesheets/connexion.css.scss rename app/assets/stylesheets/{admin => }/general.css.scss (77%) delete mode 100644 app/assets/stylesheets/public.css.scss delete mode 100644 app/assets/stylesheets/public/articles.css.scss delete mode 100644 app/assets/stylesheets/public/gallery.css.scss delete mode 100644 app/assets/stylesheets/public/portlets.css.scss delete mode 100644 app/assets/stylesheets/public/slider.css.scss delete mode 100644 app/assets/stylesheets/shared/fluid_grid.css delete mode 100644 app/assets/stylesheets/shared/formtastic.css delete mode 100755 app/assets/stylesheets/shared/jquery-ui-1.8.11.custom.css delete mode 100755 app/assets/stylesheets/shared/jquery.fancybox-1.3.4.css delete mode 100644 app/assets/stylesheets/shared/jquery.mobile-1.1.1.css delete mode 100644 app/assets/stylesheets/shared/ui.timepickr.css delete mode 100755 app/assets/stylesheets/shared/wysiwg.css.scss delete mode 100644 app/controllers/admin/albums_controller.rb delete mode 100644 app/controllers/admin/articles_controller.rb create mode 100644 app/controllers/admin/auths_controller.rb delete mode 100644 app/controllers/admin/blocks_controller.rb delete mode 100644 app/controllers/admin/categories_controller.rb delete mode 100644 app/controllers/admin/cibles_controller.rb delete mode 100644 app/controllers/admin/comments_controller.rb delete mode 100644 app/controllers/admin/data_files_controller.rb delete mode 100644 app/controllers/admin/external_links_controller.rb delete mode 100644 app/controllers/admin/file_folders_controller.rb delete mode 100644 app/controllers/admin/image_files_controller.rb delete mode 100644 app/controllers/admin/menu_aliases_controller.rb delete mode 100644 app/controllers/admin/menu_items_controller.rb delete mode 100644 app/controllers/admin/menu_urls_controller.rb delete mode 100644 app/controllers/admin/menus_controller.rb delete mode 100644 app/controllers/admin/passwords_controller.rb create mode 100644 app/controllers/admin/portfolio_images_controller.rb delete mode 100644 app/controllers/admin/sessions_controller.rb delete mode 100644 app/controllers/download_data_files_controller.rb create mode 100644 app/controllers/pages_controller.rb create mode 100644 app/controllers/portfolios_controller.rb delete mode 100644 app/controllers/portlet/block_contents_controller.rb delete mode 100644 app/controllers/portlet/break_contents_controller.rb delete mode 100644 app/controllers/portlet/download_contents_controller.rb delete mode 100644 app/controllers/portlet/dynamic_contents_controller.rb delete mode 100644 app/controllers/portlet/event_contents_controller.rb delete mode 100644 app/controllers/portlet/gallery_contents_controller.rb delete mode 100644 app/controllers/portlet/gallery_images_controller.rb delete mode 100644 app/controllers/portlet/html_contents_controller.rb delete mode 100644 app/controllers/portlet/image_contents_controller.rb delete mode 100644 app/controllers/portlet/img_link_contents_controller.rb delete mode 100644 app/controllers/portlet/link_contents_controller.rb delete mode 100644 app/controllers/portlet/map_contents_controller.rb delete mode 100644 app/controllers/portlet/portlets_controller.rb delete mode 100644 app/controllers/portlet/table_cols_controller.rb delete mode 100644 app/controllers/portlet/table_contents_controller.rb delete mode 100644 app/controllers/portlet/table_rows_controller.rb delete mode 100644 app/controllers/portlet/text_contents_controller.rb delete mode 100644 app/controllers/portlet/title_contents_controller.rb delete mode 100644 app/controllers/public/articles_controller.rb delete mode 100644 app/controllers/public/comments_controller.rb delete mode 100644 app/controllers/public/home_controller.rb delete mode 100644 app/controllers/public/menu_items_controller.rb delete mode 100644 app/helpers/admin/auto_load_div_helper.rb delete mode 100644 app/helpers/admin/javascripts_helper.rb delete mode 100644 app/helpers/admin/magick_order_helper.rb delete mode 100644 app/helpers/admin/pagination_helper.rb rename app/helpers/{admin => }/icon_helper.rb (67%) create mode 100644 app/helpers/markdown_helper.rb delete mode 100644 app/helpers/public/menu_items_helper.rb rename app/{views/admin/blocks/_edit.html.haml => mailers/.gitkeep} (100%) delete mode 100644 app/models/album.rb delete mode 100644 app/models/allowed_block_content.rb delete mode 100644 app/models/article.rb delete mode 100644 app/models/block.rb delete mode 100644 app/models/block_content.rb delete mode 100644 app/models/break_content.rb delete mode 100644 app/models/category.rb delete mode 100644 app/models/cel_table.rb delete mode 100644 app/models/cible_alias.rb delete mode 100644 app/models/cible_type.rb delete mode 100644 app/models/cible_url.rb delete mode 100644 app/models/comment.rb delete mode 100644 app/models/content_type.rb delete mode 100644 app/models/data_file.rb delete mode 100644 app/models/download_content.rb delete mode 100644 app/models/dynamic_content.rb delete mode 100644 app/models/event.rb delete mode 100644 app/models/event_content.rb delete mode 100644 app/models/external_link.rb delete mode 100644 app/models/file_folder.rb delete mode 100644 app/models/gallery_content.rb delete mode 100644 app/models/gallery_image.rb delete mode 100644 app/models/html_content.rb delete mode 100644 app/models/image_content.rb delete mode 100644 app/models/image_file.rb delete mode 100644 app/models/img_link_content.rb delete mode 100644 app/models/link_content.rb delete mode 100644 app/models/map_content.rb delete mode 100644 app/models/menu.rb delete mode 100644 app/models/menu_alias.rb delete mode 100644 app/models/menu_folder.rb delete mode 100644 app/models/menu_item.rb delete mode 100644 app/models/menu_item_content_type.rb delete mode 100644 app/models/menu_url.rb create mode 100644 app/models/portfolio.rb create mode 100644 app/models/portfolio_image.rb create mode 100644 app/models/portfolio_portfolio_image.rb delete mode 100644 app/models/portlet.rb delete mode 100644 app/models/table_content.rb delete mode 100644 app/models/table_row.rb delete mode 100644 app/models/text_content.rb delete mode 100644 app/models/title_content.rb create mode 100644 app/uploaders/avatar_uploader.rb create mode 100644 app/views/admin/admins/_admin.haml delete mode 100644 app/views/admin/admins/_admin.html.haml create mode 100644 app/views/admin/admins/_form.haml delete mode 100644 app/views/admin/admins/_form.html.haml delete mode 100644 app/views/admin/admins/_index_block.haml delete mode 100644 app/views/admin/admins/create.js.erb create mode 100644 app/views/admin/admins/edit.haml delete mode 100644 app/views/admin/admins/edit.html.haml delete mode 100644 app/views/admin/admins/edit.js.erb create mode 100644 app/views/admin/admins/index.haml delete mode 100644 app/views/admin/admins/index.html.haml delete mode 100644 app/views/admin/admins/index.js.erb create mode 100644 app/views/admin/admins/new.haml delete mode 100644 app/views/admin/admins/new.js.erb create mode 100644 app/views/admin/admins/show.haml delete mode 100644 app/views/admin/admins/show.html.haml delete mode 100644 app/views/admin/admins/update.js.erb delete mode 100644 app/views/admin/albums/_album.html.haml delete mode 100644 app/views/admin/albums/_albums.html.haml delete mode 100644 app/views/admin/albums/create.js.erb delete mode 100644 app/views/admin/albums/destroy.js.erb delete mode 100644 app/views/admin/albums/edit.js.erb delete mode 100644 app/views/admin/albums/index.js.erb delete mode 100644 app/views/admin/albums/new.js.erb delete mode 100644 app/views/admin/albums/update.js.erb delete mode 100644 app/views/admin/articles/_article.html.haml delete mode 100644 app/views/admin/articles/_form.html.haml delete mode 100644 app/views/admin/articles/_index_block.html.haml delete mode 100644 app/views/admin/articles/_show.html.haml delete mode 100644 app/views/admin/articles/create.js.erb delete mode 100644 app/views/admin/articles/destroy.js.erb delete mode 100644 app/views/admin/articles/edit.html.haml delete mode 100644 app/views/admin/articles/edit.js.erb delete mode 100644 app/views/admin/articles/index.html.haml delete mode 100644 app/views/admin/articles/index.js.erb delete mode 100644 app/views/admin/articles/new.js.erb delete mode 100644 app/views/admin/articles/update.js.erb create mode 100644 app/views/admin/auths/new.haml delete mode 100644 app/views/admin/blocks/_block.html.haml delete mode 100644 app/views/admin/blocks/_block_allowed.html.haml delete mode 100644 app/views/admin/blocks/_form.html.haml delete mode 100644 app/views/admin/blocks/edit.html.haml delete mode 100644 app/views/admin/blocks/edit.js.erb delete mode 100644 app/views/admin/blocks/old.block delete mode 100644 app/views/admin/blocks/old.show.html.haml delete mode 100644 app/views/admin/categories/_category.html.haml delete mode 100644 app/views/admin/categories/_form.html.haml delete mode 100644 app/views/admin/categories/cible.html.haml delete mode 100644 app/views/admin/categories/create.js.erb delete mode 100644 app/views/admin/categories/destroy.js.erb delete mode 100644 app/views/admin/categories/edit.js.erb delete mode 100644 app/views/admin/categories/index.html.haml delete mode 100644 app/views/admin/categories/new.js.erb delete mode 100644 app/views/admin/categories/update.js.erb delete mode 100644 app/views/admin/cibles/_cible_place.html.haml delete mode 100644 app/views/admin/cibles/index.html.haml delete mode 100644 app/views/admin/cibles/index.js.erb delete mode 100644 app/views/admin/cibles/new.html.haml delete mode 100644 app/views/admin/comments/_comment.html.haml delete mode 100644 app/views/admin/comments/_form.html.haml delete mode 100644 app/views/admin/comments/destroy.js.erb delete mode 100644 app/views/admin/comments/edit.js.erb delete mode 100644 app/views/admin/comments/index.html.haml delete mode 100644 app/views/admin/comments/update.js.erb delete mode 100644 app/views/admin/data_files/_data_file.html.haml delete mode 100644 app/views/admin/data_files/_data_files_container.html.haml delete mode 100644 app/views/admin/data_files/_form.html.haml delete mode 100644 app/views/admin/data_files/_index_block.html.haml delete mode 100644 app/views/admin/data_files/_show.html.haml delete mode 100644 app/views/admin/data_files/create.js.erb delete mode 100644 app/views/admin/data_files/destroy.js.erb delete mode 100644 app/views/admin/data_files/index.html.haml delete mode 100644 app/views/admin/data_files/index.js.erb delete mode 100644 app/views/admin/data_files/show.js.erb delete mode 100644 app/views/admin/data_files/update.js.erb delete mode 100644 app/views/admin/external_links/_external_link.html.haml delete mode 100644 app/views/admin/external_links/_form.html.haml delete mode 100644 app/views/admin/external_links/cible.html.haml delete mode 100644 app/views/admin/external_links/create.js.erb delete mode 100644 app/views/admin/external_links/destroy.js.erb delete mode 100644 app/views/admin/external_links/edit.html.haml delete mode 100644 app/views/admin/external_links/edit.js.erb delete mode 100644 app/views/admin/external_links/index.js.erb delete mode 100644 app/views/admin/external_links/new.js.erb delete mode 100644 app/views/admin/external_links/show.html.haml delete mode 100644 app/views/admin/external_links/update.js.erb delete mode 100644 app/views/admin/file_folders/_file_folder.html.haml delete mode 100644 app/views/admin/file_folders/_file_folders.html.haml delete mode 100644 app/views/admin/file_folders/create.js.erb delete mode 100644 app/views/admin/file_folders/destroy.js.erb delete mode 100644 app/views/admin/file_folders/edit.js.erb delete mode 100644 app/views/admin/file_folders/index.js.erb delete mode 100644 app/views/admin/file_folders/new.js.erb delete mode 100644 app/views/admin/file_folders/update.js.erb delete mode 100644 app/views/admin/image_files/_form.html.haml delete mode 100644 app/views/admin/image_files/_image_file.html.haml delete mode 100644 app/views/admin/image_files/_image_files_container.html.haml delete mode 100644 app/views/admin/image_files/_index_block.html.haml delete mode 100644 app/views/admin/image_files/_show.html.haml delete mode 100644 app/views/admin/image_files/create.js.erb delete mode 100644 app/views/admin/image_files/destroy.js.erb delete mode 100644 app/views/admin/image_files/index.html.haml delete mode 100644 app/views/admin/image_files/index.js.erb delete mode 100644 app/views/admin/image_files/rotate.js.erb delete mode 100644 app/views/admin/image_files/show.js.erb delete mode 100644 app/views/admin/image_files/update.js.erb delete mode 100644 app/views/admin/menu_aliases/_form.html.haml delete mode 100644 app/views/admin/menu_aliases/_menu_alias.html.haml delete mode 100644 app/views/admin/menu_items/_cible_line.html.haml delete mode 100644 app/views/admin/menu_items/_edit_form.html.haml delete mode 100644 app/views/admin/menu_items/_form.html.haml delete mode 100644 app/views/admin/menu_items/_form_line.html.haml delete mode 100644 app/views/admin/menu_items/_index_block.html.haml delete mode 100644 app/views/admin/menu_items/_menu_item.html.haml delete mode 100644 app/views/admin/menu_items/_menu_item_content_form.html.haml delete mode 100644 app/views/admin/menu_items/_new_form.html.haml delete mode 100644 app/views/admin/menu_items/_show.html.haml delete mode 100644 app/views/admin/menu_items/cible.html.haml delete mode 100644 app/views/admin/menu_items/create.js.erb delete mode 100644 app/views/admin/menu_items/edit.html.haml delete mode 100644 app/views/admin/menu_items/edit.js.erb delete mode 100644 app/views/admin/menu_items/index.html.haml delete mode 100644 app/views/admin/menu_items/index.js.erb delete mode 100644 app/views/admin/menu_items/new.html.haml delete mode 100644 app/views/admin/menu_items/new.js.erb delete mode 100644 app/views/admin/menu_items/show.js.erb delete mode 100644 app/views/admin/menu_items/update.js.erb delete mode 100644 app/views/admin/menu_items/update_reorder_failled.js.erb delete mode 100644 app/views/admin/menu_urls/_form.html.haml delete mode 100644 app/views/admin/menu_urls/_menu_url.html.haml delete mode 100644 app/views/admin/menus/_form.html.haml delete mode 100644 app/views/admin/menus/_index_block.html.haml delete mode 100644 app/views/admin/menus/_menu.html.haml delete mode 100644 app/views/admin/menus/edit.html.haml delete mode 100644 app/views/admin/menus/index.html.haml delete mode 100644 app/views/admin/menus/index.js.erb delete mode 100644 app/views/admin/menus/new.html.haml delete mode 100644 app/views/admin/menus/show.html.haml create mode 100644 app/views/admin/pages/_form.haml delete mode 100644 app/views/admin/pages/_form.html.haml create mode 100644 app/views/admin/pages/_page.haml delete mode 100644 app/views/admin/pages/_page.html.haml create mode 100644 app/views/admin/pages/edit.haml create mode 100644 app/views/admin/pages/index.haml create mode 100644 app/views/admin/pages/new.haml create mode 100644 app/views/admin/pages/show.haml delete mode 100644 app/views/admin/pages/update.html.haml delete mode 100644 app/views/admin/passwords/edit.html.haml delete mode 100644 app/views/admin/passwords/new.html.haml create mode 100644 app/views/admin/portfolio_images/_portfolio_image.haml create mode 100644 app/views/admin/portfolio_images/create.js.erb create mode 100644 app/views/admin/portfolio_images/destroy.js.erb create mode 100644 app/views/admin/portfolio_images/edit.haml create mode 100644 app/views/admin/portfolio_images/edit.js.erb create mode 100644 app/views/admin/portfolio_images/index.haml create mode 100644 app/views/admin/portfolio_images/new.haml create mode 100644 app/views/admin/portfolio_images/rotate.js.erb create mode 100644 app/views/admin/portfolio_images/show.haml delete mode 100644 app/views/admin/sessions/new.html.haml delete mode 100644 app/views/admins/mailer/reset_password_instructions.html.haml delete mode 100644 app/views/download_data_files/index.html.haml create mode 100644 app/views/layouts/application.html.haml delete mode 100644 app/views/layouts/connexion.html.haml delete mode 100644 app/views/layouts/public.html.haml create mode 100644 app/views/pages/show.html.haml create mode 100644 app/views/portfolio_images/_portfolio_image.haml create mode 100644 app/views/portfolios/_form.haml create mode 100644 app/views/portfolios/_image_form.haml create mode 100644 app/views/portfolios/_pagination.html.haml create mode 100644 app/views/portfolios/_portfolio.haml create mode 100644 app/views/portfolios/create.js.erb create mode 100644 app/views/portfolios/destroy.js.erb create mode 100644 app/views/portfolios/edit.js.erb create mode 100644 app/views/portfolios/index.html.haml create mode 100644 app/views/portfolios/new.js.erb create mode 100644 app/views/portfolios/show.html.haml create mode 100644 app/views/portfolios/show.js.erb create mode 100644 app/views/portfolios/update.js.erb delete mode 100644 app/views/portlet/block_contents/_block_content.html.haml delete mode 100644 app/views/portlet/block_contents/_form.html.haml delete mode 100644 app/views/portlet/break_contents/_break_content.html.haml delete mode 100644 app/views/portlet/break_contents/_form.html.haml delete mode 100644 app/views/portlet/download_contents/_download_content.html.haml delete mode 100644 app/views/portlet/download_contents/_form.html.haml delete mode 100644 app/views/portlet/dynamic_contents/_dynamic_content.html.haml delete mode 100644 app/views/portlet/dynamic_contents/_form.html.haml delete mode 100644 app/views/portlet/event_contents/_event_content.html.haml delete mode 100644 app/views/portlet/event_contents/_form.html.haml delete mode 100644 app/views/portlet/gallery_contents/_form.html.haml delete mode 100644 app/views/portlet/gallery_contents/_gallery_content.html.haml delete mode 100644 app/views/portlet/gallery_images/_form.html.haml delete mode 100644 app/views/portlet/gallery_images/_gallery_image.html.haml delete mode 100644 app/views/portlet/gallery_images/create.js.erb delete mode 100644 app/views/portlet/gallery_images/destroy.js.erb delete mode 100644 app/views/portlet/gallery_images/edit.js.erb delete mode 100644 app/views/portlet/gallery_images/reorder.js.erb delete mode 100644 app/views/portlet/gallery_images/update.js.erb delete mode 100644 app/views/portlet/html_contents/_form.html.haml delete mode 100644 app/views/portlet/html_contents/_html_content.html.haml delete mode 100644 app/views/portlet/image_contents/_form.html.haml delete mode 100644 app/views/portlet/image_contents/_image_content.html.haml delete mode 100644 app/views/portlet/img_link_contents/_form.html.haml delete mode 100644 app/views/portlet/img_link_contents/_img_link_content.html.haml delete mode 100644 app/views/portlet/link_contents/_form.html.haml delete mode 100644 app/views/portlet/link_contents/_link_content.html.haml delete mode 100644 app/views/portlet/map_contents/_form.html.haml delete mode 100644 app/views/portlet/map_contents/_map_content.html.haml delete mode 100644 app/views/portlet/portlets/_portlet.html.haml delete mode 100644 app/views/portlet/portlets/new.html.haml delete mode 100644 app/views/portlet/portlets/new.js.erb delete mode 100644 app/views/portlet/portlets/update.js.erb delete mode 100644 app/views/portlet/shared/_new.html.haml delete mode 100644 app/views/portlet/shared/create.js.erb delete mode 100644 app/views/portlet/shared/destroy.js.erb delete mode 100644 app/views/portlet/shared/edit.js.erb delete mode 100644 app/views/portlet/shared/new.js.erb delete mode 100644 app/views/portlet/shared/update.js.erb delete mode 100644 app/views/portlet/table_cols/create.js.erb delete mode 100644 app/views/portlet/table_cols/destroy.js.erb delete mode 100644 app/views/portlet/table_cols/update.js.erb delete mode 100644 app/views/portlet/table_contents/_form.html.haml delete mode 100644 app/views/portlet/table_contents/_table_content.html.haml delete mode 100644 app/views/portlet/table_contents/_table_content_edit_pane.html.haml delete mode 100644 app/views/portlet/table_contents/destroy_row.js.erb delete mode 100644 app/views/portlet/table_rows/create.js.erb delete mode 100644 app/views/portlet/table_rows/destroy.js.erb delete mode 100644 app/views/portlet/text_contents/_form.html.haml delete mode 100644 app/views/portlet/text_contents/_text_content.html.haml delete mode 100644 app/views/portlet/title_contents/_form.html.haml delete mode 100644 app/views/portlet/title_contents/_title_content.html.haml delete mode 100644 app/views/portlets/render_public/_blockcontent.html.haml delete mode 100644 app/views/portlets/render_public/_breakcontent.html.haml delete mode 100644 app/views/portlets/render_public/_downloadcontent.html.haml delete mode 100644 app/views/portlets/render_public/_dynamiccontent.html.haml delete mode 100644 app/views/portlets/render_public/_eventcontent.html.haml delete mode 100644 app/views/portlets/render_public/_gallerycontent.html.haml delete mode 100644 app/views/portlets/render_public/_htmlcontent.html.haml delete mode 100644 app/views/portlets/render_public/_imagecontent.html.haml delete mode 100644 app/views/portlets/render_public/_imglinkcontent.html.haml delete mode 100644 app/views/portlets/render_public/_linkcontent.html.haml delete mode 100644 app/views/portlets/render_public/_mapcontent.html.haml delete mode 100644 app/views/portlets/render_public/_tablecontent.html.haml delete mode 100644 app/views/portlets/render_public/_textcontent.html.haml delete mode 100644 app/views/portlets/render_public/_titlecontent.html.haml delete mode 100644 app/views/public/articles/_article.html.haml delete mode 100644 app/views/public/articles/_article_intro.html.haml delete mode 100644 app/views/public/articles/_sidebar_archives.html.haml delete mode 100644 app/views/public/articles/_sidebar_categories.html.haml delete mode 100644 app/views/public/articles/_sidebar_recents.html.haml delete mode 100644 app/views/public/articles/_sidebar_tags.html.haml delete mode 100644 app/views/public/articles/feed.rss.builder delete mode 100644 app/views/public/articles/index.html.haml delete mode 100644 app/views/public/articles/show.html.haml delete mode 100644 app/views/public/blocks/_block.html.haml delete mode 100644 app/views/public/comments/_comment.html.haml delete mode 100644 app/views/public/comments/_form.html.haml delete mode 100644 app/views/public/comments/create.js.erb delete mode 100644 app/views/public/home/home.html.haml delete mode 100644 app/views/public/menu_items/show.html.haml delete mode 100644 app/views/public/shared/_first_menu.html.haml rename app/views/{public => }/shared/_ga.html.erb (88%) delete mode 100644 config/initializers/devise.rb delete mode 100644 config/initializers/formtastic.rb delete mode 100644 config/locales/devise.fr.yml delete mode 100644 db/migrate/0001_create_cible_types.rb delete mode 100644 db/migrate/0003_create_menu.rb delete mode 100644 db/migrate/0004_menu_items.rb delete mode 100644 db/migrate/0005_create_menu_item_content_types.rb delete mode 100644 db/migrate/0010_create_pages.rb delete mode 100644 db/migrate/0011_create_allowed_block_contents.rb delete mode 100644 db/migrate/0065_create_blocks.rb delete mode 100644 db/migrate/0070_create_portlets.rb delete mode 100644 db/migrate/0071_create_content_types.rb delete mode 100644 db/migrate/0075_create_title_contents.rb delete mode 100644 db/migrate/0076_create_text_contents.rb delete mode 100644 db/migrate/0077_create_image_contents.rb delete mode 100644 db/migrate/0078_create_link_contents.rb delete mode 100644 db/migrate/0079_create_break_contents.rb delete mode 100644 db/migrate/0080_create_html_contents.rb delete mode 100644 db/migrate/0081_create_download_contents.rb delete mode 100644 db/migrate/0082_create_gallery_contents.rb delete mode 100644 db/migrate/0101_create_gallery_images.rb delete mode 100644 db/migrate/0102_create_dynamic_contents.rb delete mode 100644 db/migrate/20110215144022_create_table_contents.rb delete mode 100644 db/migrate/20110215144326_create_table_rows.rb delete mode 100644 db/migrate/20110215144501_create_cel_tables.rb delete mode 100644 db/migrate/20110412080316_create_image_files.rb delete mode 100644 db/migrate/20110414184246_create_albums.rb delete mode 100644 db/migrate/20110418153215_create_block_contents.rb delete mode 100644 db/migrate/20110420132008_create_menu_aliases.rb delete mode 100644 db/migrate/20110420132127_create_menu_urls.rb delete mode 100644 db/migrate/20110421125532_create_file_folders.rb delete mode 100644 db/migrate/20110421125631_create_data_files.rb delete mode 100644 db/migrate/20110422144907_create_cible_aliases.rb delete mode 100644 db/migrate/20110422144942_create_cible_urls.rb delete mode 100644 db/migrate/20110427164514_create_map_contents.rb delete mode 100644 db/migrate/20110708093908_create_external_links.rb delete mode 100644 db/migrate/20110710114840_create_articles.rb delete mode 100644 db/migrate/20110929085855_create_qa_auth_admins.rb delete mode 100644 db/migrate/20111006155955_create_comments.rb delete mode 100644 db/migrate/20111128164327_create_categories.rb delete mode 100644 db/migrate/20111209094403_create_event_contents.rb delete mode 100644 db/migrate/20120509084011_add_author_to_articles.rb delete mode 100644 db/migrate/20120516110751_add_photograph_to_image_files.rb delete mode 100644 db/migrate/20120611165921_add_content_type_to_html_contents.rb create mode 100644 db/migrate/20130205214359_create_admins.rb create mode 100644 db/migrate/20130205223005_create_pages.rb create mode 100644 db/migrate/20130205231135_create_portfolios.rb create mode 100644 db/migrate/20130205231250_create_portfolio_images.rb create mode 100644 db/migrate/20130205231418_create_portfolio_portfolio_images.rb delete mode 100644 public/ace_editor/ace-compat-noconflict.js delete mode 100644 public/ace_editor/ace-compat-uncompressed-noconflict.js delete mode 100644 public/ace_editor/ace-compat-uncompressed.js delete mode 100644 public/ace_editor/ace-compat.js delete mode 100644 public/ace_editor/ace-noconflict.js delete mode 100644 public/ace_editor/ace-uncompressed-noconflict.js delete mode 100644 public/ace_editor/ace-uncompressed.js delete mode 100644 public/ace_editor/ace.js delete mode 100644 public/ace_editor/keybinding-emacs-noconflict.js delete mode 100644 public/ace_editor/keybinding-emacs-uncompressed-noconflict.js delete mode 100644 public/ace_editor/keybinding-emacs-uncompressed.js delete mode 100644 public/ace_editor/keybinding-emacs.js delete mode 100644 public/ace_editor/keybinding-vim-noconflict.js delete mode 100644 public/ace_editor/keybinding-vim-uncompressed-noconflict.js delete mode 100644 public/ace_editor/keybinding-vim-uncompressed.js delete mode 100644 public/ace_editor/keybinding-vim.js delete mode 100644 public/ace_editor/mode-c_cpp-noconflict.js delete mode 100644 public/ace_editor/mode-c_cpp-uncompressed-noconflict.js delete mode 100644 public/ace_editor/mode-c_cpp-uncompressed.js delete mode 100644 public/ace_editor/mode-c_cpp.js delete mode 100644 public/ace_editor/mode-clojure-noconflict.js delete mode 100644 public/ace_editor/mode-clojure-uncompressed-noconflict.js delete mode 100644 public/ace_editor/mode-clojure-uncompressed.js delete mode 100644 public/ace_editor/mode-clojure.js delete mode 100644 public/ace_editor/mode-coffee-noconflict.js delete mode 100644 public/ace_editor/mode-coffee-uncompressed-noconflict.js delete mode 100644 public/ace_editor/mode-coffee-uncompressed.js delete mode 100644 public/ace_editor/mode-coffee.js delete mode 100644 public/ace_editor/mode-coldfusion-noconflict.js delete mode 100644 public/ace_editor/mode-coldfusion-uncompressed-noconflict.js delete mode 100644 public/ace_editor/mode-coldfusion-uncompressed.js delete mode 100644 public/ace_editor/mode-coldfusion.js delete mode 100644 public/ace_editor/mode-csharp-noconflict.js delete mode 100644 public/ace_editor/mode-csharp-uncompressed-noconflict.js delete mode 100644 public/ace_editor/mode-csharp-uncompressed.js delete mode 100644 public/ace_editor/mode-csharp.js delete mode 100644 public/ace_editor/mode-css-noconflict.js delete mode 100644 public/ace_editor/mode-css-uncompressed-noconflict.js delete mode 100644 public/ace_editor/mode-css-uncompressed.js delete mode 100644 public/ace_editor/mode-css.js delete mode 100644 public/ace_editor/mode-golang-noconflict.js delete mode 100644 public/ace_editor/mode-golang-uncompressed-noconflict.js delete mode 100644 public/ace_editor/mode-golang-uncompressed.js delete mode 100644 public/ace_editor/mode-golang.js delete mode 100644 public/ace_editor/mode-groovy-noconflict.js delete mode 100644 public/ace_editor/mode-groovy-uncompressed-noconflict.js delete mode 100644 public/ace_editor/mode-groovy-uncompressed.js delete mode 100644 public/ace_editor/mode-groovy.js delete mode 100644 public/ace_editor/mode-haxe-noconflict.js delete mode 100644 public/ace_editor/mode-haxe-uncompressed-noconflict.js delete mode 100644 public/ace_editor/mode-haxe-uncompressed.js delete mode 100644 public/ace_editor/mode-haxe.js delete mode 100644 public/ace_editor/mode-html-noconflict.js delete mode 100644 public/ace_editor/mode-html-uncompressed-noconflict.js delete mode 100644 public/ace_editor/mode-html-uncompressed.js delete mode 100644 public/ace_editor/mode-html.js delete mode 100644 public/ace_editor/mode-java-noconflict.js delete mode 100644 public/ace_editor/mode-java-uncompressed-noconflict.js delete mode 100644 public/ace_editor/mode-java-uncompressed.js delete mode 100644 public/ace_editor/mode-java.js delete mode 100644 public/ace_editor/mode-javascript-noconflict.js delete mode 100644 public/ace_editor/mode-javascript-uncompressed-noconflict.js delete mode 100644 public/ace_editor/mode-javascript-uncompressed.js delete mode 100644 public/ace_editor/mode-javascript.js delete mode 100644 public/ace_editor/mode-json-noconflict.js delete mode 100644 public/ace_editor/mode-json-uncompressed-noconflict.js delete mode 100644 public/ace_editor/mode-json-uncompressed.js delete mode 100644 public/ace_editor/mode-json.js delete mode 100644 public/ace_editor/mode-latex-noconflict.js delete mode 100644 public/ace_editor/mode-latex-uncompressed-noconflict.js delete mode 100644 public/ace_editor/mode-latex-uncompressed.js delete mode 100644 public/ace_editor/mode-latex.js delete mode 100644 public/ace_editor/mode-less-noconflict.js delete mode 100644 public/ace_editor/mode-less-uncompressed-noconflict.js delete mode 100644 public/ace_editor/mode-less-uncompressed.js delete mode 100644 public/ace_editor/mode-less.js delete mode 100644 public/ace_editor/mode-liquid-noconflict.js delete mode 100644 public/ace_editor/mode-liquid-uncompressed-noconflict.js delete mode 100644 public/ace_editor/mode-liquid-uncompressed.js delete mode 100644 public/ace_editor/mode-liquid.js delete mode 100644 public/ace_editor/mode-lua-noconflict.js delete mode 100644 public/ace_editor/mode-lua-uncompressed-noconflict.js delete mode 100644 public/ace_editor/mode-lua-uncompressed.js delete mode 100644 public/ace_editor/mode-lua.js delete mode 100644 public/ace_editor/mode-markdown-noconflict.js delete mode 100644 public/ace_editor/mode-markdown-uncompressed.js delete mode 100644 public/ace_editor/mode-markdown.js delete mode 100644 public/ace_editor/mode-ocaml-noconflict.js delete mode 100644 public/ace_editor/mode-ocaml-uncompressed-noconflict.js delete mode 100644 public/ace_editor/mode-ocaml-uncompressed.js delete mode 100644 public/ace_editor/mode-ocaml.js delete mode 100644 public/ace_editor/mode-perl-noconflict.js delete mode 100644 public/ace_editor/mode-perl-uncompressed-noconflict.js delete mode 100644 public/ace_editor/mode-perl-uncompressed.js delete mode 100644 public/ace_editor/mode-perl.js delete mode 100644 public/ace_editor/mode-pgsql-noconflict.js delete mode 100644 public/ace_editor/mode-pgsql-uncompressed-noconflict.js delete mode 100644 public/ace_editor/mode-pgsql-uncompressed.js delete mode 100644 public/ace_editor/mode-pgsql.js delete mode 100644 public/ace_editor/mode-php-noconflict.js delete mode 100644 public/ace_editor/mode-php-uncompressed-noconflict.js delete mode 100644 public/ace_editor/mode-php-uncompressed.js delete mode 100644 public/ace_editor/mode-php.js delete mode 100644 public/ace_editor/mode-powershell-noconflict.js delete mode 100644 public/ace_editor/mode-powershell-uncompressed-noconflict.js delete mode 100644 public/ace_editor/mode-powershell-uncompressed.js delete mode 100644 public/ace_editor/mode-powershell.js delete mode 100644 public/ace_editor/mode-python-noconflict.js delete mode 100644 public/ace_editor/mode-python-uncompressed-noconflict.js delete mode 100644 public/ace_editor/mode-python-uncompressed.js delete mode 100644 public/ace_editor/mode-python.js delete mode 100644 public/ace_editor/mode-ruby-noconflict.js delete mode 100644 public/ace_editor/mode-ruby-uncompressed-noconflict.js delete mode 100644 public/ace_editor/mode-ruby-uncompressed.js delete mode 100644 public/ace_editor/mode-ruby.js delete mode 100644 public/ace_editor/mode-scad-noconflict.js delete mode 100644 public/ace_editor/mode-scad-uncompressed-noconflict.js delete mode 100644 public/ace_editor/mode-scad-uncompressed.js delete mode 100644 public/ace_editor/mode-scad.js delete mode 100644 public/ace_editor/mode-scala-noconflict.js delete mode 100644 public/ace_editor/mode-scala-uncompressed-noconflict.js delete mode 100644 public/ace_editor/mode-scala-uncompressed.js delete mode 100644 public/ace_editor/mode-scala.js delete mode 100644 public/ace_editor/mode-scss-noconflict.js delete mode 100644 public/ace_editor/mode-scss-uncompressed-noconflict.js delete mode 100644 public/ace_editor/mode-scss-uncompressed.js delete mode 100644 public/ace_editor/mode-scss.js delete mode 100644 public/ace_editor/mode-sh-noconflict.js delete mode 100644 public/ace_editor/mode-sh-uncompressed-noconflict.js delete mode 100644 public/ace_editor/mode-sh-uncompressed.js delete mode 100644 public/ace_editor/mode-sh.js delete mode 100644 public/ace_editor/mode-sql-noconflict.js delete mode 100644 public/ace_editor/mode-sql-uncompressed-noconflict.js delete mode 100644 public/ace_editor/mode-sql-uncompressed.js delete mode 100644 public/ace_editor/mode-sql.js delete mode 100644 public/ace_editor/mode-svg-noconflict.js delete mode 100644 public/ace_editor/mode-svg-uncompressed-noconflict.js delete mode 100644 public/ace_editor/mode-svg-uncompressed.js delete mode 100644 public/ace_editor/mode-svg.js delete mode 100644 public/ace_editor/mode-text-noconflict.js delete mode 100644 public/ace_editor/mode-text-uncompressed-noconflict.js delete mode 100644 public/ace_editor/mode-text-uncompressed.js delete mode 100644 public/ace_editor/mode-text.js delete mode 100644 public/ace_editor/mode-textile-noconflict.js delete mode 100644 public/ace_editor/mode-textile-uncompressed-noconflict.js delete mode 100644 public/ace_editor/mode-textile-uncompressed.js delete mode 100644 public/ace_editor/mode-textile.js delete mode 100644 public/ace_editor/mode-xml-noconflict.js delete mode 100644 public/ace_editor/mode-xml-uncompressed-noconflict.js delete mode 100644 public/ace_editor/mode-xml-uncompressed.js delete mode 100644 public/ace_editor/mode-xml.js delete mode 100644 public/ace_editor/mode-xquery-noconflict.js delete mode 100644 public/ace_editor/mode-xquery-uncompressed-noconflict.js delete mode 100644 public/ace_editor/mode-xquery-uncompressed.js delete mode 100644 public/ace_editor/mode-xquery.js delete mode 100644 public/ace_editor/theme-chrome-noconflict.js delete mode 100644 public/ace_editor/theme-chrome-uncompressed-noconflict.js delete mode 100644 public/ace_editor/theme-chrome-uncompressed.js delete mode 100644 public/ace_editor/theme-chrome.js delete mode 100644 public/ace_editor/theme-clouds-noconflict.js delete mode 100644 public/ace_editor/theme-clouds-uncompressed-noconflict.js delete mode 100644 public/ace_editor/theme-clouds-uncompressed.js delete mode 100644 public/ace_editor/theme-clouds.js delete mode 100644 public/ace_editor/theme-clouds_midnight-noconflict.js delete mode 100644 public/ace_editor/theme-clouds_midnight-uncompressed-noconflict.js delete mode 100644 public/ace_editor/theme-clouds_midnight-uncompressed.js delete mode 100644 public/ace_editor/theme-clouds_midnight.js delete mode 100644 public/ace_editor/theme-cobalt-noconflict.js delete mode 100644 public/ace_editor/theme-cobalt-uncompressed-noconflict.js delete mode 100644 public/ace_editor/theme-cobalt-uncompressed.js delete mode 100644 public/ace_editor/theme-cobalt.js delete mode 100644 public/ace_editor/theme-crimson_editor-noconflict.js delete mode 100644 public/ace_editor/theme-crimson_editor-uncompressed-noconflict.js delete mode 100644 public/ace_editor/theme-crimson_editor-uncompressed.js delete mode 100644 public/ace_editor/theme-crimson_editor.js delete mode 100644 public/ace_editor/theme-dawn-noconflict.js delete mode 100644 public/ace_editor/theme-dawn-uncompressed-noconflict.js delete mode 100644 public/ace_editor/theme-dawn-uncompressed.js delete mode 100644 public/ace_editor/theme-dawn.js delete mode 100644 public/ace_editor/theme-dreamweaver-noconflict.js delete mode 100644 public/ace_editor/theme-dreamweaver-uncompressed-noconflict.js delete mode 100644 public/ace_editor/theme-dreamweaver-uncompressed.js delete mode 100644 public/ace_editor/theme-dreamweaver.js delete mode 100644 public/ace_editor/theme-eclipse-noconflict.js delete mode 100644 public/ace_editor/theme-eclipse-uncompressed-noconflict.js delete mode 100644 public/ace_editor/theme-eclipse-uncompressed.js delete mode 100644 public/ace_editor/theme-eclipse.js delete mode 100644 public/ace_editor/theme-idle_fingers-noconflict.js delete mode 100644 public/ace_editor/theme-idle_fingers-uncompressed-noconflict.js delete mode 100644 public/ace_editor/theme-idle_fingers-uncompressed.js delete mode 100644 public/ace_editor/theme-idle_fingers.js delete mode 100644 public/ace_editor/theme-kr_theme-noconflict.js delete mode 100644 public/ace_editor/theme-kr_theme-uncompressed-noconflict.js delete mode 100644 public/ace_editor/theme-kr_theme-uncompressed.js delete mode 100644 public/ace_editor/theme-kr_theme.js delete mode 100644 public/ace_editor/theme-merbivore-noconflict.js delete mode 100644 public/ace_editor/theme-merbivore-uncompressed-noconflict.js delete mode 100644 public/ace_editor/theme-merbivore-uncompressed.js delete mode 100644 public/ace_editor/theme-merbivore.js delete mode 100644 public/ace_editor/theme-merbivore_soft-noconflict.js delete mode 100644 public/ace_editor/theme-merbivore_soft-uncompressed-noconflict.js delete mode 100644 public/ace_editor/theme-merbivore_soft-uncompressed.js delete mode 100644 public/ace_editor/theme-merbivore_soft.js delete mode 100644 public/ace_editor/theme-mono_industrial-noconflict.js delete mode 100644 public/ace_editor/theme-mono_industrial-uncompressed-noconflict.js delete mode 100644 public/ace_editor/theme-mono_industrial-uncompressed.js delete mode 100644 public/ace_editor/theme-mono_industrial.js delete mode 100644 public/ace_editor/theme-monokai-noconflict.js delete mode 100644 public/ace_editor/theme-monokai-uncompressed-noconflict.js delete mode 100644 public/ace_editor/theme-monokai-uncompressed.js delete mode 100644 public/ace_editor/theme-monokai.js delete mode 100644 public/ace_editor/theme-pastel_on_dark-noconflict.js delete mode 100644 public/ace_editor/theme-pastel_on_dark-uncompressed-noconflict.js delete mode 100644 public/ace_editor/theme-pastel_on_dark-uncompressed.js delete mode 100644 public/ace_editor/theme-pastel_on_dark.js delete mode 100644 public/ace_editor/theme-solarized_dark-noconflict.js delete mode 100644 public/ace_editor/theme-solarized_dark-uncompressed-noconflict.js delete mode 100644 public/ace_editor/theme-solarized_dark-uncompressed.js delete mode 100644 public/ace_editor/theme-solarized_dark.js delete mode 100644 public/ace_editor/theme-solarized_light-noconflict.js delete mode 100644 public/ace_editor/theme-solarized_light-uncompressed-noconflict.js delete mode 100644 public/ace_editor/theme-solarized_light-uncompressed.js delete mode 100644 public/ace_editor/theme-solarized_light.js delete mode 100644 public/ace_editor/theme-textmate-noconflict.js delete mode 100644 public/ace_editor/theme-textmate-uncompressed-noconflict.js delete mode 100644 public/ace_editor/theme-textmate-uncompressed.js delete mode 100644 public/ace_editor/theme-textmate.js delete mode 100644 public/ace_editor/theme-tomorrow-noconflict.js delete mode 100644 public/ace_editor/theme-tomorrow-uncompressed-noconflict.js delete mode 100644 public/ace_editor/theme-tomorrow-uncompressed.js delete mode 100644 public/ace_editor/theme-tomorrow.js delete mode 100644 public/ace_editor/theme-tomorrow_night-noconflict.js delete mode 100644 public/ace_editor/theme-tomorrow_night-uncompressed-noconflict.js delete mode 100644 public/ace_editor/theme-tomorrow_night-uncompressed.js delete mode 100644 public/ace_editor/theme-tomorrow_night.js delete mode 100644 public/ace_editor/theme-tomorrow_night_blue-noconflict.js delete mode 100644 public/ace_editor/theme-tomorrow_night_blue-uncompressed-noconflict.js delete mode 100644 public/ace_editor/theme-tomorrow_night_blue-uncompressed.js delete mode 100644 public/ace_editor/theme-tomorrow_night_blue.js delete mode 100644 public/ace_editor/theme-tomorrow_night_bright-noconflict.js delete mode 100644 public/ace_editor/theme-tomorrow_night_bright-uncompressed-noconflict.js delete mode 100644 public/ace_editor/theme-tomorrow_night_bright-uncompressed.js delete mode 100644 public/ace_editor/theme-tomorrow_night_bright.js delete mode 100644 public/ace_editor/theme-tomorrow_night_eighties-noconflict.js delete mode 100644 public/ace_editor/theme-tomorrow_night_eighties-uncompressed-noconflict.js delete mode 100644 public/ace_editor/theme-tomorrow_night_eighties-uncompressed.js delete mode 100644 public/ace_editor/theme-tomorrow_night_eighties.js delete mode 100644 public/ace_editor/theme-twilight-noconflict.js delete mode 100644 public/ace_editor/theme-twilight-uncompressed-noconflict.js delete mode 100644 public/ace_editor/theme-twilight-uncompressed.js delete mode 100644 public/ace_editor/theme-twilight.js delete mode 100644 public/ace_editor/theme-vibrant_ink-noconflict.js delete mode 100644 public/ace_editor/theme-vibrant_ink-uncompressed-noconflict.js delete mode 100644 public/ace_editor/theme-vibrant_ink-uncompressed.js delete mode 100644 public/ace_editor/theme-vibrant_ink.js delete mode 100644 public/ace_editor/worker-coffee.js delete mode 100644 public/ace_editor/worker-css.js delete mode 100644 public/ace_editor/worker-javascript.js delete mode 100644 public/ace_editor/worker-json.js delete mode 100755 public/fonts/FrancoisOne/FrancoisOne-webfont.eot delete mode 100755 public/fonts/FrancoisOne/FrancoisOne-webfont.svg delete mode 100755 public/fonts/FrancoisOne/FrancoisOne-webfont.ttf delete mode 100755 public/fonts/FrancoisOne/FrancoisOne-webfont.woff delete mode 100755 public/fonts/FrancoisOne/stylesheet.css delete mode 100644 public/tiny_mce/langs/en.js delete mode 100644 public/tiny_mce/license.txt delete mode 100644 public/tiny_mce/plugins/advhr/css/advhr.css delete mode 100644 public/tiny_mce/plugins/advhr/editor_plugin.js delete mode 100644 public/tiny_mce/plugins/advhr/editor_plugin_src.js delete mode 100644 public/tiny_mce/plugins/advhr/js/rule.js delete mode 100644 public/tiny_mce/plugins/advhr/langs/en_dlg.js delete mode 100644 public/tiny_mce/plugins/advhr/rule.htm delete mode 100644 public/tiny_mce/plugins/advimage/css/advimage.css delete mode 100644 public/tiny_mce/plugins/advimage/editor_plugin.js delete mode 100644 public/tiny_mce/plugins/advimage/editor_plugin_src.js delete mode 100644 public/tiny_mce/plugins/advimage/image.htm delete mode 100644 public/tiny_mce/plugins/advimage/img/sample.gif delete mode 100644 public/tiny_mce/plugins/advimage/js/image.js delete mode 100644 public/tiny_mce/plugins/advimage/langs/en_dlg.js delete mode 100644 public/tiny_mce/plugins/advlink/css/advlink.css delete mode 100644 public/tiny_mce/plugins/advlink/editor_plugin.js delete mode 100644 public/tiny_mce/plugins/advlink/editor_plugin_src.js delete mode 100644 public/tiny_mce/plugins/advlink/js/advlink.js delete mode 100644 public/tiny_mce/plugins/advlink/langs/en_dlg.js delete mode 100644 public/tiny_mce/plugins/advlink/link.htm delete mode 100644 public/tiny_mce/plugins/advlist/editor_plugin.js delete mode 100644 public/tiny_mce/plugins/advlist/editor_plugin_src.js delete mode 100644 public/tiny_mce/plugins/autolink/editor_plugin.js delete mode 100644 public/tiny_mce/plugins/autolink/editor_plugin_src.js delete mode 100644 public/tiny_mce/plugins/autoresize/editor_plugin.js delete mode 100644 public/tiny_mce/plugins/autoresize/editor_plugin_src.js delete mode 100644 public/tiny_mce/plugins/autosave/editor_plugin.js delete mode 100644 public/tiny_mce/plugins/autosave/editor_plugin_src.js delete mode 100644 public/tiny_mce/plugins/autosave/langs/en.js delete mode 100644 public/tiny_mce/plugins/bbcode/editor_plugin.js delete mode 100644 public/tiny_mce/plugins/bbcode/editor_plugin_src.js delete mode 100644 public/tiny_mce/plugins/contextmenu/editor_plugin.js delete mode 100644 public/tiny_mce/plugins/contextmenu/editor_plugin_src.js delete mode 100644 public/tiny_mce/plugins/directionality/editor_plugin.js delete mode 100644 public/tiny_mce/plugins/directionality/editor_plugin_src.js delete mode 100644 public/tiny_mce/plugins/emotions/editor_plugin.js delete mode 100644 public/tiny_mce/plugins/emotions/editor_plugin_src.js delete mode 100644 public/tiny_mce/plugins/emotions/emotions.htm delete mode 100644 public/tiny_mce/plugins/emotions/img/smiley-cool.gif delete mode 100644 public/tiny_mce/plugins/emotions/img/smiley-cry.gif delete mode 100644 public/tiny_mce/plugins/emotions/img/smiley-embarassed.gif delete mode 100644 public/tiny_mce/plugins/emotions/img/smiley-foot-in-mouth.gif delete mode 100644 public/tiny_mce/plugins/emotions/img/smiley-frown.gif delete mode 100644 public/tiny_mce/plugins/emotions/img/smiley-innocent.gif delete mode 100644 public/tiny_mce/plugins/emotions/img/smiley-kiss.gif delete mode 100644 public/tiny_mce/plugins/emotions/img/smiley-laughing.gif delete mode 100644 public/tiny_mce/plugins/emotions/img/smiley-money-mouth.gif delete mode 100644 public/tiny_mce/plugins/emotions/img/smiley-sealed.gif delete mode 100644 public/tiny_mce/plugins/emotions/img/smiley-smile.gif delete mode 100644 public/tiny_mce/plugins/emotions/img/smiley-surprised.gif delete mode 100644 public/tiny_mce/plugins/emotions/img/smiley-tongue-out.gif delete mode 100644 public/tiny_mce/plugins/emotions/img/smiley-undecided.gif delete mode 100644 public/tiny_mce/plugins/emotions/img/smiley-wink.gif delete mode 100644 public/tiny_mce/plugins/emotions/img/smiley-yell.gif delete mode 100644 public/tiny_mce/plugins/emotions/js/emotions.js delete mode 100644 public/tiny_mce/plugins/emotions/langs/en_dlg.js delete mode 100644 public/tiny_mce/plugins/example/dialog.htm delete mode 100644 public/tiny_mce/plugins/example/editor_plugin.js delete mode 100644 public/tiny_mce/plugins/example/editor_plugin_src.js delete mode 100644 public/tiny_mce/plugins/example/img/example.gif delete mode 100644 public/tiny_mce/plugins/example/js/dialog.js delete mode 100644 public/tiny_mce/plugins/example/langs/en.js delete mode 100644 public/tiny_mce/plugins/example/langs/en_dlg.js delete mode 100644 public/tiny_mce/plugins/fullpage/css/fullpage.css delete mode 100644 public/tiny_mce/plugins/fullpage/editor_plugin.js delete mode 100644 public/tiny_mce/plugins/fullpage/editor_plugin_src.js delete mode 100644 public/tiny_mce/plugins/fullpage/fullpage.htm delete mode 100644 public/tiny_mce/plugins/fullpage/js/fullpage.js delete mode 100644 public/tiny_mce/plugins/fullpage/langs/en_dlg.js delete mode 100644 public/tiny_mce/plugins/fullscreen/editor_plugin.js delete mode 100644 public/tiny_mce/plugins/fullscreen/editor_plugin_src.js delete mode 100644 public/tiny_mce/plugins/fullscreen/fullscreen.htm delete mode 100644 public/tiny_mce/plugins/iespell/editor_plugin.js delete mode 100644 public/tiny_mce/plugins/iespell/editor_plugin_src.js delete mode 100644 public/tiny_mce/plugins/inlinepopups/editor_plugin.js delete mode 100644 public/tiny_mce/plugins/inlinepopups/editor_plugin_src.js delete mode 100644 public/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/alert.gif delete mode 100644 public/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/button.gif delete mode 100644 public/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/buttons.gif delete mode 100644 public/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/confirm.gif delete mode 100644 public/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/corners.gif delete mode 100644 public/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/horizontal.gif delete mode 100644 public/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/vertical.gif delete mode 100644 public/tiny_mce/plugins/inlinepopups/skins/clearlooks2/window.css delete mode 100644 public/tiny_mce/plugins/inlinepopups/template.htm delete mode 100644 public/tiny_mce/plugins/insertdatetime/editor_plugin.js delete mode 100644 public/tiny_mce/plugins/insertdatetime/editor_plugin_src.js delete mode 100644 public/tiny_mce/plugins/layer/editor_plugin.js delete mode 100644 public/tiny_mce/plugins/layer/editor_plugin_src.js delete mode 100644 public/tiny_mce/plugins/legacyoutput/editor_plugin.js delete mode 100644 public/tiny_mce/plugins/legacyoutput/editor_plugin_src.js delete mode 100644 public/tiny_mce/plugins/lists/editor_plugin.js delete mode 100644 public/tiny_mce/plugins/lists/editor_plugin_src.js delete mode 100644 public/tiny_mce/plugins/media/css/media.css delete mode 100644 public/tiny_mce/plugins/media/editor_plugin.js delete mode 100644 public/tiny_mce/plugins/media/editor_plugin_src.js delete mode 100644 public/tiny_mce/plugins/media/js/embed.js delete mode 100644 public/tiny_mce/plugins/media/js/media.js delete mode 100644 public/tiny_mce/plugins/media/langs/en_dlg.js delete mode 100644 public/tiny_mce/plugins/media/media.htm delete mode 100644 public/tiny_mce/plugins/media/moxieplayer.swf delete mode 100644 public/tiny_mce/plugins/nonbreaking/editor_plugin.js delete mode 100644 public/tiny_mce/plugins/nonbreaking/editor_plugin_src.js delete mode 100644 public/tiny_mce/plugins/noneditable/editor_plugin.js delete mode 100644 public/tiny_mce/plugins/noneditable/editor_plugin_src.js delete mode 100644 public/tiny_mce/plugins/pagebreak/editor_plugin.js delete mode 100644 public/tiny_mce/plugins/pagebreak/editor_plugin_src.js delete mode 100644 public/tiny_mce/plugins/paste/editor_plugin.js delete mode 100644 public/tiny_mce/plugins/paste/editor_plugin_src.js delete mode 100644 public/tiny_mce/plugins/paste/js/pastetext.js delete mode 100644 public/tiny_mce/plugins/paste/js/pasteword.js delete mode 100644 public/tiny_mce/plugins/paste/langs/en_dlg.js delete mode 100644 public/tiny_mce/plugins/paste/pastetext.htm delete mode 100644 public/tiny_mce/plugins/paste/pasteword.htm delete mode 100644 public/tiny_mce/plugins/preview/editor_plugin.js delete mode 100644 public/tiny_mce/plugins/preview/editor_plugin_src.js delete mode 100644 public/tiny_mce/plugins/preview/example.html delete mode 100644 public/tiny_mce/plugins/preview/jscripts/embed.js delete mode 100644 public/tiny_mce/plugins/preview/preview.html delete mode 100644 public/tiny_mce/plugins/print/editor_plugin.js delete mode 100644 public/tiny_mce/plugins/print/editor_plugin_src.js delete mode 100644 public/tiny_mce/plugins/save/editor_plugin.js delete mode 100644 public/tiny_mce/plugins/save/editor_plugin_src.js delete mode 100644 public/tiny_mce/plugins/searchreplace/css/searchreplace.css delete mode 100644 public/tiny_mce/plugins/searchreplace/editor_plugin.js delete mode 100644 public/tiny_mce/plugins/searchreplace/editor_plugin_src.js delete mode 100644 public/tiny_mce/plugins/searchreplace/js/searchreplace.js delete mode 100644 public/tiny_mce/plugins/searchreplace/langs/en_dlg.js delete mode 100644 public/tiny_mce/plugins/searchreplace/searchreplace.htm delete mode 100644 public/tiny_mce/plugins/style/css/props.css delete mode 100644 public/tiny_mce/plugins/style/editor_plugin.js delete mode 100644 public/tiny_mce/plugins/style/editor_plugin_src.js delete mode 100644 public/tiny_mce/plugins/style/js/props.js delete mode 100644 public/tiny_mce/plugins/style/langs/en_dlg.js delete mode 100644 public/tiny_mce/plugins/style/props.htm delete mode 100644 public/tiny_mce/plugins/tabfocus/editor_plugin.js delete mode 100644 public/tiny_mce/plugins/tabfocus/editor_plugin_src.js delete mode 100644 public/tiny_mce/plugins/table/cell.htm delete mode 100644 public/tiny_mce/plugins/table/css/cell.css delete mode 100644 public/tiny_mce/plugins/table/css/row.css delete mode 100644 public/tiny_mce/plugins/table/css/table.css delete mode 100644 public/tiny_mce/plugins/table/editor_plugin.js delete mode 100644 public/tiny_mce/plugins/table/editor_plugin_src.js delete mode 100644 public/tiny_mce/plugins/table/js/cell.js delete mode 100644 public/tiny_mce/plugins/table/js/merge_cells.js delete mode 100644 public/tiny_mce/plugins/table/js/row.js delete mode 100644 public/tiny_mce/plugins/table/js/table.js delete mode 100644 public/tiny_mce/plugins/table/langs/en_dlg.js delete mode 100644 public/tiny_mce/plugins/table/merge_cells.htm delete mode 100644 public/tiny_mce/plugins/table/row.htm delete mode 100644 public/tiny_mce/plugins/table/table.htm delete mode 100644 public/tiny_mce/plugins/template/blank.htm delete mode 100644 public/tiny_mce/plugins/template/css/template.css delete mode 100644 public/tiny_mce/plugins/template/editor_plugin.js delete mode 100644 public/tiny_mce/plugins/template/editor_plugin_src.js delete mode 100644 public/tiny_mce/plugins/template/js/template.js delete mode 100644 public/tiny_mce/plugins/template/langs/en_dlg.js delete mode 100644 public/tiny_mce/plugins/template/template.htm delete mode 100644 public/tiny_mce/plugins/visualchars/editor_plugin.js delete mode 100644 public/tiny_mce/plugins/visualchars/editor_plugin_src.js delete mode 100644 public/tiny_mce/plugins/wordcount/editor_plugin.js delete mode 100644 public/tiny_mce/plugins/wordcount/editor_plugin_src.js delete mode 100644 public/tiny_mce/plugins/xhtmlxtras/abbr.htm delete mode 100644 public/tiny_mce/plugins/xhtmlxtras/acronym.htm delete mode 100644 public/tiny_mce/plugins/xhtmlxtras/attributes.htm delete mode 100644 public/tiny_mce/plugins/xhtmlxtras/cite.htm delete mode 100644 public/tiny_mce/plugins/xhtmlxtras/css/attributes.css delete mode 100644 public/tiny_mce/plugins/xhtmlxtras/css/popup.css delete mode 100644 public/tiny_mce/plugins/xhtmlxtras/del.htm delete mode 100644 public/tiny_mce/plugins/xhtmlxtras/editor_plugin.js delete mode 100644 public/tiny_mce/plugins/xhtmlxtras/editor_plugin_src.js delete mode 100644 public/tiny_mce/plugins/xhtmlxtras/ins.htm delete mode 100644 public/tiny_mce/plugins/xhtmlxtras/js/abbr.js delete mode 100644 public/tiny_mce/plugins/xhtmlxtras/js/acronym.js delete mode 100644 public/tiny_mce/plugins/xhtmlxtras/js/attributes.js delete mode 100644 public/tiny_mce/plugins/xhtmlxtras/js/cite.js delete mode 100644 public/tiny_mce/plugins/xhtmlxtras/js/del.js delete mode 100644 public/tiny_mce/plugins/xhtmlxtras/js/element_common.js delete mode 100644 public/tiny_mce/plugins/xhtmlxtras/js/ins.js delete mode 100644 public/tiny_mce/plugins/xhtmlxtras/langs/en_dlg.js delete mode 100644 public/tiny_mce/themes/advanced/about.htm delete mode 100644 public/tiny_mce/themes/advanced/anchor.htm delete mode 100644 public/tiny_mce/themes/advanced/charmap.htm delete mode 100644 public/tiny_mce/themes/advanced/color_picker.htm delete mode 100644 public/tiny_mce/themes/advanced/editor_template.js delete mode 100644 public/tiny_mce/themes/advanced/editor_template_src.js delete mode 100644 public/tiny_mce/themes/advanced/image.htm delete mode 100644 public/tiny_mce/themes/advanced/img/colorpicker.jpg delete mode 100644 public/tiny_mce/themes/advanced/img/flash.gif delete mode 100644 public/tiny_mce/themes/advanced/img/icons.gif delete mode 100644 public/tiny_mce/themes/advanced/img/iframe.gif delete mode 100644 public/tiny_mce/themes/advanced/img/pagebreak.gif delete mode 100644 public/tiny_mce/themes/advanced/img/quicktime.gif delete mode 100644 public/tiny_mce/themes/advanced/img/realmedia.gif delete mode 100644 public/tiny_mce/themes/advanced/img/shockwave.gif delete mode 100644 public/tiny_mce/themes/advanced/img/trans.gif delete mode 100644 public/tiny_mce/themes/advanced/img/video.gif delete mode 100644 public/tiny_mce/themes/advanced/img/windowsmedia.gif delete mode 100644 public/tiny_mce/themes/advanced/js/about.js delete mode 100644 public/tiny_mce/themes/advanced/js/anchor.js delete mode 100644 public/tiny_mce/themes/advanced/js/charmap.js delete mode 100644 public/tiny_mce/themes/advanced/js/color_picker.js delete mode 100644 public/tiny_mce/themes/advanced/js/image.js delete mode 100644 public/tiny_mce/themes/advanced/js/link.js delete mode 100644 public/tiny_mce/themes/advanced/js/source_editor.js delete mode 100644 public/tiny_mce/themes/advanced/langs/en.js delete mode 100644 public/tiny_mce/themes/advanced/langs/en_dlg.js delete mode 100644 public/tiny_mce/themes/advanced/link.htm delete mode 100644 public/tiny_mce/themes/advanced/shortcuts.htm delete mode 100755 public/tiny_mce/themes/advanced/skins/cirkuit/content.css delete mode 100755 public/tiny_mce/themes/advanced/skins/cirkuit/dialog.css delete mode 100755 public/tiny_mce/themes/advanced/skins/cirkuit/img/butt2.png delete mode 100755 public/tiny_mce/themes/advanced/skins/cirkuit/img/button-bg.png delete mode 100755 public/tiny_mce/themes/advanced/skins/cirkuit/img/buttons.png delete mode 100755 public/tiny_mce/themes/advanced/skins/cirkuit/img/down_arrow.gif delete mode 100755 public/tiny_mce/themes/advanced/skins/cirkuit/img/fade-butt.png delete mode 100755 public/tiny_mce/themes/advanced/skins/cirkuit/img/icons.png delete mode 100755 public/tiny_mce/themes/advanced/skins/cirkuit/img/items.gif delete mode 100755 public/tiny_mce/themes/advanced/skins/cirkuit/img/menu-arrow.png delete mode 100755 public/tiny_mce/themes/advanced/skins/cirkuit/img/menu-check.png delete mode 100755 public/tiny_mce/themes/advanced/skins/cirkuit/img/progress.gif delete mode 100755 public/tiny_mce/themes/advanced/skins/cirkuit/img/tabs.gif delete mode 100755 public/tiny_mce/themes/advanced/skins/cirkuit/img/toolbarbg.png delete mode 100755 public/tiny_mce/themes/advanced/skins/cirkuit/ui.css delete mode 100644 public/tiny_mce/themes/advanced/skins/default/content.css delete mode 100644 public/tiny_mce/themes/advanced/skins/default/dialog.css delete mode 100644 public/tiny_mce/themes/advanced/skins/default/img/buttons.png delete mode 100644 public/tiny_mce/themes/advanced/skins/default/img/items.gif delete mode 100644 public/tiny_mce/themes/advanced/skins/default/img/menu_arrow.gif delete mode 100644 public/tiny_mce/themes/advanced/skins/default/img/menu_check.gif delete mode 100644 public/tiny_mce/themes/advanced/skins/default/img/progress.gif delete mode 100644 public/tiny_mce/themes/advanced/skins/default/img/tabs.gif delete mode 100644 public/tiny_mce/themes/advanced/skins/default/ui.css delete mode 100644 public/tiny_mce/themes/advanced/skins/highcontrast/content.css delete mode 100644 public/tiny_mce/themes/advanced/skins/highcontrast/dialog.css delete mode 100644 public/tiny_mce/themes/advanced/skins/highcontrast/ui.css delete mode 100644 public/tiny_mce/themes/advanced/skins/o2k7/content.css delete mode 100644 public/tiny_mce/themes/advanced/skins/o2k7/dialog.css delete mode 100644 public/tiny_mce/themes/advanced/skins/o2k7/img/button_bg.png delete mode 100644 public/tiny_mce/themes/advanced/skins/o2k7/img/button_bg_black.png delete mode 100644 public/tiny_mce/themes/advanced/skins/o2k7/img/button_bg_silver.png delete mode 100644 public/tiny_mce/themes/advanced/skins/o2k7/ui.css delete mode 100644 public/tiny_mce/themes/advanced/skins/o2k7/ui_black.css delete mode 100644 public/tiny_mce/themes/advanced/skins/o2k7/ui_silver.css delete mode 100644 public/tiny_mce/themes/advanced/source_editor.htm delete mode 100644 public/tiny_mce/themes/simple/editor_template.js delete mode 100644 public/tiny_mce/themes/simple/editor_template_src.js delete mode 100644 public/tiny_mce/themes/simple/img/icons.gif delete mode 100644 public/tiny_mce/themes/simple/langs/en.js delete mode 100644 public/tiny_mce/themes/simple/skins/default/content.css delete mode 100644 public/tiny_mce/themes/simple/skins/default/ui.css delete mode 100644 public/tiny_mce/themes/simple/skins/o2k7/content.css delete mode 100644 public/tiny_mce/themes/simple/skins/o2k7/img/button_bg.png delete mode 100644 public/tiny_mce/themes/simple/skins/o2k7/ui.css delete mode 100644 public/tiny_mce/tiny_mce.js delete mode 100644 public/tiny_mce/tiny_mce_popup.js delete mode 100644 public/tiny_mce/tiny_mce_src.js delete mode 100644 public/tiny_mce/utils/editable_selects.js delete mode 100644 public/tiny_mce/utils/form_utils.js delete mode 100644 public/tiny_mce/utils/mctabs.js delete mode 100644 public/tiny_mce/utils/validate.js delete mode 100644 test/fixtures/actualities.yml create mode 100644 test/fixtures/admins.yml delete mode 100644 test/fixtures/events.yml delete mode 100644 test/fixtures/observations.yml create mode 100644 test/fixtures/pages.yml create mode 100644 test/fixtures/portfolio_images.yml create mode 100644 test/fixtures/portfolio_portfolio_images.yml create mode 100644 test/fixtures/portfolios.yml delete mode 100644 test/functional/public/home_controller_test.rb rename test/unit/{event_test.rb => admin_test.rb} (64%) delete mode 100644 test/unit/helpers/public/home_helper_test.rb rename test/unit/{actuality_test.rb => page_test.rb} (62%) create mode 100644 test/unit/portfolio_image_test.rb create mode 100644 test/unit/portfolio_portfolio_image_test.rb rename test/unit/{observation_test.rb => portfolio_test.rb} (61%) rename app/views/admin/menu_aliases/edit.html.haml => vendor/assets/javascripts/.gitkeep (100%) rename app/views/admin/menu_urls/edit.html.haml => vendor/assets/stylesheets/.gitkeep (100%) rename app/views/admin/pages/edit.html.haml => vendor/plugins/.gitkeep (100%) diff --git a/Gemfile b/Gemfile index f981a03..66bff63 100644 --- a/Gemfile +++ b/Gemfile @@ -1,51 +1,52 @@ -source 'http://rubygems.org' +source 'https://rubygems.org' -gem "rails", '3.2.11' - -group :assets do - gem 'sass-rails', '~> 3.2.3' - gem 'coffee-rails', '~> 3.2.1' - gem 'uglifier', '>= 1.0.3', :require => 'uglifier' - gem 'compass-rails' - gem 'zurb-foundation', ">= 3.2" -end +gem 'rails', '3.2.11' # Bundle edge Rails instead: -# gem 'rails', :git => 'git://github.com/rails/rails.git' +# gem 'rails', :git => 'git://github.com/rails/rails.git' +gem 'sqlite3' gem 'mysql2' +# Gems used only for assets and not required +# in production environments by default. +group :assets do + gem 'sass-rails', '~> 3.2.3' + gem 'coffee-rails', '~> 3.2.1' + + # See https://github.com/sstephenson/execjs#readme for more supported runtimes + # gem 'therubyracer', :platforms => :ruby + + gem 'uglifier', '>= 1.0.3' + + gem 'compass-rails' + gem 'zurb-foundation', ">= 3.2" +end gem 'jquery-rails' # To use ActiveModel has_secure_password gem 'bcrypt-ruby', '~> 3.0.0' -# Use unicorn as the web server -gem 'unicorn' - -# Deploy with Capistrano gem 'capistrano' gem 'rvm-capistrano' -gem 'gravatar_image_tag' -# To use debugger -# gem 'ruby-debug19', :require => 'ruby-debug' - -group :test do - # Pretty printed test output - gem 'turn', '0.8.2', :require => false -end - - -gem 'acts_as_commentable' - -gem 'haml' -gem 'acts_as_tree' gem 'formtastic' -gem 'devise' -gem 'kaminari' +gem 'haml' + +gem 'acts_as_tree' + + gem 'carrierwave' gem 'rmagick' -gem "geocoder" + +#markdown +gem 'pygments.rb' +gem 'redcarpet' + +gem 'nokogiri' + +gem 'exifr' + +gem 'kaminari' \ No newline at end of file diff --git a/Gemfile.lock b/Gemfile.lock index c6771e2..79cc6f0 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,41 +1,39 @@ GEM - remote: http://rubygems.org/ + remote: https://rubygems.org/ specs: - actionmailer (3.2.0) - actionpack (= 3.2.0) - mail (~> 2.4.0) - actionpack (3.2.0) - activemodel (= 3.2.0) - activesupport (= 3.2.0) + actionmailer (3.2.11) + actionpack (= 3.2.11) + mail (~> 2.4.4) + actionpack (3.2.11) + activemodel (= 3.2.11) + activesupport (= 3.2.11) builder (~> 3.0.0) erubis (~> 2.7.0) - journey (~> 1.0.0) + journey (~> 1.0.4) rack (~> 1.4.0) - rack-cache (~> 1.1) + rack-cache (~> 1.2) rack-test (~> 0.6.1) - sprockets (~> 2.1.2) - activemodel (3.2.0) - activesupport (= 3.2.0) + sprockets (~> 2.2.1) + activemodel (3.2.11) + activesupport (= 3.2.11) builder (~> 3.0.0) - activerecord (3.2.0) - activemodel (= 3.2.0) - activesupport (= 3.2.0) - arel (~> 3.0.0) + activerecord (3.2.11) + activemodel (= 3.2.11) + activesupport (= 3.2.11) + arel (~> 3.0.2) tzinfo (~> 0.3.29) - activeresource (3.2.0) - activemodel (= 3.2.0) - activesupport (= 3.2.0) - activesupport (3.2.0) + activeresource (3.2.11) + activemodel (= 3.2.11) + activesupport (= 3.2.11) + activesupport (3.2.11) i18n (~> 0.6) multi_json (~> 1.0) - acts_as_commentable (4.0.0) acts_as_tree (1.2.0) activerecord (>= 3.0.0) - ansi (1.4.3) arel (3.0.2) bcrypt-ruby (3.0.1) builder (3.0.4) - capistrano (2.14.2) + capistrano (2.14.1) highline net-scp (>= 1.0.0) net-sftp (>= 2.0.0) @@ -58,28 +56,22 @@ GEM sass (~> 3.1) compass-rails (1.0.3) compass (>= 0.12.2, < 0.14) - devise (2.2.3) - bcrypt-ruby (~> 3.0) - orm_adapter (~> 0.1) - railties (~> 3.1) - warden (~> 1.2.1) erubis (2.7.0) execjs (1.4.0) multi_json (~> 1.0) + exifr (1.1.3) formtastic (2.2.1) actionpack (>= 3.0) fssm (0.2.10) - geocoder (1.1.6) - gravatar_image_tag (1.1.3) haml (3.1.7) highline (1.6.15) hike (1.2.1) i18n (0.6.1) journey (1.0.4) - jquery-rails (2.2.1) + jquery-rails (2.2.0) railties (>= 3.0, < 5.0) thor (>= 0.14, < 2.0) - json (1.7.7) + json (1.7.6) kaminari (0.14.1) actionpack (>= 3.0.0) activesupport (>= 3.0.0) @@ -87,48 +79,53 @@ GEM i18n (>= 0.4.0) mime-types (~> 1.16) treetop (~> 1.4.8) - mime-types (1.21) + mime-types (1.19) modular-scale (1.0.6) compass (>= 0.12.1) sass (>= 3.2.0) sassy-math (>= 1.5) - multi_json (1.5.1) + multi_json (1.5.0) mysql2 (0.3.11) - net-scp (1.1.0) - net-ssh (>= 2.6.5) - net-sftp (2.1.1) - net-ssh (>= 2.6.5) - net-ssh (2.6.5) - net-ssh-gateway (1.2.0) - net-ssh (>= 2.6.5) - orm_adapter (0.4.0) + net-scp (1.0.4) + net-ssh (>= 1.99.1) + net-sftp (2.0.5) + net-ssh (>= 2.0.9) + net-ssh (2.6.3) + net-ssh-gateway (1.1.0) + net-ssh (>= 1.99.1) + nokogiri (1.5.6) polyglot (0.3.3) - rack (1.4.5) + posix-spawn (0.3.6) + pygments.rb (0.3.7) + posix-spawn (~> 0.3.6) + yajl-ruby (~> 1.1.0) + rack (1.4.4) rack-cache (1.2) rack (>= 0.4) rack-ssl (1.3.3) rack rack-test (0.6.2) rack (>= 1.0) - rails (3.2.0) - actionmailer (= 3.2.0) - actionpack (= 3.2.0) - activerecord (= 3.2.0) - activeresource (= 3.2.0) - activesupport (= 3.2.0) + rails (3.2.11) + actionmailer (= 3.2.11) + actionpack (= 3.2.11) + activerecord (= 3.2.11) + activeresource (= 3.2.11) + activesupport (= 3.2.11) bundler (~> 1.0) - railties (= 3.2.0) - railties (3.2.0) - actionpack (= 3.2.0) - activesupport (= 3.2.0) + railties (= 3.2.11) + railties (3.2.11) + actionpack (= 3.2.11) + activesupport (= 3.2.11) rack-ssl (~> 1.3.2) rake (>= 0.8.7) rdoc (~> 3.4) - thor (~> 0.14.6) + thor (>= 0.14.6, < 2.0) rake (10.0.3) - rdoc (3.12.1) + rdoc (3.12) json (~> 1.4) - rmagick (2.13.2) + redcarpet (2.2.2) + rmagick (2.13.1) rvm-capistrano (1.2.7) capistrano (>= 2.0.0) sass (3.2.5) @@ -138,23 +135,22 @@ GEM tilt (~> 1.3) sassy-math (1.5) compass (~> 0.11) - sprockets (2.1.3) + sprockets (2.2.2) hike (~> 1.2) + multi_json (~> 1.0) rack (~> 1.0) tilt (~> 1.1, != 1.3.0) - thor (0.14.6) + sqlite3 (1.3.7) + thor (0.17.0) tilt (1.3.3) treetop (1.4.12) polyglot polyglot (>= 0.3.1) - turn (0.8.2) - ansi (>= 1.2.2) tzinfo (0.3.35) uglifier (1.3.0) execjs (>= 0.3.0) multi_json (~> 1.0, >= 1.0.2) - warden (1.2.1) - rack (>= 1.0) + yajl-ruby (1.1.0) zurb-foundation (3.2.5) compass (>= 0.12.2) modular-scale (= 1.0.6) @@ -165,24 +161,25 @@ PLATFORMS ruby DEPENDENCIES - acts_as_commentable acts_as_tree + bcrypt-ruby (~> 3.0.0) capistrano carrierwave coffee-rails (~> 3.2.1) compass-rails - devise + exifr formtastic - geocoder - gravatar_image_tag haml jquery-rails kaminari mysql2 - rails (= 3.2.0) + nokogiri + pygments.rb + rails (= 3.2.11) + redcarpet rmagick rvm-capistrano sass-rails (~> 3.2.3) - turn (= 0.8.2) + sqlite3 uglifier (>= 1.0.3) zurb-foundation (>= 3.2) diff --git a/README.rdoc b/README.rdoc new file mode 100644 index 0000000..7c36f23 --- /dev/null +++ b/README.rdoc @@ -0,0 +1,261 @@ +== Welcome to Rails + +Rails is a web-application framework that includes everything needed to create +database-backed web applications according to the Model-View-Control pattern. + +This pattern splits the view (also called the presentation) into "dumb" +templates that are primarily responsible for inserting pre-built data in between +HTML tags. The model contains the "smart" domain objects (such as Account, +Product, Person, Post) that holds all the business logic and knows how to +persist themselves to a database. The controller handles the incoming requests +(such as Save New Account, Update Product, Show Post) by manipulating the model +and directing data to the view. + +In Rails, the model is handled by what's called an object-relational mapping +layer entitled Active Record. This layer allows you to present the data from +database rows as objects and embellish these data objects with business logic +methods. You can read more about Active Record in +link:files/vendor/rails/activerecord/README.html. + +The controller and view are handled by the Action Pack, which handles both +layers by its two parts: Action View and Action Controller. These two layers +are bundled in a single package due to their heavy interdependence. This is +unlike the relationship between the Active Record and Action Pack that is much +more separate. Each of these packages can be used independently outside of +Rails. You can read more about Action Pack in +link:files/vendor/rails/actionpack/README.html. + + +== Getting Started + +1. At the command prompt, create a new Rails application: + rails new myapp (where myapp is the application name) + +2. Change directory to myapp and start the web server: + cd myapp; rails server (run with --help for options) + +3. Go to http://localhost:3000/ and you'll see: + "Welcome aboard: You're riding Ruby on Rails!" + +4. Follow the guidelines to start developing your application. You can find +the following resources handy: + +* The Getting Started Guide: http://guides.rubyonrails.org/getting_started.html +* Ruby on Rails Tutorial Book: http://www.railstutorial.org/ + + +== Debugging Rails + +Sometimes your application goes wrong. Fortunately there are a lot of tools that +will help you debug it and get it back on the rails. + +First area to check is the application log files. Have "tail -f" commands +running on the server.log and development.log. Rails will automatically display +debugging and runtime information to these files. Debugging info will also be +shown in the browser on requests from 127.0.0.1. + +You can also log your own messages directly into the log file from your code +using the Ruby logger class from inside your controllers. Example: + + class WeblogController < ActionController::Base + def destroy + @weblog = Weblog.find(params[:id]) + @weblog.destroy + logger.info("#{Time.now} Destroyed Weblog ID ##{@weblog.id}!") + end + end + +The result will be a message in your log file along the lines of: + + Mon Oct 08 14:22:29 +1000 2007 Destroyed Weblog ID #1! + +More information on how to use the logger is at http://www.ruby-doc.org/core/ + +Also, Ruby documentation can be found at http://www.ruby-lang.org/. There are +several books available online as well: + +* Programming Ruby: http://www.ruby-doc.org/docs/ProgrammingRuby/ (Pickaxe) +* Learn to Program: http://pine.fm/LearnToProgram/ (a beginners guide) + +These two books will bring you up to speed on the Ruby language and also on +programming in general. + + +== Debugger + +Debugger support is available through the debugger command when you start your +Mongrel or WEBrick server with --debugger. This means that you can break out of +execution at any point in the code, investigate and change the model, and then, +resume execution! You need to install ruby-debug to run the server in debugging +mode. With gems, use sudo gem install ruby-debug. Example: + + class WeblogController < ActionController::Base + def index + @posts = Post.all + debugger + end + end + +So the controller will accept the action, run the first line, then present you +with a IRB prompt in the server window. Here you can do things like: + + >> @posts.inspect + => "[#nil, "body"=>nil, "id"=>"1"}>, + #"Rails", "body"=>"Only ten..", "id"=>"2"}>]" + >> @posts.first.title = "hello from a debugger" + => "hello from a debugger" + +...and even better, you can examine how your runtime objects actually work: + + >> f = @posts.first + => #nil, "body"=>nil, "id"=>"1"}> + >> f. + Display all 152 possibilities? (y or n) + +Finally, when you're ready to resume execution, you can enter "cont". + + +== Console + +The console is a Ruby shell, which allows you to interact with your +application's domain model. Here you'll have all parts of the application +configured, just like it is when the application is running. You can inspect +domain models, change values, and save to the database. Starting the script +without arguments will launch it in the development environment. + +To start the console, run rails console from the application +directory. + +Options: + +* Passing the -s, --sandbox argument will rollback any modifications + made to the database. +* Passing an environment name as an argument will load the corresponding + environment. Example: rails console production. + +To reload your controllers and models after launching the console run +reload! + +More information about irb can be found at: +link:http://www.rubycentral.org/pickaxe/irb.html + + +== dbconsole + +You can go to the command line of your database directly through rails +dbconsole. You would be connected to the database with the credentials +defined in database.yml. Starting the script without arguments will connect you +to the development database. Passing an argument will connect you to a different +database, like rails dbconsole production. Currently works for MySQL, +PostgreSQL and SQLite 3. + +== Description of Contents + +The default directory structure of a generated Ruby on Rails application: + + |-- app + | |-- assets + | |-- images + | |-- javascripts + | `-- stylesheets + | |-- controllers + | |-- helpers + | |-- mailers + | |-- models + | `-- views + | `-- layouts + |-- config + | |-- environments + | |-- initializers + | `-- locales + |-- db + |-- doc + |-- lib + | `-- tasks + |-- log + |-- public + |-- script + |-- test + | |-- fixtures + | |-- functional + | |-- integration + | |-- performance + | `-- unit + |-- tmp + | |-- cache + | |-- pids + | |-- sessions + | `-- sockets + `-- vendor + |-- assets + `-- stylesheets + `-- plugins + +app + Holds all the code that's specific to this particular application. + +app/assets + Contains subdirectories for images, stylesheets, and JavaScript files. + +app/controllers + Holds controllers that should be named like weblogs_controller.rb for + automated URL mapping. All controllers should descend from + ApplicationController which itself descends from ActionController::Base. + +app/models + Holds models that should be named like post.rb. Models descend from + ActiveRecord::Base by default. + +app/views + Holds the template files for the view that should be named like + weblogs/index.html.erb for the WeblogsController#index action. All views use + eRuby syntax by default. + +app/views/layouts + Holds the template files for layouts to be used with views. This models the + common header/footer method of wrapping views. In your views, define a layout + using the layout :default and create a file named default.html.erb. + Inside default.html.erb, call <% yield %> to render the view using this + layout. + +app/helpers + Holds view helpers that should be named like weblogs_helper.rb. These are + generated for you automatically when using generators for controllers. + Helpers can be used to wrap functionality for your views into methods. + +config + Configuration files for the Rails environment, the routing map, the database, + and other dependencies. + +db + Contains the database schema in schema.rb. db/migrate contains all the + sequence of Migrations for your schema. + +doc + This directory is where your application documentation will be stored when + generated using rake doc:app + +lib + Application specific libraries. Basically, any kind of custom code that + doesn't belong under controllers, models, or helpers. This directory is in + the load path. + +public + The directory available for the web server. Also contains the dispatchers and the + default HTML files. This should be set as the DOCUMENT_ROOT of your web + server. + +script + Helper scripts for automation and generation. + +test + Unit and functional tests along with fixtures. When using the rails generate + command, template test files will be generated for you and placed in this + directory. + +vendor + External libraries that the application depends on. Also includes the plugins + subdirectory. If the app has frozen rails, those gems also go here, under + vendor/rails/. This directory is in the load path. diff --git a/Rakefile b/Rakefile index 0289e25..a222240 100644 --- a/Rakefile +++ b/Rakefile @@ -4,4 +4,4 @@ require File.expand_path('../config/application', __FILE__) -Crossey2::Application.load_tasks +SitePerso::Application.load_tasks diff --git a/app/assets/images/admin/backgrounds/background.png b/app/assets/images/admin/backgrounds/background.png deleted file mode 100644 index 65599509bb868cafb2eabe2ca98c80e6244811bb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3044 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 diff --git a/app/assets/images/admin/backgrounds/background2.png b/app/assets/images/admin/backgrounds/background2.png deleted file mode 100644 index 65599509bb868cafb2eabe2ca98c80e6244811bb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3044 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 diff --git a/app/assets/images/admin/backgrounds/bg-brown.jpg b/app/assets/images/admin/backgrounds/bg-brown.jpg deleted file mode 100644 index 707d339c043d0483e96dd8623bf33460f9b56fbe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15806 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 O-cum)UzR0L=l>6=2u$Vx diff --git a/app/assets/images/admin/backgrounds/bg-dark.jpg b/app/assets/images/admin/backgrounds/bg-dark.jpg deleted file mode 100644 index 6ba714fea136beec84c1f6b59c8f73f1a9fa090a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15662 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 diff --git a/app/assets/images/admin/backgrounds/bg-green-dark.jpg b/app/assets/images/admin/backgrounds/bg-green-dark.jpg deleted file mode 100644 index cb046075908c69aafd765754cbaf592e1a7f91d9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21573 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 xWZ4U0)`gq!NJxYQ7r7FU_y67-rByQMAY5YL<- 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

1gk-M+c2z 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

RaLphyPeZ^+>siG(bLk5SZI5uG-6WkaT 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 z zu*oN>v@xGt^~UFq%JUN^EvdWKZKn@JNDmuq>uEyUB2gIJjmXX9au0OI?{AjA`T zgjVLoI%Yqoq%##&JVwta{+=`W&5zT! zzDH4!bRuZ(2M_ScBC&McU8U9I(%`5q>=a$20#Z^=ZW2%x!zw-)^Z0GZG#-l|<`r4EnI)z{?8QVkcp%m#5pU5cPta8ei>;guj zsBR*N?|+DZPt!~_?uyEK778g0s}M2~+s5c#) zDnmx<@hAt(3EVt2q&S8d-PPeexl8oVUWW?pSuv^`-rtIh2NS3wxH~IMo3jaS20L8w z^056hc-OByLO!6AAzL&or7z|-U~UIssSTQix^$&@4XmTUgGfshfhf4tT-;Qd$eB@# zDfn9C_Zv`=yEJQHEpKVoqA*Y;bw8>I9@9cVLT&>NBpY~CYH|a#++8nyd#Vvr)aDC; zF|iCm0C-heg}zx?Ch5X8P2i0;Xl^Z9>CP|lqFAHZz>RyTEFldm1AEmC)1CGB-9C2% zfj*fQ@oMYG)ywwVd&~w*IRG36r`cTNsj2*td_HF5^i<4M!?n^RQDy;k@VTn&#L5Wz zjxrrJke+-Nsik~35!(!|1(bvIP-u8^-vJp%+!qJBnmGpv)v+92+nDk1b62S@r1yo< zhnU;HiweCpZIdOjG75{ZjkWB$(#--lyObk9K>qDeiyEuPkb{aiB={nVf^R7$kNuyR z52B>g{%01?kn6RhL$7^MDt=jHey=*PI^*qIa`TF5<+`M-*^)6^UKF>nir%q;hfasn zWr%}!4A&jx+N`hW@J4?=3fj@fIZ!)->;3A1T&#&dIn))$l`*3Coz|sA#Cs&do+I%9 z-e5U%sFcRXiaf-Ss3+0#-+8 zjLna34JE(3P&EbC5yx=U{{S$hE^+-fjEio*rrnf^)V^>;{{UL~a!?NAmSc79C~5Mk zf9Y;ye@7>3-C9-}@HW!3ObS719fhsABK}1G0P1QffWGI+osNqNg!Z@wr5WlB!yOO+ zJwmDMByRdCNY25fn*RU_M#T4)*WW@X04EJ&BwbyeLEB~|59X;2)a51yi=4Ys-2C7D zx2Y!{;}oN9gKUB_d3wwT`?Yeq8zxpAK(u1&h{ZtdYbYN@ssS@DDjqVhB>}$@+H(D8 zsHEAa52NOp0C5a#16jyPXkcP`z2ie(lhpBzLh5xj>X zZEL7E^K#`PP3s8vQ%2ZIB1U3hcp)E+`|9F0wpl#ct}xI09#9wON&Kq<9l z+ihMX5nOCHq-wAPl~za z(;969dPD*PV!D3!E7siVGsP1K1GSzqk9+ZD)9a};xbb8YAboksV>~h1K;CBOEHhJA#tjd)cDhYHb)&#lra|VDz^J=N>%k|^)s;|P!FRj$lcpu zcE7#WwHY%jlL{W!u^qOu)@woKM<0?qXwpaK?A+Ukr8RHr5J3(bCC=oKmhfR~(*00kmkI!y~BlNOj;pLK5{uv|QKC0&FGz8Nx=EEWKn73H+ z*(d0FlRFRQk+*+~z9Oefl=H9Ax`SW;*6El`uaP`WYoUa%h<4-buO=R+zc#Abak5-2 zZpQq;Holb_OQPj880&v7#v=W}Z}rhCr(~Su89f^n_{qQBVh7f0sy)*2AJff^)Zb`p zUialxH5}x~GvUVrgCUT%*9Gj(hTs(<%VEIN0$9lm__9mtThe4802GtBgMK<6)uCF1 z5)|vuUdlp(gZ6czY}xRA)75y1H<2-Azwr$XYKTH*ndU8Pv@s%<8Vd-`y|g5nL?;vg zOAtx+#)C>kYQH9JX!^Wh*u&K4Eq+1nD}DIS9-H}c0X}b0UE3oPp%>stj1RW4blqIT zAbhCM*af(`;6S46ykKbJvuM}9@UXZvD8|L}?bO^2I|0V;gZr+2yV5W;C>sSXK=Zwre#=m@SE9%l9$+;hY4o?<4tr{% zo5;s+O{7t_>bE__nv4hK_eJ@474N{6wYb^HricTvexnfs$X(Qq&n}b^n(s7#jSzwF zsSSx3JGJ|)dwCi~ac-Y+)$z{*`LzE4_l0^Mex0v1fRNiltc)+*!&>vb5)|}9X4$M1 zi2x^_fxgPTS@}VuRL{k^xM3;}0-L_dP?>~|n>bxmC+VppgLY+o*9^O@ZFLu^A(Dp9 zz}Z=>M`eu$nROnK3P3U1!?>E176`-S$mO`G+Pt+Up;M43lH`klYkO!_7BOwUr%QNy z>cLiLMHl5J5(BvWC%n~z6`v^Nym5`A$Q6OVa|+dAv@C#>Vz%AvsbOE!0sW+M8t8+u=mu9;Hv)sr^m!x3y*yjLb!w~?OiU+eavdR zFLenRwfF+cK9Nk?t7+v(@Uk0;RQkxIB?*d171xidN$?a!M8sXQ=Lb5F3WM0jsF5gN z)7oyOcAwr=s)m>IR_OBxxofH$9`Q^H&zC`NxVF=DPIT@gwwicuZMiZcV&p4hlA`tm ztb;@R)r^zyAQ{mj*^i;Po)@zp(^ePtjCB71KH)U9QggSN*+Vb1T3kttt;)QyyW)vdy$ROA8F5S9M`k+p|m+$k{0vrg{9z>)y*0Q=}r zuThN~A_)}vOpFh8qcv3#ZJ^@vUB$caw9tpfl=^5&=xjZPl(@r^&tveN4XT2*&zw zsoGqq7BO(YjQU>JJ5&B9sRf#?kg @XIif?R%KwxflKC0;D<0n-Symg6-Y71-*+9 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 T5c)p~JdFIbAd)rbQGfs0N^V4z diff --git a/app/assets/images/admin/backgrounds/white_oak.png b/app/assets/images/admin/backgrounds/white_oak.png deleted file mode 100644 index 5dea77a420ebaa026ff72f28c7a21604adbca6c0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 238188 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

    n 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≦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 BRFMDx diff --git a/app/assets/images/admin/content_type/type_BreakContent.png b/app/assets/images/admin/content_type/type_BreakContent.png deleted file mode 100644 index 6f099c443d3bbba2cabc5666669afa0b72282a93..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2619 zcmV-B3dHq^P)LpVY=GVFI0tvuyLa!okJ*{o*~d*L zGrN84&Tr2A&wZS8#;`1llv*&&D8VklF2OFfB7kk!P38Bjke^KGV5@>vZDG0qIfpHQ zYe?S5zPuGi@HvBxKsFG_D%NfZURz-RA1G`^z=i;_p$XcOyca0+z+f|=4UN4afz1PL zA%L-cAkck>Er5)H#eT<7kP%C8Y$;p}U!nU7n*-WF;EFa~*fh)p0$p?gd;{(aYy>h7 zu&MZ-p`h73s0rj)2HqFwp2C($1`E=pUYnfv*x%=AI?pl_3|!t`ZGk}d1U3blCmA%j2m>^N9H;)~__1TtM^skUR#a5fV4wf+ z;lsOs_w?L(W!}7B6u=Hh-t!H3*02%KJh_NaK-uHe{_NSa^G1ytHO+=QrL3&%S>5jw zi^cxv?d|RO>)yR{jWcE(Wk3#4uX)Fo0D9KIvx3b5jmd@sGfII@ZQtzQ|J;Xk+&5{Z9ot3Q45!iCm1-+JpB1y!{1G(F8PxCQPSwg%`31v(A(iQ~s-jGr)J z#o)n%>-`>3JbLu#*Q-~qY_O%~=OolP1vpN<#`K&}dso0+!BzxKON9fv4Bp$kY11>W z&Y%D3(4j+T20cGvOU$VQ2fkgqYSo9gDZnuX{(!`R<^;CMXfz9&wrT)fcK!PG_iRmG z=A~RHPPNkV^02F`Yh!(VeQOeOEV&IZ7S4n28n~IIRm(u9Ag^p`8QI<4y|22u`lFyg z0}E$MJ89Fb7&B(f$2Ra??=M|C!ugKW9T;WqOq0_M^U8)s~e zL?WYtwqjX}$K&1Y?I)KnT=@1i%F5#$UFSMZ9qZPD%~&?6)e*)af@Kf#+9`%5YK(D~w8M-s)@{l9-EJ&9W3C$JqYDwV<1D}4 zv17cBW@C=hbOAcUIl{z$A%b?=^v1@;g5HR-lQgpco!Vf9rBFdb8$NvaOA6gTsdk$Z zy_QM{tQmSSWg6ztY8YAm*xo*e;~aTXVt8TM+(8X2&K5Fgr&ZU~JkRL@qo8@Ztuun; zhKIo_c%g$%O374-bIeM!l@@f}gd5}=XlUi-(kHl1Tj$8|eNTp%{4Q*sqRgI#27};1h;oUBxkg!4noz(4WH}c`Ms2j+{Wz)fX+yNfYgd&(rNpA?-C>S&RvuWMlbYDXiSt?%%)vd$Bmg z%F4=#Q)6U^Wzi1Uw^(~2TlIqn4^9z0GZ@W%cPk^7$Vr|*e{Opr z!#;E7r=27{p~=z(jmii|O4x8SClV?Z5!KbzwHpFj3Jr9Be}6}9ZS7)`9uY;y{3*x# znTkVAth_`j75U2L%Nq*OsyjP6Hj&JfY@uai6LhLktZZsWDsP6i?pwEReF?#cg#x;- zukUnSUEOlTqGOzaj3-g77Gl+D)(x4n;JFK>2eNPP-Y-ac$~BfTrc_8kHO+%Jd{0YQ zaxA>Fv-4d@=*)N6_FcNZp`oFb@FQ30_-y4gJvTWuY|>JMf?bw$mb>!VStgxg69;rm zVC7QSQW@d=F)Aa@7x{ec+GUVAn~$LF@BQazYu2nFnN=IG0x*OqrspZ;K}trHTuIrp zXZOUpb6?(>Pa{jv>9)2Xnwy%IT$4ygLf5L5VI%!+lj)sA@)5I$7S;@B&zW;nNEC~O7j7+9V3H%oGy(`Sr@ z?Lls;pmm;_7mA0tEy*e>AfP6vnMyz(iCop%weJUW5W1CvXzOR!5V d%l5AT0{|?sD|w&>zH0yg002ovPDHLkV1hED;0OQ! diff --git a/app/assets/images/admin/content_type/type_DownloadContent.png b/app/assets/images/admin/content_type/type_DownloadContent.png deleted file mode 100644 index 55e03b2c4a2ea4b3948e7e06ee45d2822d4ec0d2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3002 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 ws%QA(E`l6ICouEC@G^O#lD@ diff --git a/app/assets/images/admin/content_type/type_DynamicContent.png b/app/assets/images/admin/content_type/type_DynamicContent.png deleted file mode 100644 index ba3ea99d9ad2acf7e8770977339f82a363826a37..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3101 zcmV+&4C3>NP)7t$&zd10G|2IDB@p(24Ass^P**l~-hlqgl2 zDpYEuN}-~vRHf>N1U_KmP}-0vEl!9^z{Djbr6t5BF^?prLA5ZL6cY<<9)9fZbk5eZ zy?cGneavfT6<=wzvorgc`OTUCJ@?#u?iiM3k;xKHF(zS8!k&aZS-t?U4ZEm(&WiZS zL=LtpSk)4x3y^o%61awBJ9h9^6v5{WHUil|AgfrrC3tT|0eq;i6#*Lp$c83pOR_Cg z=%K-8KpPsbh6FYbw1oi1UPFN%IBWrA3@r8;LqSF?!MdezF#?4iC~OXB1A!}AbYasl z(+G6Y1qcjyAg~e0Jiw;nHbX(Pc~H~Hx(s|E(0zq1kqj23Nxe5Y+t|kA6mQiBn4Hp@H9QAUT_QCHEa#g zF$#1J?1Sy?OXlBk#}iYhPOS;LK`}f${K1Lt?&oc(`P(?uBn3E0y~p&NP_M3lyMnC< znwAO&bP;UZwsq^5R;^zB^OBO1hOpxkw!|FTv*%A+o_gvh=P1Bq4E&U&0?i9-lhJ4v zG;P%Yy6DuYQ$MgZd840lp%`kV<>gv$Z|@5=H8ri{kjKWC6l38$=&pgA9<5piIt%&7 zPd-`E*Vp%IRaMo~VSxq~&XRM|rdc{?&YYjxz<>Y4#~z#E93yoH#+f_QV@xQZyyfk+JBoKznU3Fu=zs z=sXM0sW5|tjcIh8vFK1h`x)Ee0H-Zn(+Jsq+SU4 z(S-~e%Cu?I>W+7HH8WOiB5oj2wQg0*W+8Je+HM)nduZ+2H~jXadwP1vnKS=H2QJLJ z^;R->?p$AigMPo%+WPIMH*Na&xMhzbm8PFlUZyy(?MA|jK{UbJ4;&zE zZEfiOHEY(8>C+#0bMM|oNNCt3^6t8v64&%V(0~&}@B9G0d-ra*g~?blNos0pT!C(B zY00c_u$P+JT2IGx&w>Sy+b>7Q&ohNI-7O*?rRB=9C&a2D9__VKbU>$4DY$(}%l7Ts z)=7hg0_$Ea94gD-?c6zECsu-0l&EGSjTq+-i^jD&v)C2bZ_CQcR(Sj-n^M3 z9S!$4kWW7Tgj~9G3H|=enKQ|4x8Ft%|Mf6;|Aq}4JX!daD_8c;n>TOMxMs8ZolM8Vc`SRrt+&74-1% zaG;>QN(!_r|I*R1j8i%Cq{MKm*`i7^^QX``>#?<#fgSZyHGB5gI4&>>ny1@3ElBS0 zFz5w$djfaeeK%=rYzzgKSKYSjq=k~oQR@Dg8XgF@sqSXD0qsKr000qX&`^qti@$<^ zRvBsQ%Js{E4+CiYh;aZ2@H&Dh@Vj0?JLQenU%!{&!{VgfWpTyIk!#^FQpwFhpFMk) zoc;9EoNZm5YLyqbc@-5E#P)!M?jZfUbB41tA* z79M3mLxK0OJgwu9B9S1yy}hKf zvs1}sT)}ji!T-A{gM)*8943~kF~$`@8!TjJfz%3~zbcat_zwHM&j&t7hyh|HZIJ zNN#MK9uJ7dv~@L`9>JMeAcrN&prQEDJvK5ja)!wBDLs25q9n~UBn!DcfiOV(1>8Q* z_X#qJRaH(*MT=(PXDu7Dvix-OqFOGTKTpGE^DC7qN|9z0fo{`%kj4G|{hiQt6lLr7 zp$~Eq`G3D7y>JK1EB8SnEki7eHf7&p9d04WIu9Tojk%Xjf&HR*xYr8u>eZ`<2%Z^? z=Dxd?5ld7_zW3hIm%LaV1{}6M{P1_l;>F@V3fK>y!+yi7C-UyQhj)?OgeFTDw5m6P zLUxvQ>mK1uBN-f1#1Q#h>yTG*%oDWSC6Y1~*G=o!uG{_w-+ zzkc6+-YuM3&)07-b;?!_XrX0e0Xo&@x(GDf9jR5TSO24@r{@q1M)V5YYw@ekacF4h zoo_w(;87w@M)hvlno^QE5XhWezrJyyThBx%mf}aOL*{|J`pPT6BDpEoSjL#rL;`*c zhNlO_PdR@4`1c{9v(Wu&`!4-;ZEbBU$xZd(rF$r+>AA_NVUw0(6zmLe$ee}IpM?q< zD#b)1(Zm5gCa`iTY^gWG`7$aa&Vl@L%a)ChIa`RJ?c=_<`PpZmAQNY8z$SnpL@_;2 zDGyT8qU1`-%P;@o&gIKj?DAW`gDjxa`}Y00xvA;VlM?Aj>sqxkYz}ZXb812wb)f+V z&~NSA_h@5N6P;2mN~_jRsrH&qZAdIUUI@S`(5Db<#w=QEvH-s(3czM$$O4DV*?2r& z6-ABSzyGZt+0t=>0?V`LG{^g}0)x!}HzgXL107P7fA-8XTchNqfY$+);r5o60Yo;E z1fLx(*eNg&IT6j!FhR#5b2f3yEgSPGD2ZfWI#}f zignOH#}IwSX0r@$LM{e2eTSG5PbJ1#k3pW{;`;i=va+&o_$e@ze^f0=?kSISYM;OP4Ksn-ha(D?WA!Y}QIY zrw3&#P2N0G+$llH#5q~B7Yb46ND46DMDpa%0**( zP(|RPnS^74eX3bmqVTUpb%rLNsvE*cKLg3bA@i&>3L) z0oixhE}*Nt8ZImwn-Ly+4b++gg^g66BJe8H@DoMYgs4rsFM1Y&?~ntBEwFNI-B7S* z*>h^x>G%mzd%i*8K43xdTv(ja!; rMX(C!1STJtJPCUe_GIx`{wu%$yr4|t=X?hG00000NkvXXu0mjfjMDQk diff --git a/app/assets/images/admin/content_type/type_EventContent.png b/app/assets/images/admin/content_type/type_EventContent.png deleted file mode 100644 index 38813d532447ad1cc8598aa7bc55397537ffdd37..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3225 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 diff --git a/app/assets/images/admin/content_type/type_HtmlContent.png b/app/assets/images/admin/content_type/type_HtmlContent.png deleted file mode 100644 index 4e5a2c0dde97600f525382d5204fd77043407463..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3349 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 c_J08e0EV8V{V#aG1poj5 diff --git a/app/assets/images/admin/content_type/type_ImgLinkContent.png b/app/assets/images/admin/content_type/type_ImgLinkContent.png deleted file mode 100644 index 2cbb5b7ff502ceea3d4c3734bb2ee617a594b36d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3064 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 Z1^}C(YI8y!7gGQL002ovPDHLkV1iaeBRv2B diff --git a/app/assets/images/admin/content_type/type_MapContent.png b/app/assets/images/admin/content_type/type_MapContent.png deleted file mode 100644 index 9abe80166dfc8bf1dcfa02b83431b89355ff424f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3401 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 diff --git a/app/assets/images/admin/content_type/type_TableContent.png b/app/assets/images/admin/content_type/type_TableContent.png deleted file mode 100644 index 730de834e79ce52075a16b05d17c657b9a9c8f76..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3028 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 W4yYk_6PMip0000&}00009a7bBm000XU z000XU0RWnu7ytkO8FWQhbW?9;ba!ELWdK2BZ(?O2No`?gWm08fWO;GPWjp`?3l~X5 zK~#9!?41p4)aDt-U;BK49c*lB#&g-xt#9o-#z}n&-?K_78FGRlV*>JlL#hZk4ux%;UopsSl*{NToVPS zogXV$R&&x1kaE}*xB}&M+{r6W1fMe47{~$!GK;q>gufLhfVUMkBVd65S>Ob%P+qeY zx^1u_&;rL^puk3fRxp5Zdt0DODTIszi+hj2AR`LlSc!fH3aS!2Pb;BIHiH&0a7i04 zY&~ch16{#Mk9N*h0herqi~=k&z9ukeHVUeYIVM84%F87iB?AU2>i!lHufgv}X*xE<^CWA&vh8~;?0_wsX z<2)TDC9p@zlr4gJEp}G`tF&CQ2sBDATsoleaUATrXP?bpvt~`%?Avbp-t_6ym$=>T zJV}zigFA%9zu*7S*)wNO{c_VL9|V}Rp)@`2 z4l)YdFl-LcE*)qXwsi8ui67owQnKFT@swK?g5JD&^V2UnJDXRmTzO6hH4GhxF%qK( zE+^9oG6b6uv|cJ=pxrUZAAE4+`{m^o+on#P`UAVV%frLN|2%#A)UKME^3cfZdPxb>8crVIT(BXpM#aw(1X`00$>;O! zQA4;#oCH~Kfk5D+!otEW2;gBtq$2amiI{|Z2$&8^oL4&?v}W1a*_Ay#J#WOE0}(li zlrbA%Dr`bmTtq?EPTVfg8subq(-3es0XW>FWu7+`4R|%cG>CfXaH}WYU^QqnAj7~f zUApv=4mb{af_Jk37n76^B1yUNqp@31ih8>*{9az0CMwcOm?Csgmwro`I< zL4LVpgfufgdIHroH4lrT=wUhewd>XrbvYakk8Vye^}435udRJhm6BEhXn{paXflF} zt26YQ-|s(W#_WnySNx8QjC9SJGe;Bn5hywdLgOaHs6=FpLa-8|#?^O>XV98WnKI=r zHSWG0(Wwyu``Q+&jF6UyjecoG#quBVoVePJhbgB_Hts4eW`6Je4?OUox_g%aG^Kw-rL-YriAG|k1^`Rc-Ft+_k*e9Efrc?oN-{GuOO0G; zszLLb$KzSdIMixdrzQ@5W8=O%Sfh}bsWB^vL?T*u7^IVFQOO&xzkd6cty{msjEztu z5{a>KM0$A9{GtNhliu|F^B`SwFBdFWkgx813=JX@I?t$I!tFBm&O4Wlr>KKw^9l=> z7?BSi*aE@BCk$u~KG>e5ZF!I}(7$SEa15oFw{PdY2Hpkw%nc+<%ACOK(HGh-j2CYv z{V%D3s7W)yNS>_#dMcd4;fW4!&L+ybBbZQCi`W0Ro z!Q~k$(J!A!kq3&2!s?8ofe#(qzUuA0IFUg2_Vj!P@R?@Ri3*A;-tEMsZQM9$krzk*Y)tK0asEXzX^!K>Bly!pcB&EEp{ zd`d3Zq|Dec=)=RqpHBpx9vT|z0GL&*ta2hTcr+@(b8K;VAP~6d@pvj&LG#|aPO<9) z0~Y~0^+RTDC|RQsefDhJ7k%={KmIlmIwT*f1~B#v@z#Knz0x@ z4)~QTR}N=pW-dv0(9y;4PXhGHRejnXbDADccU>V!$ymbuhpnw!wc9V&@l|O;=>lBm z(WuZaf*F9~9#7`-Yz%N27n#IvMGd$b629g{&{_!$$fIGeCU#!BF0efW~*Zc1uE-5dscrhz0Yq5>J z!j8Y6J^R{|)z$xkfQASjt(f7}X2I6qA#lEl3!rQIjU699cI@7}OG;{{O`CSVRgiDo zxN%l1HTTG>Rc)BaDME;$O#z)0Y>amUikC~6W7qHY>?x>NzWkxQyu2ziW_^OeptrBD z@93E`AD^zTf8iU*W5WPnR8hfbbkc>*ldcR;DR>Llk;0V(jjPG}i)Wshv2NYEWzq7W zOI7&!k|gDk8aoy4w`z#_*?;{0ORcS~T6xexfUduak_u8uIa5HJ0-FIisgkgZ@IO*k z7914;OjLx5l1RmH6{|o4VA5iEXcZOegk(bWLM!K-P?HJZ>t`zj=n;UP)>8;^v| diff --git a/app/assets/images/admin/content_type/type_TitleContent.png b/app/assets/images/admin/content_type/type_TitleContent.png deleted file mode 100644 index df0eb525899b0ef5242a24b6e54e6f3076c82a04..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3047 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 diff --git a/app/assets/images/admin/dashboard/icones_folders.png b/app/assets/images/admin/dashboard/icones_folders.png deleted file mode 100644 index 9bb4e48181cc3d5d03c4b47c43b55ce0f084d4a1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3137 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 diff --git a/app/assets/images/admin/dashboard/icones_menu_items.png b/app/assets/images/admin/dashboard/icones_menu_items.png deleted file mode 100644 index 465345af2114e5b288f1f69a08508c7f91a36c4f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1447 zcmaKsdpOg39LJYjYAz?oEmjU982Yd8<-LSt(# zp}907$F0~Z!g^{h%OyFqhTKw`+xbm;p7YoFXM`eH6AS`@ z6p<(GT>-6=)Gk@zwds-l4UpZJPkKdxK=LY*+5yVHqYgARhz@9?TSPE1CV+qg!Ga>r z;|?J40UIJ3T8&yoG>BU?c-X{u5(zGD9Dx6tTV{n@T0Yz z_w>@KiNva?&EI>i5vg>&bb-8b!;?eA%X|fcbS}S#GwXNNS?*@|_CLOkou%vAS{(Zx(5eWh#>y)LX zD0xmFI#N;1Glh~K5$)rf`L3dx#i|BdNAlQgD6Z3q!!PH&t;)C*85qbm7D|_vm393^ z8Nd*`eSF?zP_r%&2=Eta%+aAC41_2>F%dXvF=3K<=u31&wO{${(^n8m@lcp?sA0xp ztEYibX!uDedSx|B)k?4w zMQ_(S7ar>dy%yfVR1`m)nnyV|P?fZZ%oP%|GE7r~7@il&Rb9a2y&cG(xNGIRUq{ET z0iNPt((UH2q+9a74r8=)=XzFlX+4=hFc97ni{l(WT%vIBLSWIK*YA%!sWm zW#j!6zp`j8L%xaiP&?*GN;aWMg*Zs>&c)h^3<^wukxvXdd$HKGj=^}GCoywaTSo_B z7k!q)*2eJwGaGW=WxFq~2-{DzO)x{_t*xxCkj+b5Tm4YF>0f7NhIed2;^LZGsH%~D zzTr?~W8)TTp0}rG+0CGi*jVIekx1b5K(eJ<`#8QTAD562&Y03NJb0WOh{NOK&+*cd z3Td=@OG~8%?U^!uj^l0Tww@*1_FWDn_iSH=$abY*mzu_YCR|#)_mpeF}bcr zY@g-Uls>3xp4YHtkt$%37N<`OgL}0Hz-el4 zSMC#DaxL7D$d8BH+W`HRa6D;*@%4W}Ns0(Ar=B&xwTsPR$*8>BFB73tU z8tvHIBDjl7gJ;c8A8&W#xg1W3XN~K$NaTBugtYi0@BgYHv$p_+{lK&U8~w;^e_#eSlKm#;fIz`UGommEI@mE$W;9&k zl0oIE5el{TR0{< zc$Z{Kb$5jRjlL%3)T>uB2#6XRg-uhJ*&Ea63kAQ>tC_ol!e$@bik$z?8A(bd(Urfa n)JLi9G}=C@Bzk#1MMfQ@4?UV%A$nmBge(Z@;A~$7$5Q_VwOgu^ diff --git a/app/assets/images/admin/dashboard/icones_u.png b/app/assets/images/admin/dashboard/icones_u.png deleted file mode 100644 index 37aea41d1519a3388790eb06ad7a6f70602573d0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1339 zcma)+Yfw^Y9L7(r8R~e;E}D61)h(R~t%ar*p-yTD6`0p$SIWdomWnB3dJvtVQOhz~ zp~XxKml+*(wNi|YY{}dfT~Uu(Y7$zwiquM}q#L5{soZAv+kW`J&-1?Xf8KAu=RydD zXl=RK5&!^eQgC1>qLL4TGDl8)m-#M4EYgB$8317A@L^T~W#x{@qdOxw^auc?ZUcaf zTL3Vh3;+elJ!KXEUOfT;KLP+aqA_DPkblftNr7N^*6?5Its%}dK=Cq<`AV}_ee$P^ zXjyL|@i_izxfb&@t9GyYmFOIr08!(vz3vqYrEz?Pe!eTN>dS{ErYz3=h0NL7q_T%0 zCXLsA*!`p(2DKSHCjviOuK9{JvtF^N%`4U(+52ccK1L9G@ZWS>OpB|^*Z-#c&6tW( za+u$ew9J7COPz~iMXbs>gR@A3*W<|PLxidx)3HuZDQW4{ag0SC^^l{7v;g2ARLrP zN??!tNh<00Wb#cXBun?~UGJXWoqd=;u`4OTnUJ@MN9&80sOI+dY``p!fVk2A^$h;| zciA`c!h_)0hTj99a9zntp7=(VYRh<*&y~@ePVH?SKd3SlDbv5Xb$KqAU%7_QxZYEe zW0sp) z9-V6o+OqV~n%d$9>fjWss`E(z?6IWgSrVJaZO;CR4$UoE2<{%UG16bo?wd+eMY>dB z*PdyNmw;4Dq9h3Vr7`YY4N3W)!JX0;C!U5;^(njYVY8z3I-Oka{Qz&TrPT#&M${}u*tW-!FExJTJ zm?aQ99ZJoIDqJ_4EmO;BN^V2U?bv)(1XL{!GA`IrL7u0MAkWr4f3}(vcDc6N*^9V4RkPI3ZTMD4ti8u85Uq7E zJa7TQLH!_Cn>(FuA)#Vz z2&!e%*;8IaMc0#;EW!uyRuCKdjsP(edjwy61~Qp9E_SSJMd6bb-uGk22?W0|cmrG5 zi2G`XS;`-)5Nu;?7DF+Yhn*@vL67hs@b2fk0kG*sgI3#A8CCqXb!ot-N?3s(g#Skm km=&+I$mc@&Pa6B44eZgF@lFWjen{~Fq##OQ!+{v?KNKc%O8@`> diff --git a/app/assets/images/admin/default_image.png b/app/assets/images/admin/default_image.png deleted file mode 100644 index a2f6d995ebf1fcc861b3aec016558a817eab917e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6483 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 C%zuFZ diff --git a/app/assets/images/admin/pbar-ani.gif b/app/assets/images/admin/pbar-ani.gif deleted file mode 100755 index cb59a04f909a30094fc0f1c15271cf1eeacc6bd2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7970 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 GZ~qHVLrA>< diff --git a/app/assets/images/admin/rte-sf437e1403c.png b/app/assets/images/admin/rte-sf437e1403c.png deleted file mode 100644 index 74cdd8bac29437c3154a001ed0a7066069289eff..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1145 zcmV-<1cv*GP)wTYdztJgM^j*%q_dDnPdCv1b=e;)3|NGgA zw1En$Lb}$O_gCojrG@mLF)VqqfgePp#*O>&^m6h3)b$(qN;dTP&ipT~c}YawY0?55x{!h`2F z+Rr8@pV)oF-7{7>gJx65W&soHI0NzjBmky2KR)rw)!rINiVY$%7C`C7ab8SwJOzS^$!}%vL+6X7wk- z?PJrjQ1Y-$FmS@vF~EY~nEwx-`i5?`o7TJ_86ul$hE?D#f-f=gysFpJUh{eg2xd5@ zN7M#p5f#n5Pype0R=@V-2Wn2z+sH5o84~UVKQ&(wG#Yku>~4xj-lRPyfF;2nc(MaP z8K43zjW8N}GOw55Ydfs;J_43A^%oV9OImy-Wu`{R<-IuuO!o}uk<33LKt z?+gub*QB<{wAJ9m@i@#7p5vuw+2ABHD4=&RCn`6}!)6kNrBOP>)8ev~$HxfMKq3md z3Zrl!)KaP|5!K2 zIZabAKhI1_9r86m0l6kiF-s$5wb0Ji`~m|jId05t1xkYy7gB61t)Z8#FuzDgm{7}C zAJR^cjC7Xj7mBUCMbeQj(Ke2Lm>y!Ig6p6m#i|vdqovD|%t}3LxE!I6IOfAx3}DUR zqz4=>eP?b~Qd%jAm@AOjfj$eI5siZy5ztWgE4QMvyd{DG+an-A!Q8f;ssO#-EuW-X z3rljMLo4eN?Xm_dzO6r@Db!!i-_Q=dRRA?@*$6o-*pd26Ppn0?cjxxmen8_u9jFyp zVorqQ2K;zbTLgG_@0~@eQ&PFjR3Oj*TBcFN;$SWfx_joQQ?}kY70J~USsY`=+fApLo zwS{tMU(L;GX7SUdMKpm zYc)u*MAy)Q)r*pdJ9$ho`o!f8Nw?qR_8SDT59j^{H{A}(%xI8`00000 LNkvXXu0mjfU!XL* diff --git a/app/assets/images/admin/spr_toolbar_icons_r1.png b/app/assets/images/admin/spr_toolbar_icons_r1.png deleted file mode 100644 index 881b7047c898b425504fd196c987434579f4826d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2119 zcmaJ?c~Fzr77q!sLkP$cwm=9$)(9vTg|ZhjE=d6wYGR_HpCN$ALr@>sAXa2ktVk=H z5f!DNETt|4H7-EFR4J5d1A&M!+S;diNW?D~ENV@Y2fmx#gOmVxhPf`j#bPHPDUgT2jMn;gHeumC6j$Nc^M{~oonvclu> zj*gBr8qLPWCMYNdECK@q zp~S$zz|GAKi^V!SJ6l>>0<5>Uw}*!ZAiKD@1Ox=YmO`QU`uZ+fw8+cL3${>BBofJF zvXPO|k|j$Z3OEn~9M}RNwD9!wB#}ta5um74s=2wjv9YnMtLtCPp%;LMd^GSO9}Hlj z77W0F-hT~1fCfa}-Q8hKn0N8w#n8^g!~_TfICKYOIEO7%!3teqIyeLlpoWi+4f?l2$K~P?= zR;^a^9`VFHwU*bb=82(^OfS&u^#TE8>7@v&?d7S(JgrtM_)~yN5eR^Wy;=a&epsIJ z1TsC`7sv>Nfh{6ML2951J(1@K3=aH3YV<9NA_xp_ZEX$1g0LX6larJ5Ez+5ykh9rv zWo#K+*~Maa$Wat!v*k(_3vQ%K$&#XooZX>RD&ZM$N4YAMihEV1y2|BpRULA+BBfI< zm%~vPOWDDevwmi&xLj73@~VoU$@j{`7 zgl7mPA`(q0%o2$hq@hR=i353}NR2R3!x4%&BD_Y(A<-BlJO?m@BF&J9Ba}pPA~_n8 zBvOKxFd&=5;oxa_4NW67dG@9dgE8!;$3-Xa-THEDL#3b8zIdu#o|iF{fjmG=fS%&{kq>{WN7a8swWHiV;7P*SgvyN- z#a6RKo8|yq#Ml2G2r)al)uWFXG=!medj3&)Dv`pUCs8!M~pQ?J_`IPbpb7P4}e z4O9BuA&@oj-PO$T{;d9^uJ0IUvoTx9wbxYFm|m_&^aJK~fnwC=@yK~eJpi@Qwuty=+4ni{P3j=y*>JUlHHkX z`be=`Wt`tbU9qz$^Ap1r%R}!e%tnR{DXJ1`?54)TJNKKsO?x{0irCERSt6FZuY(@^ zt=a4#**z^K=(rD`9FS}=Rhae1Z_~exJ3Jb7Q6kc#w$*2+U8U3I!+Qru_=d=x%j{dn zucd8l?;mW{grP%KUx&XYJZ+>*QHW(a%*mKDWdz!*mbjVs1K)V+rq0o;(7_WvNzJ2m z)rD?#Ya9PzZ*a^-$BexjjbAu16#1IJMi$0AdVZj&YB!f2mz3d{+1)C@ir8KskMVLa zxR5bffZAn+hR%jKYIyz+E|v-42+%5eH-`IYf|%G~sx#0V#4 ze6I(2_1>1@>vLn1HwsjJm$vAp>%(%AC({b%8@d=qOsd-v?%@lX$^Ca4y2awqJ$SbQ z-(_c}{bjyi4K@w0zHf27Pg#9F!@e<}Aw#;}9riZ8@z1v}C22_uH*e&BpAbv?qUQDw z)@F(Hmd|GH9`{;<%JjM!ofe%|*_}Bs|ELbrWjyfw@Z;%#Ee|5HN_x+?hC6lFL|0UV zSs#-%2&3D~-;2yI531c8=O3&;7}!(5ywLEnk+L&rd*9TE0n2-^Bx~VaIYxQqms4LY zJ9p?|+Wg#=Th*K1qzH546RJ$=Ox-=Ix~Wxztb8_g_kJpl;MvmJv!}hy&0s@m@^O!I zX}HkXQ>vInqPp;X!5qgB#De3rT(H_?F-v-Ihe1c{6Q-20Vy9wY=usP6M)O{K^7P^(>hYhS zRGBv0RvHz#<~6vzC@VYKPpEkIXYeudFQPTZV)W%}wM;kPTWYIQjWn$>#Ze63G+&zM u;Q1lNR);W;@*2y(WOiHJUHU&?g%ZQg#%0*v?XURoZ%>b3AJ-PcE&2}w$5TlF diff --git a/app/assets/images/fond.jpg b/app/assets/images/fond.jpg new file mode 100644 index 0000000000000000000000000000000000000000..23856bc907291f7c4fa66cd9cf9e502796af79ac GIT binary patch literal 12526 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 MtT&H(g^9lNS6<41^Z)<= literal 0 HcmV?d00001 diff --git a/app/assets/images/front/background.png b/app/assets/images/front/background.png deleted file mode 100644 index f24bf21f52c5fa26da4dad20e7c8120c71158977..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 56324 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]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 diff --git a/app/assets/images/front/fleche.png b/app/assets/images/front/fleche.png deleted file mode 100644 index db4bd803a9c88c5bccc5b2e4aef5283251b917fa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 791 zcmV+y1L*vTP)B8^SZLQ}*G8o>x+p@?=7D^Uv(L}C}Tun34)L@QB9DT0WdM9C#*e%zhq z-M;lR^WKYR=k4)sf6RPmzB@nGZ*MiC_pT|D+;YxM@SS!xqH_pBFE|lzTS*dEju@kp zG);ec@9Wjt$TQC7LI`hS%v_dbF7gQmycY~9KDsOf1ES|7%R&R;2epO)82GvuS@s6< zIY^C2VzYT=u2d?VNivSo;_uGphze>$qfMr1oV<%!-1S-xpNP@#^}6Ocf#xYFJ!$Q% z4;zE($U4&u-+T3<3_|GTOkyCe4 z;eHAvKtW}b(0tn7**Kt^{ndlt@p6vkih}eSIufN0PAsx&MFSEonr9kKdGzh;=b9=G z4If@*nu6hqmm-MfjO%dE==z2VEr*gUvb~D;Z9PZt2(sre8&|KPM+{W)e+Th6%Jc#Q zW9GmOFsijfU!ZoDZ9g8`ewOm35*I~wtUJOjK* zD(B0rq*#lVeE(0X)+nAjWxBk3&(_9u!1G@6ZqZn!R``-x1Ly%@F6Azf-{n5K*O1?( zIMY(EN1ml9ODlH%TL>-yeBB3}W4ec|VwFWTD$BHzYOm+b&i@wlXXxoyC6KDR%=7?x zk~akmsjmEy5GRGTO#~O|q@});%u6NHX7wTLB3$&t+&(Sb(rArJj;_jFaWh5 VZmSPq>3;wK002ovPDHLkV1oOZbOita diff --git a/app/assets/images/front/go_top.png b/app/assets/images/front/go_top.png deleted file mode 100644 index 0707e040150084ce05bedb2bade4aa89166f1ea9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1474 zcmV;z1wHzSP)`j-ykI7*k5E-0-iU4%+#NvWr_kDsT{UO;~+9pq)KO`$LTQ0Zf(OG?X13x+lkycOS{ z6Oe1AZKZXkEu}Zp1csjen$mSZaTwRFKsNyCO6i5tCcJGT!4zTe6NHRyp^)5y5};G1 zmy-sDLglZVfP~2^w4wAEVK!DUO8~MiCPN+}e7^zE?Kr?}D&0jjnIxfH^b{U+fc%qc zkuj+7ivtm&dUJHULp&D^io-YY1PZp0nL1^`vy=Dl^ zirn-aftoKT542kg+pEn|3sUy5N_H{+%+O9qYT+ZOqm&hp% zLntM5oTE0d6|@c}qmec|=Nm)bA=?TPUEgBLMS5u38ioexW@^#!={rnb}&(piKa zMp?qhV#-ApV7Q6L>8^U!=WTH^5O*hkmTKF97%!V?tka z7|OJUvyCs}1>*cELa2~oeFy7!fYS>!rqzt={}z^#aqd!t@oTK#eo52cpd0 zvyM})!U|6q7=rS7Mxc{c{V}bL-zb9G7k7T@&pZc-iV)9z33&4alLK(9i420V==A->S0_#gRTu|9v-=?}0JokEY0pmBm1uX&+=|g<#CQlly<06^15iYr$ cX#6k00M-dn0@3H&Z2$lO07*qoM6N<$f*EJI-v9sr diff --git a/app/assets/images/front/logo.png b/app/assets/images/front/logo.png deleted file mode 100644 index d36bcef532250758c1c75713c760cefa70e05ae2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 30968 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 Tt@p8Ai*a-`4K!-i9OC~Ec*H*4 diff --git a/app/assets/images/front/logo_fade.png b/app/assets/images/front/logo_fade.png deleted file mode 100644 index d7beece3788ee75d552c1e79f3b805f1b8a5df14..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 64535 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 diff --git a/app/assets/images/front/pagination.png b/app/assets/images/front/pagination.png deleted file mode 100755 index ee77798ad765fcef17b7e939a29842dcbfc1b9ef..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 706 zcmV;z0zLhSP)X1^@s61#ZvJ00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFHCjbC*uK)n|Yybd;O#lFG^8f(q!Ta#KfWR`;3i^;dvg8 z;{cGRX(3j|m=8ch0Vt(rf*`>2Jd{!hApp=?Q>|7>k_6Xv-;_gFt5u=3#&Mi789)eu z<2V>&P)bz*B*4_vl>MEJg(;Jhlf6=~w6t_;ttCxU2KSQZIo4W)5Y+4S?x3ynCnqPT z$H&LYbzP*C<hS#hTwh;bBc)_~e4K@ag=lni^d0c| z#p0ghHP8a)fdn`MJ_46RoBk)3f*@FyQtk>N=7A*3va>A9_IthFFiT+=?kS}Xj4|cV z)>&BQbp6B7Z?h7>HI3|wc^x@%QE{dWjmPSTK4yBa%zK_=WMTcjx z(pvXf0%j_e3P0mf+}2v8lzo<5*A-hOMkL>dV0FgQnT4S&9V$@?GQ^@ zmf<)KJ3BkwQn0zX+1}dPN(%t3wG?lFcDsGQxVZSftnz$XM@L7=_V#wZva*t|uCC_I oW;4IIxcHvu`P(Az|FiUC0Cl<<+wtxeK>z>%07*qoM6N<$f>ifR)c^nh diff --git a/app/assets/images/front/slider_shadow.png b/app/assets/images/front/slider_shadow.png deleted file mode 100644 index 769187c9036c1ed7eeab6927cdea8f6d30c329c0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3630 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 I#$(j~0n->4jQ{`u literal 0 HcmV?d00001 diff --git a/app/assets/images/miniature.png b/app/assets/images/miniature.png new file mode 100644 index 0000000000000000000000000000000000000000..d48724852c919b7a80220d359539a5e0414cbbc2 GIT binary patch literal 476 zcmeAS@N?(olHy`uVBq!ia0vp^CxCbw2OE%_edo9&km4-xh%9Dc;1&j9Muu5)B!Gen z$sR$z3=FxY3=G8!7#RNCWngGdVPGhD!NBk)gMq=oj)6g7!jm^MUokK+CV9FzhE&{o zb8{o_0Rs+(gA?{9REQ~uR%!Egm4pXN?$wZ)X(_I~%i8bRs#AT_?#yFgVPaxzY;bT; zP!JH{;9y~40%1Zz5S1vZFoa;{A*sR;0@?aQEA5ze12?*zdz6f8m+HTKXEAfNmUWRM z9`|9`%)x>ogkiG)2Zj*B3b>Pzgc|o(0;A&pe`bb*7x*Vn4UrQCav3~b{an^LB{Ts5 DXR2RL literal 0 HcmV?d00001 diff --git a/app/assets/images/rte-sf5bccc07eb.png b/app/assets/images/rte-sf5bccc07eb.png deleted file mode 100644 index 01ef181d861e636d7d2585d88186805892b170a7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3645 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 P00000NkvXXu0mjfiK6oO diff --git a/app/assets/images/rte/rte_blockquote.png b/app/assets/images/rte/rte_blockquote.png deleted file mode 100644 index 736cb9917339a76d5e0869ff010a92210cb4f3f1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 378 zcmeAS@N?(olHy`uVBq!ia0vp^k|4~%1|*NXY)uAIoCO|{#S9GG!XV7ZFl&wkNJWWj zL`iUdT1k0gQ7VIDN`6wRf@f}GdTLN=VoGJ<$y6H#21a&I7srr_TSse%P7n& zdtim?;%PkL-b_q?q-$zxc@k>W)sHh-Ti<3#F;!GN$k*7&$Y-!`_UzTn0kKSu-bzY` zSQ}=UGtA_gZJxiA;p!d+k46)Dhv0qkEfZy!gUsb$NQiVtY^Yeo*zvb9Lh#7PFJCkm zf<8LPRJ^$Gkl(^aui;p@f=JBI0I9SDMk#s8nwCra7hdpM=rXd2ZsJaGROmljx*&ly z=#Rr44xVf59#v*cwKa^(Rkg#`uxQqClq&i>cGIY3JS)E7$IKmdf7{qHHt03{Vo-i0 z>ELQ>#mC1dHd0hptqZ@q|7u1772!_M_U+c TW>5GB3^xW(S3j3^P6O< diff --git a/app/assets/images/rte/rte_bold.png b/app/assets/images/rte/rte_bold.png deleted file mode 100644 index e10d5d25d29fabb1c9fadf883bad7f15ab7a6b81..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 440 zcmV;p0Z0CcP)P000;W1^@s654Bdt00009a7bBm000XU z000XU0RWnu7ytkO8FWQhbW?9;ba!ELWdK2BZ(?O2No`?gWm08fWO;GPWjp`?0Yynf zK~#9!?3BSx!!Q(vmmPR8)!-tKr_TLAn85 zAmw|=NZbe{AP%wg^x2N}{@Cxg)qcOXe!JP$AGAi~|A`!wS=8;Gctue}IMIbI_yR}p zRU%EFb)}v3dZ(^ZDzR-_=)!Aw4974coXW>VvVgEimaSG#IgHI%zJ=>`dRtkvkd_>*0IQ*URN&R7Xv6j%N#7umd|n)4#&rK`rhgSsM;#vpY4P-!oK4B5Yjd)UlID z3O$|P#2<4A<)2)qE8loY!uk7y!G#n(HZ{2vx4{V}$m@8!LK05+a}RFd#@zlPI|^&F iaP!nRB0p+x0t^5VPMK?`NLP3O0000j%jv*Dd-h>_$Y%&l~k^DVD z=*0nxPh$2;sS!*|GuR&p+bjI><=n`e%W$Xo!|FMQZRb2poAGqwn|pbE3wEvhtm0jL z$dt2Y?ad3Vi95V*Z!d`)_i9xT{ZB^Ui zd?HftE7QN#+H2RIP;9>8(9+^1$XIm2{mBxU9}4v%M{jysMihKXmn{-myRy1!t5Wh@yTmp9JxtHpkG(d?xzz1$@#@l{ixvx==luBbX1^@s6D=Y3@00009a7bBm000XU z000XU0RWnu7ytkO8FWQhbW?9;ba!ELWdK2BZ(?O2No`?gWm08fWO;GPWjp`?0dh%1 zK~#9!>{LxogFqDKZ^2Hy0XMKG5EfFQu>q}Jizkp9*dyo-a9wL)Q&Vf&V%-~0Al`rr z0Di9-64Nvk8oQE7zVPPFoAusW9=L835bbHkEqwXP+3wBM?tOtaA&i5{Ofokvd80R z2P7)3Gu%RL2vQ$vgN+18@Wsq~V1Oja+PcF?IYvUn1A<|kkl$wDHxh`Vc+IN0p^of! z&sNfj$Z>211V?OrHQ*~0yV$G1^}qpZZ^53TuKHw0V9 bj{pMz5N{4j^`n%O00000NkvXXu0mjfzP-&W diff --git a/app/assets/images/rte/rte_italic.png b/app/assets/images/rte/rte_italic.png deleted file mode 100644 index c8f89602153324ae110fe429b8be98a524e1b2fc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 340 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjoCO|{#S9GG!XV7ZFl!D-g=C3q zL`iUdT1k0gQ7VIDN`6wRf@f}GdTLN=VoGJ<$y6JlqKBR?jv*DdlK%YvZ_ljDD9qe@ za0M$1Blk)v8JRcC|Nj0qXPjZd#3yf8)cDFSAtl8pAt`AR`z84dAs2_k+zoBga#kfj z7z6nhmD(w2^4ZwjVQqNG-_^`q{q0Sy!&QY(-@b7%u$^U25ID>Jh+&mlu)Tde^MZ$b z4$a~WnE^I33b$@Auuu?VuHAU>^y$ycnpHDAd>j?#%PjEpbP0l+XkKKVWj& diff --git a/app/assets/images/rte/rte_justify.png b/app/assets/images/rte/rte_justify.png deleted file mode 100644 index 5afe18a4f357da51f5966b7016f8780d06ab13fa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 266 zcmeAS@N?(olHy`uVBq!ia0vp^l0YoM!3HGxw}u@9Qk(@Ik;M!Q+`=Ht$S`Y;1V~kh zYeY$Kep*R+Vo@rCV@iHfs)A>3VtQ&&YGO)d;mK4RprYxXE{-7;x03$+|8LK{mQk2l z_P`2N6-F@$WgVR_Oa_84nuQMSum3OMU}7abUuM>>?sh&|vjZDiCQcN5Xsf2SL9N8h z&a$NRL_^^XmBdMpT5kMUsNvVqJO84E<;C`$FflVU+1c&z zrr^hiiToD2jYl~(avT|!2#THCapc0&0>)z(UzMjsF$p9v{M_Q`VO-6$6zD_-Pgg&e IbxsLQ0Iw)oAOHXW diff --git a/app/assets/images/rte/rte_justify_center.png b/app/assets/images/rte/rte_justify_center.png deleted file mode 100644 index 7caab5474702cf375c8d9f1daa89d121cd8c1b9b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 285 zcmeAS@N?(olHy`uVBq!ia0vp^l0YoM!3HGxw}u@9Qk(@Ik;M!Q+`=Ht$S`Y;1V~kh zYeY$Kep*R+Vo@rCV@iHfs)A>3VtQ&&YGO)d;mK4RprTctE{-7;x88)_=50{mS#qSd zL?SUE)`6XAi`owj)+f&PQ@lMI!)C=*3(hHilz`#g=e`@ytysIphCRyg7>Aqv8n;cJNyYJ8EB4>7 dSBqqkV9-x{-`Xq3vK{DZ22WQ%mvv4FO#l%LY_k9W diff --git a/app/assets/images/rte/rte_justify_left.png b/app/assets/images/rte/rte_justify_left.png deleted file mode 100644 index 87934dea3a1ed14218a0b9f8f4afd0a5aa4b1384..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 251 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjoCO|{#S9GG!XV7ZFl!D-g=C3q zL`iUdT1k0gQ7VIDN`6wRf@f}GdTLN=VoGJ<$y6Jlq7F|N$B>F!Nq_$Tw`bO66lU%{ zxPq01k-JAwOstAg;^D6a9{<0;muK#9OMg7sIk^1eg@uRNG{g*yjFk2qJ;HLW;oLFx z_H}%D?3VtQ&&YGO)d;mK4RprUe57srr_TSse%P7n& zdtimC3Zt0B;cM5PF)1rAwi7TuU?40k>}bZfvwL;;dcy-BI5(+r=`tjz9I(ilWWa6a z_~b_;D`V%Eqo&!{q#k_btdf}Q+&{s>@w|RZ6I;8?x0)v1{Sz_|X4pxdRbOoSIAJS` b!T|bP0l+XkKtl&!c diff --git a/app/assets/images/rte/rte_link.png b/app/assets/images/rte/rte_link.png deleted file mode 100644 index 1819a6155d4ef13733740bb12ab9532f3e9fc81d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 571 zcmV-B0>u4^P)P000>X1^@s6#OZ}&00009a7bBm000XU z000XU0RWnu7ytkO8FWQhbW?9;ba!ELWdK2BZ(?O2No`?gWm08fWO;GPWjp`?0mw;2 zK~#9!>{c;P!cY)yivbb?^dGDwMD-ekMBv7 z$>bgugmI>6UL%}uw_lB=fTU8g4F&_f-|s6FOD6YKic>W(_B$Z} zB&Yox3BS_m14>-79zQgj&mATZSx$;jk_qlN$@h3X6`V^p`c%gf2G1nZ0!+k=d-wT# zTL{kp+-`T#>-COy)=g&zhwa>Vqh3o&525TpSLEXUt;-$s}7R z=PjP2i9}olbtM8@28i7aSz|=C(RaBF5c?$-Fh*vLW|L`wdDNH7HwKdCtUC!30Pcv+ zExMmZN`!1E-W%^ruKDAkheN40vVE&8*-ul`83VtQ&&YGO)d;mK4RprTWrE{-7;x03$+|8LK{mQk2l z_P`3&=JP^gC5-v`>sjOX*VQWM>Fs-Pe}BDn!%Ba7590;{4OO8e=bz&IvQ{|_m(}mw zxx?KsqjBQIiH)6|oPNTm+dh8$#j@fB(}hXw+F@&I7@kN4DDRMH_f0#(p=WM>ofT+Q zy@IN$>(-9r8(O-%y%{`e8(h^qgge+6lWrK;#mz4$DDYv3G?M!0;<{(|?%RwBNAf33 znR3VBbjN>&B_b;%KPH4LJpS;(fVsrb%kXi=S8F3(Mh*jpI004dDxb42fWBhzboFyt I=akR{0E~xlx&QzG diff --git a/app/assets/images/rte/rte_strong.png b/app/assets/images/rte/rte_strong.png deleted file mode 100644 index 0960a97f4b8de1521bacb1861fd1245d746e2842..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 497 zcmV{U@t!axw+ZTyELa0BZJEc}RA!d5=yPmh2nfg|7_{#9BLgVct4faL~wgL;A1 zH>6D#t-vPmW7uRevzeWF-JLg6o~9`~D>Gr6;IGo85J$1250COsRfXM(15$6ftMvR6%a{% nLIaPUP5TDNAI|>(_!eLQf#vl79yW|B00000NkvXXu0mjfyAjUt diff --git a/app/assets/images/rte/rte_sub.png b/app/assets/images/rte/rte_sub.png deleted file mode 100644 index 8b113da20c4d938a813e0613be23cc302d6c67e9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 508 zcmVP000>X1^@s6#OZ}&00009a7bBm000XU z000XU0RWnu7ytkO8FWQhbW?9;ba!ELWdK2BZ(?O2No`?gWm08fWO;GPWjp`?0f|XO zK~#9!>{Uxr!axwshXc$J<_6+kBtjWP5Q9j`&Kw~(@Cf1w^a99Og$3fmMA$ptAV&xX zfcTmUyPzfnH#k*Y-P1FfmpA=7QNu7)wmmfE55_;pj)LUklC|0?TPzlNm;s54@%UA) z){4bLjyy*wCzENAnu)5aOw%+6c7s@$<}ssusdPknNo$z0jhGAu&pw<5Mi21Uc=Im2 zjl%_E;d$?NlIv2x>-c)T#<1?<;62zAVveiJXIgkL3UFP-K!Kejwzi@!0>I(32&kJm zNV92Cp#>EhK%c~>T0OCof~>7cyM0MArh54OzOWjNGm`WN?T6nV4o9+FF0uK1PWff+ z)=4@Rq|>>g2L;v$i1&Jr%ZCBvV1A4I4Bi2N1> zBW_=Alh4Iy^s%vCSok#=< yEC86yj0qIT!QeiczD3@H8JRNKy+7lZ00RI4f)Y&mOY%Da0000P000>X1^@s6#OZ}&00009a7bBm000XU z000XU0RWnu7ytkO8FWQhbW?9;ba!ELWdK2BZ(?O2No`?gWm08fWO;GPWjp`?0e4A6 zK~#9!?3G(i!ax*;JFV}|64-&=fTev9i%6JAEU(>xT>`8?cHp=I3l)P8NDaPQcTiU# zE}$*{A!v+=m+EMuVUm+G49xk?<)6TcqR@VN>Dn)>{{z|h>cv`Zhi6$P^E|J>rJE75gb7=|&2@4{CYV}0fALg17DlgU*GAL27t-mcN;B7On1;biGbTz8kF@8(Ca zMq|%MB`GQ@2f;;&9zWpnEkO3ux#QTPTD1zx+Ftfwh?Y-PjK`P$dx@~OUOZ(8<(%OA zdw3JZu}|QG=`@y}cPOB$GuSoGGhAada0EaK8UXh_?9smFU07*qoM6N<$g0l+I@&Et; diff --git a/app/assets/images/rte/rte_underline.png b/app/assets/images/rte/rte_underline.png deleted file mode 100644 index 9e5123f53362216ed3fbf6f4e4300b1e1a2ea5f9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 503 zcmVP000;W1^@s654Bdt00009a7bBm000XU z000XU0RWnu7ytkO8FWQhbW?9;ba!ELWdK2BZ(?O2No`?gWm08fWO;GPWjp`?0fb3J zK~#9!>{iij!Y~kx6aJeGNGE_!fK^mfqy|xnR6a8T-JsooY`_KtQHhF#VoC>K1aHuE z021CIBOwGLV9HldI-TRY`1$Uhov<`bjlUMtxPV*)BzH`3xqRy+Ny1TLvI2HKn|;TJ z-eXyMQmNe8h@(Xd&^`bRSPpvy>jS8*l}WXF@0g}3Xko~86piKD$9XBhe5~CQ#u$g@ z0n`n{NN)M&nAh(K7U3!jvBTF@KJ83m+AXYy(%GB7@%U3tCPHdAzE*RIO%sa4u78P9 zL;{Q@+3gaZ%q{@c5!Zp{6|)QlO4bKZTN`98uKQ3#ysgd(X-NUy0BC*|kR9|E3g~4t z3Ogq^zS(?o8jVM14=DuHI7H(t?DDXPw~yWg0u8i46n*Q+$lfA@hxrox{&4sqwGN{y zM*(&J0Z?C2mt&4D$+yAa{q-yqZnd6^>O!;?bqOfw^@2DHLD(g}jJXW#THU~l#bTwK tF!Nq_$Tw`bO66lU%{ zxPp~ApOM?>`0d-T|DT_4FZu1w&C?QMVpR|B@2~&naE8GvQ$cEOuk*Xd3!U3pH$)vc zcaAUJ*vQDpz|hf#<5EwruLobwxePmr-X|A5*dwf21$9Zx4UK4YZcQ M)78&qol`;+0GZ!Rs{jB1 diff --git a/app/assets/javascripts/admin.js b/app/assets/javascripts/admin.js index 58302d7..c42ce13 100644 --- a/app/assets/javascripts/admin.js +++ b/app/assets/javascripts/admin.js @@ -1,19 +1,143 @@ /* -*= require ./shared/jquery.js -*= require ./shared/jquery-ui.js -*= require ./shared/jquery.strings.js -*= require ./shared/jquery.utils.js -*= require ./shared/ui.timepickr.js -*= require ./shared/modernizr.custom.39712.js - -*= require jquery_ujs -*=require_tree ./admin -*=require_tree ./wysihtml5 +*= require ./shared/ajquery.ui.widget +*= require ./shared/jquery.fileupload +*= require ./shared/ace.js +*= require ./shared/mode-markdown.js +*= require ./shared/theme-textmate.js */ + +var editor = new Array(); + +function init_portfolio_images(){ + + $(".message_form").find(".images .portfolio_image").click(function(){ + + var src; + src = $(this).data("src"); + + r= $(this).closest(".message_form").find("textarea.markdown").data("id"); + editor[r].focus(); + editor[r].insert("\n\n![]()\n\n"); + editor[r].focus(); + + + + + return false; + + + }); +} + +function init_markdown(){ +$("textarea.markdown").each(function(){ + var r; + var ed; + + + + r = Math.floor((Math.random()*1000)+1); + + $(this).data("id", r); + $(this).removeClass("markdown"); + + $(this).attr("id", r+"-textarea"); + $(this).after('

    '); + $(this).after('
    bla
    '); + + + + + editor[r] = ace.edit(r+"-editor"); + editor[r].setTheme("ace/theme/textmate"); + editor[r].getSession().setMode("ace/mode/markdown"); + + editor[r].setPrintMarginColumn(0); + + editor[r].session.setUseWrapMode(true); + + + + + + + editor[r].setHighlightActiveLine(false); + + editor[r].renderer.setShowGutter(false); + editor[r].renderer.setShowPrintMargin(false); + + editor[r].setFontSize("14px"); + + + + var textarea = $('#'+r+'-textarea').hide(); + editor[r].getSession().setValue(textarea.val()); + + editor[r].getSession().on('change', function(){ + + textarea.val(editor[r].getSession().getValue()); + + + }); + + +}); +} + + +$(document).ready(function(){ + + init_markdown(); + //upload + + drop = $('.portfolio .images'); + + $('.portfolio_images .fileupload').fileupload({ + url: $(this).attr("action"), + dropZone: drop, + autoUpload: true, + progressall: function (e, data) { + var progress = parseInt(data.loaded / data.total * 100, 10); + if(progress == 100){ + $(this).find('.progress').html('traitement en cours.'); + } + else{ + $(this).find('.progress').html(progress + '% téléchargé.');} + }, + always: function (e, data) { + $(this).find('.progress').html(""); + }, + + drop: function (e, data) { + + drop.css("background", "transparent"); + } + }); + + + drop.bind('dragover', function (e) { + $(this).css("background", "#B7DF63"); + + }); + + drop.bind('dragleave', function (e) { + $(this).css("background", "transparent"); + + }); + + $(".portfolio_images .add_files").bind("click",function(){ + + $(this).next('input').click(); + return false; + }); + + +}); + diff --git a/app/assets/javascripts/admin/articles_actions.coffee b/app/assets/javascripts/admin/articles_actions.coffee deleted file mode 100644 index f3fcf9a..0000000 --- a/app/assets/javascripts/admin/articles_actions.coffee +++ /dev/null @@ -1,41 +0,0 @@ - - -$('.article_row .show_details').live "click", -> - url = $(this).attr("href")+".html" - - $(this).closest(".article_row").addClass('active') - $('#article_detail').load url, -> - - $("#article_detail").show().delay(1).css - "-webkit-transition-duration": "0.8s" - "-moz-transition-duration": "0.8s" - "margin-right": "0px" - - - $("#article_index_slide").show().delay(1).css - "-webkit-transition-duration": "0.8s" - "-moz-transition-duration": "0.8s" - "margin-left": "-110%" - "margin-right": "110%" - false - -$('#article_detail .hide').live "click", -> - $("#article_detail #content_types_draggables").hide(); - - $("#article_index_slide").show().delay(1).css - "-webkit-transition-duration": "0.8s" - "-moz-transition-duration": "0.8s" - "margin-left": "0%" - "margin-right": "0%" - - - $("#article_detail").css( - "-webkit-transition-duration": "0.8s" - "-moz-transition-duration": "0.8s" - "margin-right": "-110%").delay(800).queue -> - $("#article_detail").html("").clearQueue() - false - - - false - diff --git a/app/assets/javascripts/admin/auto_tiny_mce.js b/app/assets/javascripts/admin/auto_tiny_mce.js deleted file mode 100644 index 9518d84..0000000 --- a/app/assets/javascripts/admin/auto_tiny_mce.js +++ /dev/null @@ -1,34 +0,0 @@ -function auto_tiny_mce(div) -{ - - - div.css("width", "100%"); - div.css("height", "400px"); - div.tinymce({ - // Location of TinyMCE script - script_url : '/tiny_mce/tiny_mce.js', - content_css : "", - // General options - theme : "advanced", - skin: "cirkuit", - plugins : "pagebreak,style,contextmenu,paste,directionality,noneditable,visualchars,nonbreaking,xhtmlxtras", - - // Theme options - theme_advanced_buttons1 : "bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,fontsizeselect,|,cut,copy,paste,pastetext,pasteword,|,bullist,numlist,|,outdent,indent,|,forecolor,backcolor,sub,sup,|,charmap,|,removeformat,code", - theme_advanced_buttons2 : "", - theme_advanced_buttons3 : "", - - theme_advanced_toolbar_location : "top", - theme_advanced_toolbar_align : "left", - theme_advanced_statusbar_location : false, - theme_advanced_resizing : false, - theme_advanced_text_colors : "#D2232A,#40AF49,#00ADEF", - theme_advanced_background_colors : "#D2232A,#40AF49,#00ADEF", - - //theme_advanced_toolbar_location : "external", - - - - }); - -} \ No newline at end of file diff --git a/app/assets/javascripts/admin/block.js b/app/assets/javascripts/admin/block.js deleted file mode 100644 index 146bac1..0000000 --- a/app/assets/javascripts/admin/block.js +++ /dev/null @@ -1,169 +0,0 @@ - -function uninitialize_block_js(){ - - $( ".portlet" ).draggable('disable'); - - -} - - -function block_js_initialize(){ - - initialize_receptables(); - - $( ".content_types_draggable" ).draggable({ - revert:"invalid", - //handle:".grip", - connectToSortable: ".block_portlets", - opacity: 0.5, - zIndex:1000, - - helper: 'clone', - - }); - - - $('.portlet').live('hover', function(){ - - - - - //$('.portlet').removeClass('portlet_hover'); - $(this).addClass('portlet_hover'); - - $(this).parents('.portlet').children(".actions").css({'display':'none'}); - - - }); - - $('.portlet').live('mouseleave', function(){ - - $(this).removeClass('portlet_hover'); - - - - $(this).parents('.portlet').children(".actions").css('display',''); - $(this).parents('.portlet').css({ "border" : ""}); - - - - }); - - - - - - - -} - - -function update_portlet_order(){ - var return_order = []; - - - - $('.block_portlets').each(function(){ - - var block_data = {block_id : $(this).data('block_id'), block_portlet_ids : []}; - - $(this).children('.portlet').each(function(){ - if($(this).data('portlet_id')){ - block_data.block_portlet_ids.push($(this).data('portlet_id')); - } - - }); - return_order.push(block_data); - }); - - - $.ajax({url : "/portlet/portlets/reorder", data : {blocks:return_order}, type: "POST"}); - -} - - -function initialize_receptables(){ - - - $('.portlet_place_holder').remove(); - $('.block_portlets').prepend('
    '); - $('.portlet').after('
    '); - - $( ".portlet" ).draggable({ - revert:"invalid", - handle:".move", - zIndex:600, - opacity: 0.5, - appendTo:"body", - scrollSensitivity : 20, - scrollSpeed : 40, - disabled : false - - - - }); - - - $(".portlet_place_holder").droppable({ - hoverClass:"portlet_receptable_hover", - tolerance : "pointer", - accept: '.portlet, .content_types_draggable' , - over: function(event, ui) { - - $(this).attr("data_height", $(this).height()); - $(this).css("height", ui.draggable.attr("data_height")) - - }, - - out: function(event, ui) { - $(this).css("height", $(this).attr("data_height")) - - }, - - drop: function( event, ui ) { - - - - - if(ui.draggable.data("portlet_id")){ - - $(this).after(ui.draggable); - ui.draggable.removeClass("ui-draggable"); - ui.draggable.removeClass("ui-draggable-dragging"); - ui.draggable.css({"top":"", "left":""}); - initialize_receptables(); - - update_portlet_order(); - - - } - else - { - - - $(this).after('
    '); - initialize_receptables(); - $.ajax({ - url:"/portlet/portlets/new.js", - type: "GET", - data: { - block_id : $(this).attr("data_block_id"), - position : $(this).attr("data_position"), - content_type : ui.draggable.attr("data_type") - } , - success : function (){ - - } - }); - - - } - - - - } - }); - - - -} \ No newline at end of file diff --git a/app/assets/javascripts/admin/browser.js b/app/assets/javascripts/admin/browser.js deleted file mode 100644 index 6d7fcef..0000000 --- a/app/assets/javascripts/admin/browser.js +++ /dev/null @@ -1,22 +0,0 @@ -$(document).ready(function () { - var browser_capacity = 5; - - if (!Modernizr.geolocation || !Modernizr.csstransforms3d || !Modernizr.localstorage || !Modernizr.sessionstorage || !Modernizr.websockets || !Modernizr.cssreflections ) { - browser_capacity = 2; - } - - if (!Modernizr.svg || !Modernizr.canvas || !Modernizr.canvastext || !Modernizr.audio || !Modernizr.video) { - browser_capacity = 1; - } - - - if (!Modernizr.fontface || !Modernizr.rgba || !Modernizr.borderradius || !Modernizr.boxshadow || !Modernizr.multiplebgs || !Modernizr.opacity || !Modernizr.csscolumns || !Modernizr.cssgradients || !Modernizr.csstransforms || !Modernizr.csstransitions || !Modernizr.history || !Modernizr.draganddrop || !Modernizr.cssanimations) { - browser_capacity = 0; - } - - if (browser_capacity < 1){ - $("#browser_update").show(); - } - -}); - diff --git a/app/assets/javascripts/admin/cible.js b/app/assets/javascripts/admin/cible.js deleted file mode 100644 index 5bfcdbe..0000000 --- a/app/assets/javascripts/admin/cible.js +++ /dev/null @@ -1,19 +0,0 @@ -function select_cible_from_manager(input_id){ - - - manager_prompt("/admin/cibles/?manager=true",function(m_return){ - - $('#input_id_'+input_id).val(m_return.cible_id); - $('#input_type_'+input_id).val(m_return.cible_type); - $('#name_'+input_id).val(m_return.cible_name); - - }); - -} - - -$(document).ready(function(){ - - - -}); \ No newline at end of file diff --git a/app/assets/javascripts/admin/data_files.js b/app/assets/javascripts/admin/data_files.js deleted file mode 100644 index 887110d..0000000 --- a/app/assets/javascripts/admin/data_files.js +++ /dev/null @@ -1,258 +0,0 @@ -function data_files_load() -{ - - update_data_multiple_selection_text(); - - - - - - - - $( ".data_file" ).draggable({ - revert:"invalid", - - opacity: 0.5, - helper: 'clone', - appendTo: '#main_workspace_view', - start: function(event, ui) { - - }, - drag: function(){ - }, - stop: function(){ - - } - }); - - - $(".file_folder:not(.active)").droppable({ - hoverClass:"album_highlight", - tolerance : "pointer", - - drop: function( event, ui ) { - ui.draggable.fadeOut().remove(); - - - $.ajax({ - url:ui.draggable.data('show_url'), - type: "PUT", - data: { - data_file : { - file_folder_id : $(this).data("file_folder_id") - } - } - }); - $( this ).effect("highlight", {}, 3000); - - } - }); - - - - - -} - - - -function update_data_multiple_selection_text() -{ - - var multiple_ids = multiple_data_selection_ids() - var text = "" - if (multiple_ids.length == 0) - { - text = "Aucun fichier séléctionné"; - } - else if(multiple_ids.length == 1) - { - text= "Un fichier séléctionné"; - } - else - { - text= multiple_ids.length+" fichiers séléctionnés"; - } - - - $('#data_files_multiple_selection_text').html(text); - -} - -function multiple_data_selection_ids() -{ - var multiple_selection_ids = [] - - $('#data_files .active').each(function () - { - multiple_selection_ids.push($(this).data("id")) - - }); - - return multiple_selection_ids - -} - -function close_data_file_container(data_file_id) -{ - $('#data_file_container').removeClass("data_file_container_active"); - $('#data_files_container').css("overflow", ""); - $('#right_bar').show(); - -} - - - - -function delete_multiple_files(){ - if(confirm("Voulez-vous vraiment supprimer ces fichiers ?")) - { - - var multiple_ids = multiple_data_selection_ids(); - $.each(multiple_ids, function(index, value) - { - $.ajax({ - url:"/admin/data_files/"+value+".js", - type : "DELETE", - success : function (){ - update_data_multiple_selection_text(); - } - }); - } - ); - - return false; - - } - -} - -function select_all_files(){ - $('#data_files .data_file').each(function (){ - - - $(this).addClass("active"); - - - }); - update_data_multiple_selection_text(); - -} - -function unselect_all_files(){ - - $('#data_files .data_file').each(function (){ - - - $(this).removeClass("active"); - - - }); - update_data_multiple_selection_text(); -} - -function initialize_slider(){ -$("#grid_slider").slider({ -value: $('.data_file .img').width(), -max: 250, -min: 80, -slide: - function(event, ui) - { - slider_value = ui.value - set_data_files_img_size(); - }, -create : - function(event, ui) - { - slider_enabled = true - } - -}); -} - -$(document).ready(function ($) { - - - - - - $("#left_buttons").live("click", function() { - multiple_selection_ids(); - }) - - $(".data_file").live('dblclick', function (event){ - - - $.ajax({url : $(this).data('show_url'), success: function (){ - $('#data_file_container').addClass("data_file_container_active"); - $('#right_bar').hide(); - - - - - - }}); - - - - - - - }); - - $("#data_files_container").live("click",function (e){ - - - - - if ($(e.target).parents(".data_file").length == 0){ - unselect_all_image(); - - } - - }); - - $("#data_file_container .img").live("dblclick",function (){ - close_data_file_container(); - - }); - - - - $('#data_files_big_container #main_workspace_view #data_file_container .form input').live('keydown', function(){ - $('#data_files_big_container #main_workspace_view #data_file_container .form .submit_tr').show(); - }) - $('#data_files_big_container #main_workspace_view #data_file_container .form textarea').live('keydown', function(){ - $('#data_files_big_container #main_workspace_view #data_file_container .form .submit_tr').show(); - }) - - $(".data_file").live("click",function (){ - if ($(this).hasClass('active')){ - $(this).removeClass('active'); - - } - else - { - $(this).addClass('active'); - } - - update_data_multiple_selection_text(); - - }); - - - - - - initialize_slider(); - - - - data_files_load(); - - - - - -}); \ No newline at end of file diff --git a/app/assets/javascripts/admin/forms.js b/app/assets/javascripts/admin/forms.js deleted file mode 100644 index bc00976..0000000 --- a/app/assets/javascripts/admin/forms.js +++ /dev/null @@ -1,46 +0,0 @@ -jQuery(function($){ -$.datepicker.regional['fr'] = {clearText: 'Effacer', clearStatus: '', -closeText: 'Fermer', closeStatus: 'Fermer sans modifier', -prevText: '', nextStatus: 'Voir le mois suivant', -currentText: 'Aujourd\'hui', currentStatus: 'Voir le mois courant', -monthNames: ['Janvier','Février','Mars','Avril','Mai','Juin', -'Juillet','Août','Septembre','Octobre','Novembre','Décembre'], -monthNamesShort: ['Jan','Fév','Mar','Avr','Mai','Jun', -'Jul','Aoû','Sep','Oct','Nov','Déc'], -monthStatus: 'Voir un autre mois', yearStatus: 'Voir un autre année', -weekHeader: 'Sm', weekStatus: '', -dayNames: ['Dimanche','Lundi','Mardi','Mercredi','Jeudi','Vendredi','Samedi'], -dayNamesShort: ['Dim','Lun','Mar','Mer','Jeu','Ven','Sam'], -dayNamesMin: ['Di','Lu','Ma','Me','Je','Ve','Sa'], -dayStatus: 'Utiliser DD comme premier jour de la semaine', dateStatus: 'Choisir le DD, MM d', -dateFormat: 'dd/mm/yy', firstDay: 0, -initStatus: 'Choisir la date', isRTL: false}; -$.datepicker.setDefaults($.datepicker.regional['fr']); -}); - -$(function(){ - - $('input.datepicker').live('click', function() { - $(this).datepicker({showOn:'focus',inline: true, - showButtonPanel: true, - - numberOfMonths: 1}).focus(); - }); - - -//hover states on the static widgets -$('#dialog_link, ul#icons li').hover( -function() { $(this).addClass('ui-state-hover'); }, -function() { $(this).removeClass('ui-state-hover'); } -); - - -$('input.timepicker').live('hover', function() { - $(this).timepickr({ - updateLive:true - }); - -}); - -}); \ No newline at end of file diff --git a/app/assets/javascripts/admin/image_files.js b/app/assets/javascripts/admin/image_files.js deleted file mode 100644 index c06d9dd..0000000 --- a/app/assets/javascripts/admin/image_files.js +++ /dev/null @@ -1,267 +0,0 @@ -var slider_value = null; -var slider_enabled = null; -function image_files_load() -{ - - update_multiple_selection_text(); - - set_image_files_img_size(); - - if(!slider_enabled){ - initialize_slider(); - - } - - - - - - - - $( ".image_file" ).draggable({ - revert:"invalid", - - opacity: 0.5, - helper: 'clone', - appendTo: '#main_workspace_view', - start: function(event, ui) { - - }, - drag: function(){ - }, - stop: function(){ - - } - }); - - - $(".album:not(.active)").droppable({ - hoverClass:"album_highlight", - tolerance : "pointer", - drop: function( event, ui ) { - ui.draggable.fadeOut().remove(); - - - $.ajax({ - url:ui.draggable.attr('data_show_url'), - type: "PUT", - data: { - image_file : { - album_id : $(this).attr("data_album_id") - } - }, - success: function(){ - - } - - - }); - $( this ).effect("highlight", {}, 3000); - - } - }); - - - - - -} - -function set_image_files_img_size(){ - $('.image_file .img').css('width',slider_value+"px"); - $('.image_file .img').css('height',slider_value+"px"); - -} - -function update_multiple_selection_text() -{ - - var multiple_ids = multiple_selection_ids() - var text = "" - if (multiple_ids.length == 0) - { - text = "Aucune image séléctionnée"; - } - else if(multiple_ids.length == 1) - { - text= "Une image séléctionnée"; - } - else - { - text= multiple_ids.length+" images séléctionnées"; - } - - - $('#multiple_selection_text').html(text); - -} - -function multiple_selection_ids() -{ - var multiple_selection_ids = [] - - $('#image_files .active').each(function () - { - multiple_selection_ids.push($(this).attr("data_id")) - }); - - return multiple_selection_ids -} - -function close_image_file_container(image_file_id) -{ - $('#image_file_container').removeClass("image_file_container_active"); - $('#image_files_container').css("overflow", ""); - $('#right_bar').show(); - -} - - - -function delete_multiple_images(){ - if(confirm("Voulez-vous vraiment supprimer ces images ?")) - { - - var multiple_ids = multiple_selection_ids(); - $.each(multiple_ids, function(index, value) - { - $.ajax({ - url:"/admin/image_files/"+value+".js", - type : "DELETE", - success : function (){ - update_multiple_selection_text(); - } - }); - } - ); - - return false; - - } - -} - -function select_all_image(){ - $('#image_files .image_file').each(function (){ - - - $(this).addClass("active"); - - - }); - update_multiple_selection_text(); - -} - -function unselect_all_image(){ - - $('#image_files .image_file').each(function (){ - - - $(this).removeClass("active"); - - - }); - update_multiple_selection_text(); -} - -function initialize_slider(){ -$("#grid_slider").slider({ -value: $('.image_file .img').width(), -max: 250, -min: 80, -slide: - function(event, ui) - { - slider_value = ui.value - set_image_files_img_size(); - }, -create : - function(event, ui) - { - slider_enabled = true - } - -}); -} - -$(document).ready(function ($) { - - - - $("#left_buttons").live("click", function() { - multiple_selection_ids(); - }) - - $(".image_file").live('dblclick', function (event){ - - - $.ajax({url : $(this).attr('data_show_url'), success: function (){ - $('#image_file_container').addClass("image_file_container_active"); - $('#right_bar').hide(); - - - - - - }}); - - - - - - - }); - - $("#image_files_container").live("click",function (e){ - - - - - if ($(e.target).parents(".image_file").length == 0){ - unselect_all_image(); - - } - - }); - - $("#image_file_container .img").live("dblclick",function (){ - close_image_file_container(); - - }); - - - - $('#image_files_big_container #main_workspace_view #image_file_container .form input').live('keydown', function(){ - $('#image_files_big_container #main_workspace_view #image_file_container .form .submit_tr').show(); - }) - $('#image_files_big_container #main_workspace_view #image_file_container .form textarea').live('keydown', function(){ - $('#image_files_big_container #main_workspace_view #image_file_container .form .submit_tr').show(); - }) - - $(".image_file").live("click",function (){ - if ($(this).hasClass('active')){ - $(this).removeClass('active'); - - } - else - { - $(this).addClass('active'); - } - update_multiple_selection_text(); - - }); - - - - - - initialize_slider(); - - - - image_files_load(); - - - -}); \ No newline at end of file diff --git a/app/assets/javascripts/admin/jquery-activity-indicator.js b/app/assets/javascripts/admin/jquery-activity-indicator.js deleted file mode 100644 index c4f4b9f..0000000 --- a/app/assets/javascripts/admin/jquery-activity-indicator.js +++ /dev/null @@ -1,10 +0,0 @@ -/* - * NETEYE Activity Indicator jQuery Plugin - * - * Copyright (c) 2010 NETEYE GmbH - * Licensed under the MIT license - * - * Author: Felix Gnass [fgnass at neteye dot de] - * Version: 1.0.0 - */ -(function($){$.fn.activity=function(opts){this.each(function(){var $this=$(this);var el=$this.data("activity");if(el){clearInterval(el.data("interval"));el.remove();$this.removeData("activity");}if(opts!==false){opts=$.extend({color:$this.css("color")},$.fn.activity.defaults,opts);el=render($this,opts).css("position","absolute").prependTo(opts.outside?"body":$this);var h=$this.outerHeight()-el.height();var w=$this.outerWidth()-el.width();var margin={top:opts.valign=="top"?opts.padding:opts.valign=="bottom"?h-opts.padding:Math.floor(h/2),left:opts.align=="left"?opts.padding:opts.align=="right"?w-opts.padding:Math.floor(w/2)};var offset=$this.offset();if(opts.outside){el.css({top:offset.top+"px",left:offset.left+"px"});}else{margin.top-=el.offset().top-offset.top;margin.left-=el.offset().left-offset.left;}el.css({marginTop:margin.top+"px",marginLeft:margin.left+"px"});animate(el,opts.segments,Math.round(10/opts.speed)/10);$this.data("activity",el);}});return this;};$.fn.activity.defaults={segments:12,space:3,length:7,width:4,speed:1.2,align:"center",valign:"center",padding:4};$.fn.activity.getOpacity=function(opts,i){var steps=opts.steps||opts.segments-1;var end=opts.opacity!==undefined?opts.opacity:1/steps;return 1-Math.min(i,steps)*(1-end)/steps;};var render=function(){return $("
    ").addClass("busy");};var animate=function(){};function svg(tag,attr){var el=document.createElementNS("http://www.w3.org/2000/svg",tag||"svg");if(attr){$.each(attr,function(k,v){el.setAttributeNS(null,k,v);});}return $(el);}if(document.createElementNS&&document.createElementNS("http://www.w3.org/2000/svg","svg").createSVGRect){render=function(target,d){var innerRadius=d.width*2+d.space;var r=(innerRadius+d.length+Math.ceil(d.width/2)+1);var el=svg().width(r*2).height(r*2);var g=svg("g",{"stroke-width":d.width,"stroke-linecap":"round",stroke:d.color}).appendTo(svg("g",{transform:"translate("+r+","+r+")"}).appendTo(el));for(var i=0;i").append(el).width(2*r).height(2*r);};if(document.createElement("div").style.WebkitAnimationName!==undefined){var animations={};animate=function(el,steps,duration){if(!animations[steps]){var name="spin"+steps;var rule="@-webkit-keyframes "+name+" {";for(var i=0;i").css("behavior","url(#default#VML)").appendTo("body");if(s.get(0).adj){var sheet=document.createStyleSheet();$.each(["group","shape","stroke"],function(){sheet.addRule(this,"behavior:url(#default#VML);");});render=function(target,d){var innerRadius=d.width*2+d.space;var r=(innerRadius+d.length+Math.ceil(d.width/2)+1);var s=r*2;var o=-Math.ceil(s/2);var el=$("",{coordsize:s+" "+s,coordorigin:o+" "+o}).css({top:o,left:o,width:s,height:s});for(var i=0;i",{path:"m "+innerRadius+",0 l "+(innerRadius+d.length)+",0"}).css({width:s,height:s,rotation:(360/d.segments*i)+"deg"}).append($("",{color:d.color,weight:d.width+"px",endcap:"round",opacity:$.fn.activity.getOpacity(d,i)})));}return $("",{coordsize:s+" "+s}).css({width:s,height:s,overflow:"hidden"}).append(el);};animate=function(el,steps,duration){var rotation=0;var g=el.get(0);el.data("interval",setInterval(function(){g.style.rotation=++rotation%steps*(360/steps);},duration*1000/steps));};}$(s).remove();}})(jQuery); \ No newline at end of file diff --git a/app/assets/javascripts/admin/jquery-fileupload-ui.js b/app/assets/javascripts/admin/jquery-fileupload-ui.js deleted file mode 100755 index 0c086f2..0000000 --- a/app/assets/javascripts/admin/jquery-fileupload-ui.js +++ /dev/null @@ -1,490 +0,0 @@ -/* - * jQuery File Upload User Interface Plugin 4.2.1 - * https://github.com/blueimp/jQuery-File-Upload - * - * Copyright 2010, Sebastian Tschan - * https://blueimp.net - * - * Licensed under the MIT license: - * http://creativecommons.org/licenses/MIT/ - */ - -/*jslint browser: true */ -/*global jQuery, FileReader, URL, webkitURL */ - -(function ($) { - - var undef = 'undefined', - func = 'function', - UploadHandler, - methods, - - MultiLoader = function (callBack) { - var loaded = 0, - list = []; - this.complete = function () { - loaded += 1; - if (loaded === list.length + 1) { - // list.length * onComplete + 1 * onLoadAll - callBack(list); - loaded = 0; - list = []; - } - }; - this.push = function (item) { - list.push(item); - }; - this.getList = function () { - return list; - }; - }; - - UploadHandler = function (container, options) { - var uploadHandler = this, - dragOverTimeout, - isDropZoneEnlarged, - multiLoader = new MultiLoader(function (list) { - uploadHandler.hideProgressBarAll(function () { - uploadHandler.resetProgressBarAll(); - if (typeof uploadHandler.onCompleteAll === func) { - uploadHandler.onCompleteAll(list); - } - }); - }), - getUploadTable = function (handler) { - return typeof handler.uploadTable === func ? - handler.uploadTable(handler) : handler.uploadTable; - }, - getDownloadTable = function (handler) { - return typeof handler.downloadTable === func ? - handler.downloadTable(handler) : handler.downloadTable; - }; - - this.requestHeaders = {'Accept': 'application/json, text/javascript, */*; q=0.01'}; - this.dropZone = container; - this.imageTypes = /^image\/(gif|jpeg|png)$/; - this.previewMaxWidth = this.previewMaxHeight = 80; - this.previewLoadDelay = 100; - this.previewAsCanvas = true; - this.previewSelector = '.file_upload_preview'; - this.progressSelector = '.file_upload_progress div'; - this.cancelSelector = '.file_upload_cancel img'; - this.cssClassSmall = 'file_upload_small'; - this.cssClassLarge = 'file_upload_large'; - this.cssClassHighlight = 'file_upload_highlight'; - this.dropEffect = 'highlight'; - this.uploadTable = this.downloadTable = null; - this.buildUploadRow = this.buildDownloadRow = null; - this.progressAllNode = null; - - this.loadImage = function (file, callBack, maxWidth, maxHeight, imageTypes, noCanvas) { - var img, - scaleImage, - urlAPI, - fileReader; - if (imageTypes && !imageTypes.test(file.type)) { - return null; - } - scaleImage = function (img) { - var canvas = document.createElement('canvas'), - scale = Math.min( - (maxWidth || img.width) / img.width, - (maxHeight || img.height) / img.height - ); - if (scale > 1) { - scale = 1; - } - img.width = parseInt(img.width * scale, 10); - img.height = parseInt(img.height * scale, 10); - if (noCanvas || typeof canvas.getContext !== func) { - return img; - } - canvas.width = img.width; - canvas.height = img.height; - canvas.getContext('2d').drawImage(img, 0, 0, img.width, img.height); - return canvas; - }; - img = document.createElement('img'); - urlAPI = typeof URL !== undef ? URL : typeof webkitURL !== undef ? webkitURL : null; - if (urlAPI && typeof urlAPI.createObjectURL === func) { - img.onload = function () { - urlAPI.revokeObjectURL(this.src); - callBack(scaleImage(img)); - }; - img.src = urlAPI.createObjectURL(file); - } else if (typeof FileReader !== undef && - typeof FileReader.prototype.readAsDataURL === func) { - img.onload = function () { - callBack(scaleImage(img)); - }; - fileReader = new FileReader(); - fileReader.onload = function (e) { - img.src = e.target.result; - }; - fileReader.readAsDataURL(file); - } else { - callBack(null); - } - }; - - this.addNode = function (parentNode, node, callBack) { - if (parentNode && node) { - node.css('display', 'none').appendTo(parentNode).fadeIn(function () { - if (typeof callBack === func) { - try { - callBack(); - } catch (e) { - // Fix endless exception loop: - node.stop(); - throw e; - } - } - }); - } else if (typeof callBack === func) { - callBack(); - } - }; - - this.removeNode = function (node, callBack) { - if (node) { - node.fadeOut(function () { - node.remove(); - if (typeof callBack === func) { - try { - callBack(); - } catch (e) { - // Fix endless exception loop: - node.stop(); - throw e; - } - } - }); - } else if (typeof callBack === func) { - callBack(); - } - }; - - this.replaceNode = function (oldNode, newNode, callBack) { - if (oldNode && newNode) { - oldNode.fadeOut(function () { - newNode.css('display', 'none'); - oldNode.replaceWith(newNode); - newNode.fadeIn(function () { - if (typeof callBack === func) { - try { - callBack(); - } catch (e) { - // Fix endless exception loop: - oldNode.stop(); - newNode.stop(); - throw e; - } - } - }); - }); - } else if (typeof callBack === func) { - callBack(); - } - }; - - this.resetProgressBarAll = function () { - if (uploadHandler.progressbarAll) { - uploadHandler.progressbarAll.progressbar( - 'value', - 0 - ); - } - }; - - this.hideProgressBarAll = function (callBack) { - if (uploadHandler.progressbarAll && !$(getUploadTable(uploadHandler)) - .find(uploadHandler.progressSelector + ':visible:first').length) { - uploadHandler.progressbarAll.fadeOut(callBack); - } else if (typeof callBack === func) { - callBack(); - } - }; - - this.onAbort = function (event, files, index, xhr, handler) { - handler.removeNode(handler.uploadRow, handler.hideProgressBarAll); - }; - - this.cancelUpload = function (event, files, index, xhr, handler) { - var readyState = xhr.readyState; - xhr.abort(); - // If readyState is below 2, abort() has no effect: - if (typeof readyState !== 'number' || readyState < 2) { - handler.onAbort(event, files, index, xhr, handler); - } - }; - - this.initProgressBar = function (node, value) { - if (!node || !node.length) { - return null; - } - if (typeof node.progressbar === func) { - return node.progressbar({ - value: value - }); - } else { - var progressbar = $('').appendTo(node); - progressbar.progressbar = function (key, value) { - progressbar.attr('value', value); - }; - return progressbar; - } - }; - - this.initUploadProgress = function (xhr, handler) { - if (!xhr.upload && handler.progressbar) { - handler.progressbar.progressbar( - 'value', - 100 // indeterminate progress displayed by a full animated progress bar - ); - } - }; - - this.onSend = function (event, files, index, xhr, handler) { - handler.initUploadProgress(xhr, handler); - }; - - this.onProgressAll = function (event, list) { - if (uploadHandler.progressbarAll && event.lengthComputable) { - uploadHandler.progressbarAll.progressbar( - 'value', - parseInt(event.loaded / event.total * 100, 10) - ); - } - }; - - this.onProgress = function (event, files, index, xhr, handler) { - if (handler.progressbar && event.lengthComputable) { - handler.progressbar.progressbar( - 'value', - parseInt(event.loaded / event.total * 100, 10) - ); - } - }; - - this.onLoadAll = function (list) { - multiLoader.complete(); - }; - - this.initProgressBarAll = function () { - if (!uploadHandler.progressbarAll) { - uploadHandler.progressbarAll = uploadHandler.initProgressBar( - (typeof uploadHandler.progressAllNode === func ? - uploadHandler.progressAllNode(uploadHandler) : uploadHandler.progressAllNode), - 0 - ); - } - if (uploadHandler.progressbarAll && uploadHandler.progressbarAll.is(':hidden')) { - uploadHandler.progressbarAll.fadeIn(); - } - }; - - this.initUploadRow = function (event, files, index, xhr, handler) { - var uploadRow = handler.uploadRow = (typeof handler.buildUploadRow === func ? - handler.buildUploadRow(files, index, handler) : null); - if (uploadRow) { - handler.progressbar = handler.initProgressBar( - uploadRow.find(handler.progressSelector), - 0 - ); - uploadRow.find(handler.cancelSelector).click(function (e) { - handler.cancelUpload(e, files, index, xhr, handler); - return false; - }); - uploadRow.find(handler.previewSelector).each(function () { - var previewNode = $(this), - file = files[index]; - if (file) { - setTimeout(function () { - handler.loadImage( - file, - function (img) { - handler.addNode( - previewNode, - $(img) - ); - }, - handler.previewMaxWidth, - handler.previewMaxHeight, - handler.imageTypes, - !handler.previewAsCanvas - ); - }, handler.previewLoadDelay); - } - }); - } - }; - - this.initUpload = function (event, files, index, xhr, handler, callBack) { - handler.initUploadRow(event, files, index, xhr, handler); - handler.addNode( - getUploadTable(handler), - handler.uploadRow, - function () { - if (typeof handler.beforeSend === func) { - handler.beforeSend(event, files, index, xhr, handler, callBack); - } else { - callBack(); - } - } - ); - handler.initProgressBarAll(); - }; - - this.parseResponse = function (xhr) { - if (typeof xhr.responseText !== undef) { - return $.parseJSON(xhr.responseText); - } else { - // Instead of an XHR object, an iframe is used for legacy browsers: - return $.parseJSON(xhr.contents().text()); - } - }; - - this.initDownloadRow = function (event, files, index, xhr, handler) { - var json, downloadRow; - try { - json = handler.response = handler.parseResponse(xhr); - downloadRow = handler.downloadRow = (typeof handler.buildDownloadRow === func ? - handler.buildDownloadRow(json, handler) : null); - } catch (e) { - if (typeof handler.onError === func) { - handler.originalEvent = event; - handler.onError(e, files, index, xhr, handler); - } else { - throw e; - } - } - }; - - this.onLoad = function (event, files, index, xhr, handler) { - var uploadTable = getUploadTable(handler), - downloadTable = getDownloadTable(handler), - callBack = function () { - if (typeof handler.onComplete === func) { - handler.onComplete(event, files, index, xhr, handler); - } - multiLoader.complete(); - }; - multiLoader.push(Array.prototype.slice.call(arguments, 1)); - handler.initDownloadRow(event, files, index, xhr, handler); - if (uploadTable && (!downloadTable || uploadTable.get(0) === downloadTable.get(0))) { - handler.replaceNode(handler.uploadRow, handler.downloadRow, callBack); - } else { - handler.removeNode(handler.uploadRow, function () { - handler.addNode( - downloadTable, - handler.downloadRow, - callBack - ); - }); - } - }; - - this.dropZoneEnlarge = function () { - if (!isDropZoneEnlarged) { - if (typeof uploadHandler.dropZone.switchClass === func) { - uploadHandler.dropZone.switchClass( - uploadHandler.cssClassSmall, - uploadHandler.cssClassLarge - ); - } else { - uploadHandler.dropZone.addClass(uploadHandler.cssClassLarge); - uploadHandler.dropZone.removeClass(uploadHandler.cssClassSmall); - } - isDropZoneEnlarged = true; - } - }; - - this.dropZoneReduce = function () { - if (typeof uploadHandler.dropZone.switchClass === func) { - uploadHandler.dropZone.switchClass( - uploadHandler.cssClassLarge, - uploadHandler.cssClassSmall - ); - } else { - uploadHandler.dropZone.addClass(uploadHandler.cssClassSmall); - uploadHandler.dropZone.removeClass(uploadHandler.cssClassLarge); - } - isDropZoneEnlarged = false; - }; - - this.onDocumentDragEnter = function (event) { - uploadHandler.dropZoneEnlarge(); - }; - - this.onDocumentDragOver = function (event) { - if (dragOverTimeout) { - clearTimeout(dragOverTimeout); - } - dragOverTimeout = setTimeout(function () { - uploadHandler.dropZoneReduce(); - }, 200); - }; - - this.onDragEnter = this.onDragLeave = function (event) { - uploadHandler.dropZone.toggleClass(uploadHandler.cssClassHighlight); - }; - - this.onDrop = function (event) { - if (dragOverTimeout) { - clearTimeout(dragOverTimeout); - } - if (uploadHandler.dropEffect && typeof uploadHandler.dropZone.effect === func) { - //uploadHandler.dropZone.effect(uploadHandler.dropEffect, function () { - //uploadHandler.dropZone.removeClass(uploadHandler.cssClassHighlight); - uploadHandler.dropZoneReduce(); - uploadHandler.dropZone.toggleClass(uploadHandler.cssClassHighlight); - //}); - } else { - //uploadHandler.dropZone.removeClass(uploadHandler.cssClassHighlight); - uploadHandler.dropZoneReduce(); - } - }; - - $.extend(this, options); - }; - - methods = { - init : function (options) { - return this.each(function () { - $(this).fileUpload(new UploadHandler($(this), options)); - }); - }, - - option: function (option, value, namespace) { - if (!option || (typeof option === 'string' && typeof value === undef)) { - return $(this).fileUpload('option', option, value, namespace); - } - return this.each(function () { - $(this).fileUpload('option', option, value, namespace); - }); - }, - - destroy : function (namespace) { - return this.each(function () { - $(this).fileUpload('destroy', namespace); - }); - }, - - upload: function (files, namespace) { - return this.each(function () { - $(this).fileUpload('upload', files, namespace); - }); - } - }; - - $.fn.fileUploadUI = function (method) { - if (methods[method]) { - return methods[method].apply(this, Array.prototype.slice.call(arguments, 1)); - } else if (typeof method === 'object' || !method) { - return methods.init.apply(this, arguments); - } else { - $.error('Method "' + method + '" does not exist on jQuery.fileUploadUI'); - } - }; - -}(jQuery)); \ No newline at end of file diff --git a/app/assets/javascripts/admin/jquery-fileupload.js b/app/assets/javascripts/admin/jquery-fileupload.js deleted file mode 100755 index 4432fe6..0000000 --- a/app/assets/javascripts/admin/jquery-fileupload.js +++ /dev/null @@ -1,906 +0,0 @@ -/* - * jQuery File Upload Plugin 4.2.1 - * https://github.com/blueimp/jQuery-File-Upload - * - * Copyright 2010, Sebastian Tschan - * https://blueimp.net - * - * Licensed under the MIT license: - * http://creativecommons.org/licenses/MIT/ - */ - -/*jslint browser: true */ -/*global XMLHttpRequestUpload, File, FileReader, FormData, ProgressEvent, unescape, jQuery, upload */ - -(function ($) { - - var defaultNamespace = 'file_upload', - undef = 'undefined', - func = 'function', - FileUpload, - methods, - - MultiLoader = function (callBack, numOrList) { - var loaded = 0, - list = []; - if (numOrList) { - if (numOrList.length) { - list = numOrList; - } else { - list[numOrList - 1] = null; - } - } - this.complete = function () { - loaded += 1; - if (loaded === list.length) { - callBack(list); - loaded = 0; - list = []; - } - }; - this.push = function (item) { - list.push(item); - }; - this.getList = function () { - return list; - }; - }, - - SequenceHandler = function () { - var sequence = []; - this.push = function (callBack) { - sequence.push(callBack); - if (sequence.length === 1) { - callBack(); - } - }; - this.next = function () { - sequence.shift(); - if (sequence.length) { - sequence[0](); - } - }; - }; - - FileUpload = function (container) { - var fileUpload = this, - uploadForm, - fileInput, - settings = { - namespace: defaultNamespace, - uploadFormFilter: function (index) { - return true; - }, - fileInputFilter: function (index) { - return true; - }, - cssClass: defaultNamespace, - dragDropSupport: true, - dropZone: container, - url: function (form) { - return form.attr('action'); - }, - method: function (form) { - return form.attr('method'); - }, - fieldName: function (input) { - return input.attr('name'); - }, - formData: function (form) { - return form.serializeArray(); - }, - requestHeaders: null, - multipart: true, - multiFileRequest: false, - withCredentials: false, - forceIframeUpload: false, - sequentialUploads: false, - maxChunkSize: null - }, - multiLoader = new MultiLoader(function (list) { - if (typeof settings.onLoadAll === func) { - settings.onLoadAll(list); - } - }), - sequenceHandler = new SequenceHandler(), - documentListeners = {}, - dropZoneListeners = {}, - protocolRegExp = /^http(s)?:\/\//, - optionsReference, - - isXHRUploadCapable = function () { - return typeof XMLHttpRequest !== undef && typeof XMLHttpRequestUpload !== undef && - typeof File !== undef && (!settings.multipart || typeof FormData !== undef || - (typeof FileReader !== undef && typeof XMLHttpRequest.prototype.sendAsBinary === func)); - }, - - initEventHandlers = function () { - if (settings.dragDropSupport) { - if (typeof settings.onDocumentDragEnter === func) { - documentListeners['dragenter.' + settings.namespace] = function (e) { - settings.onDocumentDragEnter(e); - }; - } - if (typeof settings.onDocumentDragLeave === func) { - documentListeners['dragleave.' + settings.namespace] = function (e) { - settings.onDocumentDragLeave(e); - }; - } - documentListeners['dragover.' + settings.namespace] = fileUpload.onDocumentDragOver; - documentListeners['drop.' + settings.namespace] = fileUpload.onDocumentDrop; - $(document).bind(documentListeners); - if (typeof settings.onDragEnter === func) { - dropZoneListeners['dragenter.' + settings.namespace] = function (e) { - settings.onDragEnter(e); - }; - } - if (typeof settings.onDragLeave === func) { - dropZoneListeners['dragleave.' + settings.namespace] = function (e) { - settings.onDragLeave(e); - }; - } - dropZoneListeners['dragover.' + settings.namespace] = fileUpload.onDragOver; - dropZoneListeners['drop.' + settings.namespace] = fileUpload.onDrop; - settings.dropZone.bind(dropZoneListeners); - } - fileInput.bind('change.' + settings.namespace, fileUpload.onChange); - }, - - removeEventHandlers = function () { - $.each(documentListeners, function (key, value) { - $(document).unbind(key, value); - }); - $.each(dropZoneListeners, function (key, value) { - settings.dropZone.unbind(key, value); - }); - fileInput.unbind('change.' + settings.namespace); - }, - - isChunkedUpload = function (settings) { - return typeof settings.uploadedBytes !== undef; - }, - - createProgressEvent = function (lengthComputable, loaded, total) { - var event; - if (typeof document.createEvent === func && typeof ProgressEvent !== undef) { - event = document.createEvent('ProgressEvent'); - event.initProgressEvent( - 'progress', - false, - false, - lengthComputable, - loaded, - total - ); - } else { - event = { - lengthComputable: true, - loaded: loaded, - total: total - }; - } - return event; - }, - - getProgressTotal = function (files, index, settings) { - var i, - total; - if (typeof settings.progressTotal === undef) { - if (files[index]) { - total = files[index].size; - settings.progressTotal = total ? total : 1; - } else { - total = 0; - for (i = 0; i < files.length; i += 1) { - total += files[i].size; - } - settings.progressTotal = total; - } - } - return settings.progressTotal; - }, - - handleGlobalProgress = function (event, files, index, xhr, settings) { - var progressEvent, - loaderList, - globalLoaded = 0, - globalTotal = 0; - if (event.lengthComputable && typeof settings.onProgressAll === func) { - settings.progressLoaded = parseInt( - event.loaded / event.total * getProgressTotal(files, index, settings), - 10 - ); - loaderList = multiLoader.getList(); - $.each(loaderList, function (index, item) { - // item is an array with [files, index, xhr, settings] - globalLoaded += item[3].progressLoaded || 0; - globalTotal += getProgressTotal(item[0], item[1], item[3]); - }); - progressEvent = createProgressEvent( - true, - globalLoaded, - globalTotal - ); - settings.onProgressAll(progressEvent, loaderList); - } - }, - - handleLoadEvent = function (event, files, index, xhr, settings) { - var progressEvent; - if (isChunkedUpload(settings)) { - settings.uploadedBytes = settings.uploadedBytes + settings.chunkSize; - progressEvent = createProgressEvent( - true, - settings.uploadedBytes, - files[index].size - ); - if (typeof settings.onProgress === func) { - settings.onProgress(progressEvent, files, index, xhr, settings); - } - handleGlobalProgress(progressEvent, files, index, xhr, settings); - if (settings.uploadedBytes < files[index].size) { - if (typeof settings.resumeUpload === func) { - settings.resumeUpload( - event, - files, - index, - xhr, - settings, - function () { - upload(event, files, index, xhr, settings, true); - } - ); - } else { - upload(event, files, index, xhr, settings, true); - } - return; - } - } - settings.progressLoaded = getProgressTotal(files, index, settings); - if (typeof settings.onLoad === func) { - settings.onLoad(event, files, index, xhr, settings); - } - multiLoader.complete(); - sequenceHandler.next(); - }, - - handleProgressEvent = function (event, files, index, xhr, settings) { - var progressEvent = event; - if (isChunkedUpload(settings) && event.lengthComputable) { - progressEvent = createProgressEvent( - true, - settings.uploadedBytes + parseInt(event.loaded / event.total * settings.chunkSize, 10), - files[index].size - ); - } - if (typeof settings.onProgress === func) { - settings.onProgress(progressEvent, files, index, xhr, settings); - } - handleGlobalProgress(progressEvent, files, index, xhr, settings); - }, - - initUploadEventHandlers = function (files, index, xhr, settings) { - if (xhr.upload) { - xhr.upload.onprogress = function (e) { - handleProgressEvent(e, files, index, xhr, settings); - }; - } - xhr.onload = function (e) { - handleLoadEvent(e, files, index, xhr, settings); - }; - xhr.onabort = function (e) { - settings.progressTotal = settings.progressLoaded; - if (typeof settings.onAbort === func) { - settings.onAbort(e, files, index, xhr, settings); - } - multiLoader.complete(); - sequenceHandler.next(); - }; - xhr.onerror = function (e) { - settings.progressTotal = settings.progressLoaded; - if (typeof settings.onError === func) { - settings.onError(e, files, index, xhr, settings); - } - multiLoader.complete(); - sequenceHandler.next(); - }; - }, - - getUrl = function (settings) { - if (typeof settings.url === func) { - return settings.url(settings.uploadForm || uploadForm); - } - return settings.url; - }, - - getMethod = function (settings) { - if (typeof settings.method === func) { - return settings.method(settings.uploadForm || uploadForm); - } - return settings.method; - }, - - getFieldName = function (settings) { - if (typeof settings.fieldName === func) { - return settings.fieldName(settings.fileInput || fileInput); - } - return settings.fieldName; - }, - - getFormData = function (settings) { - var formData; - if (typeof settings.formData === func) { - return settings.formData(settings.uploadForm || uploadForm); - } else if ($.isArray(settings.formData)) { - return settings.formData; - } else if (settings.formData) { - formData = []; - $.each(settings.formData, function (name, value) { - formData.push({name: name, value: value}); - }); - return formData; - } - return []; - }, - - isSameDomain = function (url) { - if (protocolRegExp.test(url)) { - var host = location.host, - indexStart = location.protocol.length + 2, - index = url.indexOf(host, indexStart), - pathIndex = index + host.length; - if ((index === indexStart || index === url.indexOf('@', indexStart) + 1) && - (url.length === pathIndex || $.inArray(url.charAt(pathIndex), ['/', '?', '#']) !== -1)) { - return true; - } - return false; - } - return true; - }, - - initUploadRequest = function (files, index, xhr, settings) { - var file = files[index], - url = getUrl(settings), - sameDomain = isSameDomain(url); - xhr.open(getMethod(settings), url, true); - if (sameDomain) { - xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest'); - if (!settings.multipart || isChunkedUpload(settings)) { - xhr.setRequestHeader('X-File-Name', file.name); - xhr.setRequestHeader('X-File-Type', file.type); - xhr.setRequestHeader('X-File-Size', file.size); - if (!isChunkedUpload(settings)) { - xhr.setRequestHeader('Content-Type', file.type); - } else if (!settings.multipart) { - xhr.setRequestHeader('Content-Type', 'application/octet-stream'); - } - } - } else if (settings.withCredentials) { - xhr.withCredentials = true; - } - if ($.isArray(settings.requestHeaders)) { - $.each(settings.requestHeaders, function (index, header) { - xhr.setRequestHeader(header.name, header.value); - }); - } else if (settings.requestHeaders) { - $.each(settings.requestHeaders, function (name, value) { - xhr.setRequestHeader(name, value); - }); - } - }, - - formDataUpload = function (files, xhr, settings) { - var formData = new FormData(), - i; - $.each(getFormData(settings), function (index, field) { - formData.append(field.name, field.value); - }); - for (i = 0; i < files.length; i += 1) { - formData.append(getFieldName(settings), files[i]); - } - xhr.send(formData); - }, - - loadFileContent = function (file, callBack) { - var fileReader = new FileReader(); - fileReader.onload = function (e) { - file.content = e.target.result; - callBack(); - }; - fileReader.readAsBinaryString(file); - }, - - utf8encode = function (str) { - return unescape(encodeURIComponent(str)); - }, - - buildMultiPartFormData = function (boundary, files, filesFieldName, fields) { - var doubleDash = '--', - crlf = '\r\n', - formData = ''; - $.each(fields, function (index, field) { - formData += doubleDash + boundary + crlf + - 'Content-Disposition: form-data; name="' + - utf8encode(field.name) + - '"' + crlf + crlf + - utf8encode(field.value) + crlf; - }); - $.each(files, function (index, file) { - formData += doubleDash + boundary + crlf + - 'Content-Disposition: form-data; name="' + - utf8encode(filesFieldName) + - '"; filename="' + utf8encode(file.name) + '"' + crlf + - 'Content-Type: ' + utf8encode(file.type) + crlf + crlf + - file.content + crlf; - }); - formData += doubleDash + boundary + doubleDash + crlf; - return formData; - }, - - fileReaderUpload = function (files, xhr, settings) { - var boundary = '----MultiPartFormBoundary' + (new Date()).getTime(), - loader, - i; - xhr.setRequestHeader('Content-Type', 'multipart/form-data; boundary=' + boundary); - loader = new MultiLoader(function () { - xhr.sendAsBinary(buildMultiPartFormData( - boundary, - files, - getFieldName(settings), - getFormData(settings) - )); - }, files.length); - for (i = 0; i < files.length; i += 1) { - loadFileContent(files[i], loader.complete); - } - }, - - getBlob = function (file, settings) { - var blob, - ub = settings.uploadedBytes, - mcs = settings.maxChunkSize; - if (file && typeof file.slice === func && (ub || (mcs && mcs < file.size))) { - settings.uploadedBytes = ub = ub || 0; - blob = file.slice(ub, mcs || file.size - ub); - settings.chunkSize = blob.size; - return blob; - } - return file; - }, - - upload = function (event, files, index, xhr, settings, nextChunk) { - var send; - if (!nextChunk) { - if (typeof settings.onSend === func && - settings.onSend(event, files, index, xhr, settings) === false) { - return; - } - multiLoader.push(Array.prototype.slice.call(arguments, 1)); - } - send = function () { - var blob = getBlob(files[index], settings), - filesToUpload; - initUploadEventHandlers(files, index, xhr, settings); - initUploadRequest(files, index, xhr, settings); - if (!settings.multipart) { - if (xhr.upload) { - xhr.send(blob); - } else { - $.error('Browser does not support XHR file uploads'); - } - } else { - filesToUpload = (typeof index === 'number') ? [blob] : files; - if (typeof FormData !== undef) { - formDataUpload(filesToUpload, xhr, settings); - } else if (typeof FileReader !== undef && typeof xhr.sendAsBinary === func) { - fileReaderUpload(filesToUpload, xhr, settings); - } else { - $.error('Browser does not support multipart/form-data XHR file uploads'); - } - } - }; - if (!nextChunk && settings.sequentialUploads) { - sequenceHandler.push(send); - } else { - send(); - } - }, - - handleUpload = function (event, files, input, form, index) { - var xhr = new XMLHttpRequest(), - uploadSettings = $.extend({}, settings); - uploadSettings.fileInput = input; - uploadSettings.uploadForm = form; - if (typeof uploadSettings.initUpload === func) { - uploadSettings.initUpload( - event, - files, - index, - xhr, - uploadSettings, - function () { - upload(event, files, index, xhr, uploadSettings); - } - ); - } else { - upload(event, files, index, xhr, uploadSettings); - } - }, - - handleFiles = function (event, files, input, form) { - var i; - files = Array.prototype.slice.call(files, 0); - if (settings.multiFileRequest && settings.multipart && files.length) { - handleUpload(event, files, input, form); - } else { - for (i = 0; i < files.length; i += 1) { - handleUpload(event, files, input, form, i); - } - } - }, - - handleLegacyGlobalProgress = function (event, files, index, iframe, settings) { - var total = files[index].size ? files[index].size : 1, - progressEvent = createProgressEvent(true, total, total); - settings.progressLoaded = total; - handleGlobalProgress(progressEvent, files, index, iframe, settings); - }, - - legacyUploadFormDataInit = function (input, form, settings) { - var formData = getFormData(settings); - form.find(':input').not(':disabled') - .attr('disabled', true) - .addClass(settings.namespace + '_disabled'); - $.each(formData, function (index, field) { - $('') - .attr('name', field.name) - .val(field.value) - .addClass(settings.namespace + '_form_data') - .appendTo(form); - }); - input - .attr('name', getFieldName(settings)) - .appendTo(form); - }, - - legacyUploadFormDataReset = function (input, form, settings) { - input.detach(); - form.find('.' + settings.namespace + '_disabled') - .removeAttr('disabled') - .removeClass(settings.namespace + '_disabled'); - form.find('.' + settings.namespace + '_form_data').remove(); - }, - - legacyUpload = function (event, files, input, form, iframe, settings) { - var send; - if (typeof settings.onSend === func && settings.onSend(event, files, 0, iframe, settings) === false) { - return; - } - multiLoader.push([files, 0, iframe, settings]); - send = function () { - var originalAction = form.attr('action'), - originalMethod = form.attr('method'), - originalTarget = form.attr('target'); - iframe - .unbind('abort') - .bind('abort', function (e) { - iframe.readyState = 0; - // javascript:false as iframe src prevents warning popups on HTTPS in IE6 - // concat is used here to prevent the "Script URL" JSLint error: - iframe.unbind('load').attr('src', 'javascript'.concat(':false;')); - handleLegacyGlobalProgress(e, files, 0, iframe, settings); - if (typeof settings.onAbort === func) { - settings.onAbort(e, files, 0, iframe, settings); - } - multiLoader.complete(); - sequenceHandler.next(); - }) - .unbind('load') - .bind('load', function (e) { - iframe.readyState = 4; - handleLegacyGlobalProgress(e, files, 0, iframe, settings); - if (typeof settings.onLoad === func) { - settings.onLoad(e, files, 0, iframe, settings); - } - multiLoader.complete(); - sequenceHandler.next(); - // Fix for IE endless progress bar activity bug - // (happens on form submits to iframe targets): - $('') - .appendTo(form).remove(); - }); - form - .attr('action', getUrl(settings)) - .attr('method', getMethod(settings)) - .attr('target', iframe.attr('name')); - legacyUploadFormDataInit(input, form, settings); - iframe.readyState = 2; - form.get(0).submit(); - legacyUploadFormDataReset(input, form, settings); - form - .attr('action', originalAction) - .attr('method', originalMethod) - .attr('target', originalTarget); - }; - if (settings.sequentialUploads) { - sequenceHandler.push(send); - } else { - send(); - } - }, - - handleLegacyUpload = function (event, input, form) { - // javascript:false as iframe src prevents warning popups on HTTPS in IE6: - var iframe = $(''), - uploadSettings = $.extend({}, settings), - files = event.target.files; - files = files ? Array.prototype.slice.call(files, 0) : [{name: input.val(), type: null, size: null}]; - uploadSettings.fileInput = input; - uploadSettings.uploadForm = form; - iframe.readyState = 0; - iframe.abort = function () { - iframe.trigger('abort'); - }; - iframe.bind('load', function () { - iframe.unbind('load'); - if (typeof uploadSettings.initUpload === func) { - uploadSettings.initUpload( - event, - files, - 0, - iframe, - uploadSettings, - function () { - legacyUpload(event, files, input, form, iframe, uploadSettings); - } - ); - } else { - legacyUpload(event, files, input, form, iframe, uploadSettings); - } - }).appendTo(form); - }, - - initUploadForm = function () { - uploadForm = (container.is('form') ? container : container.find('form')) - .filter(settings.uploadFormFilter); - }, - - initFileInput = function () { - fileInput = (uploadForm.length ? uploadForm : container).find('input:file') - .filter(settings.fileInputFilter); - }, - - replaceFileInput = function (input) { - var inputClone = input.clone(true); - $('
    ').append(inputClone).get(0).reset(); - input.after(inputClone).detach(); - initFileInput(); - }; - - this.onDocumentDragOver = function (e) { - if (typeof settings.onDocumentDragOver === func && - settings.onDocumentDragOver(e) === false) { - return false; - } - e.preventDefault(); - }; - - this.onDocumentDrop = function (e) { - if (typeof settings.onDocumentDrop === func && - settings.onDocumentDrop(e) === false) { - return false; - } - e.preventDefault(); - }; - - this.onDragOver = function (e) { - if (typeof settings.onDragOver === func && - settings.onDragOver(e) === false) { - return false; - } - var dataTransfer = e.originalEvent.dataTransfer; - if (dataTransfer && dataTransfer.files) { - dataTransfer.dropEffect = dataTransfer.effectAllowed = 'copy'; - e.preventDefault(); - } - }; - - this.onDrop = function (e) { - if (typeof settings.onDrop === func && - settings.onDrop(e) === false) { - return false; - } - var dataTransfer = e.originalEvent.dataTransfer; - if (dataTransfer && dataTransfer.files && isXHRUploadCapable()) { - handleFiles(e, dataTransfer.files); - } - e.preventDefault(); - }; - - this.onChange = function (e) { - if (typeof settings.onChange === func && - settings.onChange(e) === false) { - return false; - } - var input = $(e.target), - form = $(e.target.form); - if (form.length === 1) { - input.data(defaultNamespace + '_form', form); - replaceFileInput(input); - } else { - form = input.data(defaultNamespace + '_form'); - } - if (!settings.forceIframeUpload && e.target.files && isXHRUploadCapable()) { - handleFiles(e, e.target.files, input, form); - } else { - handleLegacyUpload(e, input, form); - } - }; - - this.init = function (options) { - if (options) { - $.extend(settings, options); - optionsReference = options; - } - initUploadForm(); - initFileInput(); - if (container.data(settings.namespace)) { - $.error('FileUpload with namespace "' + settings.namespace + '" already assigned to this element'); - return; - } - container - .data(settings.namespace, fileUpload) - .addClass(settings.cssClass); - settings.dropZone.not(container).addClass(settings.cssClass); - initEventHandlers(); - }; - - this.options = function (options) { - var oldCssClass, - oldDropZone, - uploadFormFilterUpdate, - fileInputFilterUpdate; - if (typeof options === undef) { - return $.extend({}, settings); - } - if (optionsReference) { - $.extend(optionsReference, options); - } - removeEventHandlers(); - $.each(options, function (name, value) { - switch (name) { - case 'namespace': - $.error('The FileUpload namespace cannot be updated.'); - return; - case 'uploadFormFilter': - uploadFormFilterUpdate = true; - fileInputFilterUpdate = true; - break; - case 'fileInputFilter': - fileInputFilterUpdate = true; - break; - case 'cssClass': - oldCssClass = settings.cssClass; - break; - case 'dropZone': - oldDropZone = settings.dropZone; - break; - } - settings[name] = value; - }); - if (uploadFormFilterUpdate) { - initUploadForm(); - } - if (fileInputFilterUpdate) { - initFileInput(); - } - if (typeof oldCssClass !== undef) { - container - .removeClass(oldCssClass) - .addClass(settings.cssClass); - (oldDropZone ? oldDropZone : settings.dropZone).not(container) - .removeClass(oldCssClass); - settings.dropZone.not(container).addClass(settings.cssClass); - } else if (oldDropZone) { - oldDropZone.not(container).removeClass(settings.cssClass); - settings.dropZone.not(container).addClass(settings.cssClass); - } - initEventHandlers(); - }; - - this.option = function (name, value) { - var options; - if (typeof value === undef) { - return settings[name]; - } - options = {}; - options[name] = value; - fileUpload.options(options); - }; - - this.destroy = function () { - removeEventHandlers(); - container - .removeData(settings.namespace) - .removeClass(settings.cssClass); - settings.dropZone.not(container).removeClass(settings.cssClass); - }; - - this.upload = function (files) { - if (typeof files.length === undef) { - files = [files]; - } - handleFiles(null, files); - }; - }; - - methods = { - init : function (options) { - return this.each(function () { - (new FileUpload($(this))).init(options); - }); - }, - - option: function (option, value, namespace) { - namespace = namespace ? namespace : defaultNamespace; - var fileUpload = $(this).data(namespace); - if (fileUpload) { - if (!option) { - return fileUpload.options(); - } else if (typeof option === 'string' && typeof value === undef) { - return fileUpload.option(option); - } - } else { - $.error('No FileUpload with namespace "' + namespace + '" assigned to this element'); - } - return this.each(function () { - var fu = $(this).data(namespace); - if (fu) { - if (typeof option === 'string') { - fu.option(option, value); - } else { - fu.options(option); - } - } else { - $.error('No FileUpload with namespace "' + namespace + '" assigned to this element'); - } - }); - }, - - destroy: function (namespace) { - namespace = namespace ? namespace : defaultNamespace; - return this.each(function () { - var fileUpload = $(this).data(namespace); - if (fileUpload) { - fileUpload.destroy(); - } else { - $.error('No FileUpload with namespace "' + namespace + '" assigned to this element'); - } - }); - }, - - upload: function (files, namespace) { - namespace = namespace ? namespace : defaultNamespace; - return this.each(function () { - var fileUpload = $(this).data(namespace); - if (fileUpload) { - fileUpload.upload(files); - } else { - $.error('No FileUpload with namespace "' + namespace + '" assigned to this element'); - } - }); - } - }; - - $.fn.fileUpload = function (method) { - if (methods[method]) { - return methods[method].apply(this, Array.prototype.slice.call(arguments, 1)); - } else if (typeof method === 'object' || !method) { - return methods.init.apply(this, arguments); - } else { - $.error('Method "' + method + '" does not exist on jQuery.fileUpload'); - } - }; - -}(jQuery)); \ No newline at end of file diff --git a/app/assets/javascripts/admin/jquery.tinymce.js b/app/assets/javascripts/admin/jquery.tinymce.js deleted file mode 100644 index 8e61a3c..0000000 --- a/app/assets/javascripts/admin/jquery.tinymce.js +++ /dev/null @@ -1 +0,0 @@ -(function(b){var e,d,a=[],c=window;b.fn.tinymce=function(j){var p=this,g,k,h,m,i,l="",n="";if(!p.length){return p}if(!j){return tinyMCE.get(p[0].id)}p.css("visibility","hidden");function o(){var r=[],q=0;if(f){f();f=null}p.each(function(t,u){var s,w=u.id,v=j.oninit;if(!w){u.id=w=tinymce.DOM.uniqueId()}s=new tinymce.Editor(w,j);r.push(s);s.onInit.add(function(){var x,y=v;p.css("visibility","");if(v){if(++q==r.length){if(tinymce.is(y,"string")){x=(y.indexOf(".")===-1)?null:tinymce.resolve(y.replace(/\.\w+$/,""));y=tinymce.resolve(y)}y.apply(x||tinymce,r)}}})});b.each(r,function(t,s){s.render()})}if(!c.tinymce&&!d&&(g=j.script_url)){d=1;h=g.substring(0,g.lastIndexOf("/"));if(/_(src|dev)\.js/g.test(g)){n="_src"}m=g.lastIndexOf("?");if(m!=-1){l=g.substring(m+1)}c.tinyMCEPreInit=c.tinyMCEPreInit||{base:h,suffix:n,query:l};if(g.indexOf("gzip")!=-1){i=j.language||"en";g=g+(/\?/.test(g)?"&":"?")+"js=true&core=true&suffix="+escape(n)+"&themes="+escape(j.theme)+"&plugins="+escape(j.plugins)+"&languages="+i;if(!c.tinyMCE_GZ){tinyMCE_GZ={start:function(){tinymce.suffix=n;function q(r){tinymce.ScriptLoader.markDone(tinyMCE.baseURI.toAbsolute(r))}q("langs/"+i+".js");q("themes/"+j.theme+"/editor_template"+n+".js");q("themes/"+j.theme+"/langs/"+i+".js");b.each(j.plugins.split(","),function(s,r){if(r){q("plugins/"+r+"/editor_plugin"+n+".js");q("plugins/"+r+"/langs/"+i+".js")}})},end:function(){}}}}b.ajax({type:"GET",url:g,dataType:"script",cache:true,success:function(){tinymce.dom.Event.domLoaded=1;d=2;if(j.script_loaded){j.script_loaded()}o();b.each(a,function(q,r){r()})}})}else{if(d===1){a.push(o)}else{o()}}return p};b.extend(b.expr[":"],{tinymce:function(g){return g.id&&!!tinyMCE.get(g.id)}});function f(){function i(l){if(l==="remove"){this.each(function(n,o){var m=h(o);if(m){m.remove()}})}this.find("span.mceEditor,div.mceEditor").each(function(n,o){var m=tinyMCE.get(o.id.replace(/_parent$/,""));if(m){m.remove()}})}function k(n){var m=this,l;if(n!==e){i.call(m);m.each(function(p,q){var o;if(o=tinyMCE.get(q.id)){o.setContent(n)}})}else{if(m.length>0){if(l=tinyMCE.get(m[0].id)){return l.getContent()}}}}function h(m){var l=null;(m)&&(m.id)&&(c.tinymce)&&(l=tinyMCE.get(m.id));return l}function g(l){return !!((l)&&(l.length)&&(c.tinymce)&&(l.is(":tinymce")))}var j={};b.each(["text","html","val"],function(n,l){var o=j[l]=b.fn[l],m=(l==="text");b.fn[l]=function(s){var p=this;if(!g(p)){return o.apply(p,arguments)}if(s!==e){k.call(p.filter(":tinymce"),s);o.apply(p.not(":tinymce"),arguments);return p}else{var r="";var q=arguments;(m?p:p.eq(0)).each(function(u,v){var t=h(v);r+=t?(m?t.getContent().replace(/<(?:"[^"]*"|'[^']*'|[^'">])*>/g,""):t.getContent()):o.apply(b(v),q)});return r}}});b.each(["append","prepend"],function(n,m){var o=j[m]=b.fn[m],l=(m==="prepend");b.fn[m]=function(q){var p=this;if(!g(p)){return o.apply(p,arguments)}if(q!==e){p.filter(":tinymce").each(function(s,t){var r=h(t);r&&r.setContent(l?q+r.getContent():r.getContent()+q)});o.apply(p.not(":tinymce"),arguments);return p}}});b.each(["remove","replaceWith","replaceAll","empty"],function(m,l){var n=j[l]=b.fn[l];b.fn[l]=function(){i.call(this,l);return n.apply(this,arguments)}});j.attr=b.fn.attr;b.fn.attr=function(n,q,o){var m=this;if((!n)||(n!=="value")||(!g(m))){return j.attr.call(m,n,q,o)}if(q!==e){k.call(m.filter(":tinymce"),q);j.attr.call(m.not(":tinymce"),n,q,o);return m}else{var p=m[0],l=h(p);return l?l.getContent():j.attr.call(b(p),n,q,o)}}}})(jQuery); \ No newline at end of file diff --git a/app/assets/javascripts/admin/manager.js b/app/assets/javascripts/admin/manager.js deleted file mode 100644 index 92064ba..0000000 --- a/app/assets/javascripts/admin/manager.js +++ /dev/null @@ -1,173 +0,0 @@ -var manager_response = ""; -var manager_callback_function = null; - -function manager_load() { - - - $(document).bind("keydown",function(e) { - // ESCAPE key pressed - if (e.keyCode == 27) { - manager_hide(); - } - }); - - - -} - -function manager_show(url){ - - initialize_manager(); - - manager_response = null; - $('#manager_box').html(""); - - $("#manager_box_place").show("fast", function (){ - $("#manager_box_place").addClass("manager_box_place_active"); - $('#manager_box').load(url, function (){ - image_files_load(); - data_files_load(); - initialize_uploads(); - - unset_busy(); - } - ) - - - }); - - - - - - -} - - -function manager_hide(){ - $("#manager_box_place").removeClass("manager_box_place_active"); - - $("body").css("overflow", "auto"); - slider_enabled = null; - - - -} -$(document).ready(function ($) { - manager_load(); - - $('#test_manager').live('click', function (){ - - - manager_prompt(function(m_return){alert(m_return);}); - - - - - }); - - - - -}); - - - -function manager_prompt(url, callback) { - manager_callback_function = callback; - manager_show(url); -} - -function manager_send_response(send_value){ - - manager_hide(); - manager_callback_function(send_value); - - -} - -function select_image_from_manager(input_id){ - - manager_prompt("/admin/image_files/?manager=true",function(m_return){ - - $('#input_'+input_id).val(m_return.image_file_id); - $('#img_'+input_id).attr("src",m_return.thumb); - $('#name_'+input_id).val(m_return.name); - - }); - -} - -function select_gallery_images_from_manager(gallery_content_id){ - - manager_prompt("/admin/image_files/?manager=true&multiple=true",function(m_return){ - - $.ajax({url:"/portlet/gallery_images/", type: "POST", data : { image_file_ids : m_return, gallery_content_id : gallery_content_id }}); - - - }); - -} - - - -function select_file_from_manager(input_id){ - manager_prompt("/admin/data_files/?manager=true",function(m_return){ - - $('#input_'+input_id).val(m_return.data_file_id); - - $('#name_'+input_id).html(m_return.name); - - }); - -} - - - -function manager_send_multiple_image_files(){ - - - - manager_send_response(multiple_selection_ids()); -} - - - -function manager_send_image_file(image_file_id){ - - - var image_file_div = $('#image_file_'+image_file_id); - - manager_send_response({thumb : image_file_div.attr("data_thumb"), image_file_id : image_file_div.attr("data_id"), name : image_file_div.attr("data_name")}); -} - -function manager_send_cible(cible_id, cible_type, cible_name){ - - manager_send_response({cible_id : cible_id, cible_type : cible_type, cible_name : cible_name}); -} - - -function manager_send_data_file(data_file_id){ - - - var data_file_div = $('#data_file_'+data_file_id); - - manager_send_response({data_file_id : data_file_div.data("id"), name : data_file_div.data("name")}); -} - - - -function initialize_manager(){ - - if($('#manager_box_place').length == 0){ - - $('body').prepend('
    '); - - } - - - - - -} - diff --git a/app/assets/javascripts/admin/menu_items.js b/app/assets/javascripts/admin/menu_items.js deleted file mode 100644 index db0f6cd..0000000 --- a/app/assets/javascripts/admin/menu_items.js +++ /dev/null @@ -1,109 +0,0 @@ -function initialize_menu_items(){ - $( ".menu_item_row" ).draggable({ - revert:"invalid", - handle:".grip", - zIndex: 2700, - opacity: 0.35, - cursorAt: { left: 400 }, - //snap: true, - //snapTolerance: 40, - helper: 'clone', - start: function(event, ui) { - $( this ).css("background", "#F9F9F9" ); - $( this ).next().droppable( "option", "disabled", true ); - $( this ).prev().droppable( "option", "disabled", true ); - }, - drag: function(){ - }, - stop: function(){ - $( this ).next().droppable( "option", "disabled", false ); - $( this ).prev().droppable( "option", "disabled", false ); - $( this ).css("background", "white" ); - } - }); - - $(".receptable").droppable({ - hoverClass:"hoverhighlight", - tolerance : "pointer", - drop: function( event, ui ) { - ui.draggable.fadeOut(); - - $.ajax({ - url:"/admin/menu_items/"+ui.draggable.attr("data-menu_item_id")+".js", - type: "PUT", - data: { - reorder : true, - menu_item : { - parent_id : $(this).attr("data-parent_id") - } - }, - success : function (){ - initialize_menu_items(); - } - }); - - - } - }); - - $(".receptable_position").droppable({ - hoverClass:"hoverhighlight_position", - tolerance : "pointer", - drop: function( event, ui ) { - ui.draggable.fadeOut(); - - $.ajax({ - url:"/admin/menu_items/"+ui.draggable.attr("data-menu_item_id")+".js", - type: "PUT", - data: { - reorder : true, - menu_item : { - position : $(this).attr("data-position") - } - }, - success : function (){ - initialize_menu_items(); - } - }); - - - - } - }); - - -} - -$(document).ready(function(){ - initialize_menu_items(); - - - $(".switch").live('click',function(){ - - - $(this).toggleClass("on"); - - }); - - $(".menu_item_enabled_switch").live('click',function(){ - - - $.ajax({ - url:"/admin/menu_items/"+$(this).data("menu_item_id")+".js", - type: "PUT", - data: { - menu_item : { - enabled : $(this).hasClass("on") - } - }, - success : function (){ - - } - }); - - - - }); - - -}); \ No newline at end of file diff --git a/app/assets/javascripts/admin/pages_actions.js.coffee b/app/assets/javascripts/admin/pages_actions.js.coffee deleted file mode 100644 index 4ab0179..0000000 --- a/app/assets/javascripts/admin/pages_actions.js.coffee +++ /dev/null @@ -1,43 +0,0 @@ - - -$('.menu_item_row .show_details').live "click", -> - url = $(this).attr("href")+".html" - - $(this).closest(".menu_item_row").addClass('active') - $('#menu_item_detail').load url, -> - - $("#menu_item_detail").show().delay(1).css - "-webkit-transition-duration": "0.8s" - "-webkit-transform": "scale(1)" - "-moz-transition-duration": "0.8s" - "margin-right": "0px" - - - $("#menu_item_index_slide").show().delay(1).css - "-webkit-transition-duration": "0.8s" - "-moz-transition-duration": "0.8s" - "margin-left": "-110%" - "margin-right": "110%" - false - -$('#menu_item_detail .hide').live "click", -> - $("#menu_item_detail #content_types_draggables").hide(); - - $("#menu_item_index_slide").show().delay(1).css - "-webkit-transition-duration": "0.8s" - "-moz-transition-duration": "0.8s" - "margin-left": "0%" - "margin-right": "0%" - - - $("#menu_item_detail").css( - "-webkit-transition-duration": "0.8s" - "-webkit-transform": "scale(0.2)" - "-moz-transition-duration": "0.8s" - "margin-right": "-110%").delay(800).queue -> - $("#menu_item_detail").html("").clearQueue() - false - - - false - diff --git a/app/assets/javascripts/admin/pane_hover.js b/app/assets/javascripts/admin/pane_hover.js deleted file mode 100644 index baa8297..0000000 --- a/app/assets/javascripts/admin/pane_hover.js +++ /dev/null @@ -1,49 +0,0 @@ - - -function show_pane_hover(content, width, height, zindex){ - var width = width || 500; - var height = height || 500; - var zindex = zindex || 1000; - initialize_pane_hover(); - - - - - - $('#qi_pane_hover_content').html(content); - $('#qi_pane_hover_content').data("height",height); - $('#qi_pane_hover_content').css({"width" : width+"px","height" : height+"px","z-index" : zindex, "margin-top":"-"+height+"px"}); - - $('#qi_pane_hover_content .actions').prepend('
    Annuler'); - $('#qi_pane_hover_content').css("display","block").delay(1).css({"-webkit-transition-duration":"0.5s","-moz-transition-duration":"0.5s", "margin-top":"0px"}); - - -} - - - - -function close_pane_hover(){ - - $('#qi_pane_hover_content').css("display","block").delay(1).css({"-webkit-transition-duration":"0.5s","-moz-transition-duration":"0.5s", "margin-top":"-"+$('#qi_pane_hover_content').data("height")+"px"}).delay(500).queue(function() { - $('#qi_pane_hover').remove(); - }); - - - - - -} - -function initialize_pane_hover(){ - if($('#qi_pane_hover').length == 0){ - - $('body').append('
    '); - - } - - -} - - - diff --git a/app/assets/javascripts/admin/qi_core.js b/app/assets/javascripts/admin/qi_core.js deleted file mode 100644 index 20d98f3..0000000 --- a/app/assets/javascripts/admin/qi_core.js +++ /dev/null @@ -1,111 +0,0 @@ - - - -function auto_load_divs() { - $('div[data-load]').live("resize",function () { - - auto_load_div($(this)); - - - }); - - - -} - -function auto_load_div(div_to_load) { - - - url = div_to_load.attr("data-url"); - - - - div_to_load.children(".ajax_load_content").hide(); - - - - div_to_load.children(".ajax_load_content").load(url, function() { - - $(this).show();block_js_initialize();} - ) - - -} - -function update_auto_load_div(url, div_to_load) -{ - - div = $("#"+div_to_load); - - div.attr("data-url", url); - auto_load_div(div); - - -} - -function when_admin_load() { - - $('.closeable').hide().fadeIn().delay(2000).fadeOut(); - - - - - - auto_load_divs(); - - - - $(".update_auto_load_div").live("click",function() { - - - update_auto_load_div($(this).attr("href"), $(this).attr("data_div_id")); - - $(this).parent().children("a").removeClass("selected"); - $(this).addClass("selected"); - - return false; - }); - - -} - - -function flash_notice(text) { - $('#flash').html(''); - $('#flash').html(''); - - $('#flash_notice').fadeIn(); - $('#flash_notice').delay(2000).fadeOut(); - - - -} - - -function flash_alert(text) { - $('#flash').html(''); - $('#flash').html(''); - - $('#flash_alert').fadeIn(); - $('#flash_alert').delay(4000).fadeOut(); - - - -} - - -function set_busy(){ - $('body').append('
    '); - $('#busy').activity({segments: 8, steps: 5, opacity: 0.5, width: 10, space: 0, length: 10, color: '#212222', speed: 1.5}); -} - - -function unset_busy(){ - $('#busy').remove(); - -} - - -$(document).ready(function () { - when_admin_load(); -}); diff --git a/app/assets/javascripts/admin/timepicker.coffee b/app/assets/javascripts/admin/timepicker.coffee deleted file mode 100644 index c77bd3f..0000000 --- a/app/assets/javascripts/admin/timepicker.coffee +++ /dev/null @@ -1,8 +0,0 @@ -$ -> - - $('.timepicker_container .suppr img').click -> - $(this).closest('.timepicker_container').children('input').attr('value', '') - false - - "false" - \ No newline at end of file diff --git a/app/assets/javascripts/admin/uploads.js b/app/assets/javascripts/admin/uploads.js deleted file mode 100644 index 2da0939..0000000 --- a/app/assets/javascripts/admin/uploads.js +++ /dev/null @@ -1,90 +0,0 @@ -function initialize_uploads() -{ - - - - $('#data_file_upload_field').fileUploadUI({ - uploadTable: $('#files'), - namespace : "data_file_upload", - downloadTable: $('#files'), - dragDropSupport : true, - onLoad : function (event, files, index, xhr, handler) { - var json; - if (typeof xhr.responseText !== "undefinied") { - eval(xhr.responseText); - } else { - - eval(xhr.contents().text()); - } - handler.uploadRow.remove(); - - - } , - onLoadAll: function (){ - $('#data_files .new').each(function (){ - - $(this).removeClass("new"); - - - }); - update_multiple_selection_text(); - - }, - buildUploadRow: function (files, index) { - return $('' + files[index].name + '<\/td>' + - '
    <\/div><\/td>' + - '' + - 'Pen_alt_stroke_16x16' + - - '<\/td><\/tr>'); - } - }); - - - - $('#image_upload_field').fileUploadUI({ - uploadTable: $('#files'), - downloadTable: $('#files'), - namespace : "image_file_upload", - dragDropSupport : true, - onLoad : function (event, files, index, xhr, handler) { - var json; - if (typeof xhr.responseText !== "undefinied") { - eval(xhr.responseText); - } else { - - eval(xhr.contents().text()); - } - handler.uploadRow.remove(); - - - } , - onLoadAll: function (){ - $('#image_files .new').each(function (){ - - $(this).removeClass("new"); - - - }); - update_multiple_selection_text(); - - }, - buildUploadRow: function (files, index) { - return $('' + files[index].name + '<\/td>' + - '
    <\/div><\/td>' + - '' + - 'Pen_alt_stroke_16x16' + - - '<\/td><\/tr>'); - } - }); - - -}; - -$(document).ready(function ($) { - initialize_uploads(); - - -}); - diff --git a/app/assets/javascripts/application.js b/app/assets/javascripts/application.js new file mode 100644 index 0000000..1f0aa87 --- /dev/null +++ b/app/assets/javascripts/application.js @@ -0,0 +1,77 @@ +// This is a manifest file that'll be compiled into application.js, which will include all the files +// listed below. +// +// Any JavaScript/Coffee file within this directory, lib/assets/javascripts, vendor/assets/javascripts, +// or vendor/assets/javascripts of plugins, if any, can be referenced here using a relative path. +// +// It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the +// the compiled file. +// +// WARNING: THE FIRST BLANK LINE MARKS THE END OF WHAT'S TO BE PROCESSED, ANY BLANK LINE SHOULD +// GO AFTER THE REQUIRES BELOW. +// +//= require jquery +//= require jquery_ujs + +function size_image_blocks(){ + height = $(window).height(); + + + $('.image_block').css("height", height+"px"); +}; + + + + +function preload(arrayOfImages) { + $(arrayOfImages).each(function(){ + (new Image()).src = this; + + }); +} + + + +var dpr = 1; +if(window.devicePixelRatio !== undefined) dpr = window.devicePixelRatio; + +$(document).ready(function(){ + + + + + + + + + size_image_blocks(); + + $(window).bind('resize',function(){ + size_image_blocks(); + + }); + + + $('.miniatures').click(function (){ + + $("#small_index").toggleClass("active"); + }); + $(document).keydown(function(e){ + if (e.keyCode == 37) { + $("#prev").click(); + return false; + } + if (e.keyCode == 39) { + $("#next").click(); + return false; + } + }); + + + + + + + +}); + diff --git a/app/assets/javascripts/connexion.js b/app/assets/javascripts/connexion.js deleted file mode 100644 index aee0e68..0000000 --- a/app/assets/javascripts/connexion.js +++ /dev/null @@ -1,10 +0,0 @@ -/* - -*= require ./shared/jquery -*= require jquery_ujs - -*= require ./shared/modernizr.custom.39712.js -*= require ./admin/browser - - -*/ \ No newline at end of file diff --git a/app/assets/javascripts/public.js.coffee b/app/assets/javascripts/public.js.coffee deleted file mode 100644 index ac084d2..0000000 --- a/app/assets/javascripts/public.js.coffee +++ /dev/null @@ -1,11 +0,0 @@ - -#= require jquery - -#= require jquery_ujs - - - - -$ -> - - #dfdf \ No newline at end of file diff --git a/app/assets/javascripts/shared/ace.js b/app/assets/javascripts/shared/ace.js new file mode 100755 index 0000000..520b8fc --- /dev/null +++ b/app/assets/javascripts/shared/ace.js @@ -0,0 +1,11 @@ +(function(){function o(e){var i=function(e,t){return r("",e,t)},s=t;e&&(t[e]||(t[e]={}),s=t[e]);if(!s.define||!s.define.packaged)n.original=s.define,s.define=n,s.define.packaged=!0;if(!s.require||!s.require.packaged)r.original=s.require,s.require=i,s.require.packaged=!0}var e="ace",t=function(){return this}();if(!e&&typeof requirejs!="undefined")return;var n=function(e,t,r){if(typeof e!="string"){n.original?n.original.apply(window,arguments):(console.error("dropping module because define wasn't a string."),console.trace());return}arguments.length==2&&(r=t),n.modules||(n.modules={}),n.modules[e]=r},r=function(e,t,n){if(Object.prototype.toString.call(t)==="[object Array]"){var i=[];for(var o=0,u=t.length;o1&&u(t,"")>-1&&(a=RegExp(this.source,r.replace.call(o(this),"g","")),r.replace.call(e.slice(t.index),a,function(){for(var e=1;et.index&&this.lastIndex--}return t},s||(RegExp.prototype.test=function(e){var t=r.exec.call(this,e);return t&&this.global&&!t[0].length&&this.lastIndex>t.index&&this.lastIndex--,!!t})}),ace.define("ace/lib/es5-shim",["require","exports","module"],function(e,t,n){function m(e){try{return Object.defineProperty(e,"sentinel",{}),"sentinel"in e}catch(t){}}Function.prototype.bind||(Function.prototype.bind=function(t){var n=this;if(typeof n!="function")throw new TypeError;var r=o.call(arguments,1),i=function(){if(this instanceof i){var e=function(){};e.prototype=n.prototype;var s=new e,u=n.apply(s,r.concat(o.call(arguments)));return u!==null&&Object(u)===u?u:s}return n.apply(t,r.concat(o.call(arguments)))};return i});var r=Function.prototype.call,i=Array.prototype,s=Object.prototype,o=i.slice,u=r.bind(s.toString),a=r.bind(s.hasOwnProperty),f,l,c,h,p;if(p=a(s,"__defineGetter__"))f=r.bind(s.__defineGetter__),l=r.bind(s.__defineSetter__),c=r.bind(s.__lookupGetter__),h=r.bind(s.__lookupSetter__);Array.isArray||(Array.isArray=function(t){return u(t)=="[object Array]"}),Array.prototype.forEach||(Array.prototype.forEach=function(t){var n=D(this),r=arguments[1],i=0,s=n.length>>>0;if(u(t)!="[object Function]")throw new TypeError;while(i>>0,i=Array(r),s=arguments[1];if(u(t)!="[object Function]")throw new TypeError;for(var o=0;o>>0,i=[],s=arguments[1];if(u(t)!="[object Function]")throw new TypeError;for(var o=0;o>>0,i=arguments[1];if(u(t)!="[object Function]")throw new TypeError;for(var s=0;s>>0,i=arguments[1];if(u(t)!="[object Function]")throw new TypeError;for(var s=0;s>>0;if(u(t)!="[object Function]")throw new TypeError;if(!r&&arguments.length==1)throw new TypeError;var i=0,s;if(arguments.length>=2)s=arguments[1];else do{if(i in n){s=n[i++];break}if(++i>=r)throw new TypeError}while(!0);for(;i>>0;if(u(t)!="[object Function]")throw new TypeError;if(!r&&arguments.length==1)throw new TypeError;var i,s=r-1;if(arguments.length>=2)i=arguments[1];else do{if(s in n){i=n[s--];break}if(--s<0)throw new TypeError}while(!0);do s in this&&(i=t.call(void 0,i,n[s],s,n));while(s--);return i}),Array.prototype.indexOf||(Array.prototype.indexOf=function(t){var n=D(this),r=n.length>>>0;if(!r)return-1;var i=0;arguments.length>1&&(i=M(arguments[1])),i=i>=0?i:Math.max(0,r+i);for(;i>>0;if(!r)return-1;var i=r-1;arguments.length>1&&(i=Math.min(i,M(arguments[1]))),i=i>=0?i:r-Math.abs(i);for(;i>=0;i--)if(i in n&&t===n[i])return i;return-1}),Object.getPrototypeOf||(Object.getPrototypeOf=function(t){return t.__proto__||(t.constructor?t.constructor.prototype:s)});if(!Object.getOwnPropertyDescriptor){var d="Object.getOwnPropertyDescriptor called on a non-object: ";Object.getOwnPropertyDescriptor=function(t,n){if(typeof t!="object"&&typeof t!="function"||t===null)throw new TypeError(d+t);if(!a(t,n))return;var r,i,o;r={enumerable:!0,configurable:!0};if(p){var u=t.__proto__;t.__proto__=s;var i=c(t,n),o=h(t,n);t.__proto__=u;if(i||o)return i&&(r.get=i),o&&(r.set=o),r}return r.value=t[n],r}}Object.getOwnPropertyNames||(Object.getOwnPropertyNames=function(t){return Object.keys(t)});if(!Object.create){var v;Object.prototype.__proto__===null?v=function(){return{__proto__:null}}:v=function(){var e={};for(var t in e)e[t]=null;return e.constructor=e.hasOwnProperty=e.propertyIsEnumerable=e.isPrototypeOf=e.toLocaleString=e.toString=e.valueOf=e.__proto__=null,e},Object.create=function(t,n){var r;if(t===null)r=v();else{if(typeof t!="object")throw new TypeError("typeof prototype["+typeof t+"] != 'object'");var i=function(){};i.prototype=t,r=new i,r.__proto__=t}return n!==void 0&&Object.defineProperties(r,n),r}}if(Object.defineProperty){var g=m({}),y=typeof document=="undefined"||m(document.createElement("div"));if(!g||!y)var b=Object.defineProperty}if(!Object.defineProperty||b){var w="Property description must be an object: ",E="Object.defineProperty called on non-object: ",S="getters & setters can not be defined on this javascript engine";Object.defineProperty=function(t,n,r){if(typeof t!="object"&&typeof t!="function"||t===null)throw new TypeError(E+t);if(typeof r!="object"&&typeof r!="function"||r===null)throw new TypeError(w+r);if(b)try{return b.call(Object,t,n,r)}catch(i){}if(a(r,"value"))if(p&&(c(t,n)||h(t,n))){var o=t.__proto__;t.__proto__=s,delete t[n],t[n]=r.value,t.__proto__=o}else t[n]=r.value;else{if(!p)throw new TypeError(S);a(r,"get")&&f(t,n,r.get),a(r,"set")&&l(t,n,r.set)}return t}}Object.defineProperties||(Object.defineProperties=function(t,n){for(var r in n)a(n,r)&&Object.defineProperty(t,r,n[r]);return t}),Object.seal||(Object.seal=function(t){return t}),Object.freeze||(Object.freeze=function(t){return t});try{Object.freeze(function(){})}catch(x){Object.freeze=function(t){return function(n){return typeof n=="function"?n:t(n)}}(Object.freeze)}Object.preventExtensions||(Object.preventExtensions=function(t){return t}),Object.isSealed||(Object.isSealed=function(t){return!1}),Object.isFrozen||(Object.isFrozen=function(t){return!1}),Object.isExtensible||(Object.isExtensible=function(t){if(Object(t)===t)throw new TypeError;var n="";while(a(t,n))n+="?";t[n]=!0;var r=a(t,n);return delete t[n],r});if(!Object.keys){var T=!0,N=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],C=N.length;for(var k in{toString:null})T=!1;Object.keys=function P(e){if(typeof e!="object"&&typeof e!="function"||e===null)throw new TypeError("Object.keys called on a non-object");var P=[];for(var t in e)a(e,t)&&P.push(t);if(T)for(var n=0,r=C;n9999?"+":"")+("00000"+Math.abs(i)).slice(0<=i&&i<=9999?-4:-6),n=t.length;while(n--)r=t[n],r<10&&(t[n]="0"+r);return i+"-"+t.slice(0,2).join("-")+"T"+t.slice(2).join(":")+"."+("000"+this.getUTCMilliseconds()).slice(-3)+"Z"};Date.now||(Date.now=function(){return(new Date).getTime()}),Date.prototype.toJSON||(Date.prototype.toJSON=function(t){if(typeof this.toISOString!="function")throw new TypeError;return this.toISOString()}),Date.parse("+275760-09-13T00:00:00.000Z")!==864e13&&(Date=function(e){var t=function i(t,n,r,s,o,u,a){var f=arguments.length;if(this instanceof e){var l=f==1&&String(t)===t?new e(i.parse(t)):f>=7?new e(t,n,r,s,o,u,a):f>=6?new e(t,n,r,s,o,u):f>=5?new e(t,n,r,s,o):f>=4?new e(t,n,r,s):f>=3?new e(t,n,r):f>=2?new e(t,n):f>=1?new e(t):new e;return l.constructor=i,l}return e.apply(this,arguments)},n=new RegExp("^(\\d{4}|[+-]\\d{6})(?:-(\\d{2})(?:-(\\d{2})(?:T(\\d{2}):(\\d{2})(?::(\\d{2})(?:\\.(\\d{3}))?)?(?:Z|(?:([-+])(\\d{2}):(\\d{2})))?)?)?)?$");for(var r in e)t[r]=e[r];return t.now=e.now,t.UTC=e.UTC,t.prototype=e.prototype,t.prototype.constructor=t,t.parse=function(r){var i=n.exec(r);if(i){i.shift();for(var s=1;s<7;s++)i[s]=+(i[s]||(s<3?1:0)),s==1&&i[s]--;var o=+i.pop(),u=+i.pop(),a=i.pop(),f=0;if(a){if(u>23||o>59)return NaN;f=(u*60+o)*6e4*(a=="+"?-1:1)}var l=+i[0];return 0<=l&&l<=99?(i[0]=l+400,e.UTC.apply(this,i)+f-126227808e5):e.UTC.apply(this,i)+f}return e.parse.apply(this,arguments)},t}(Date));var L=" \n \f\r   ᠎              \u2028\u2029";if(!String.prototype.trim||L.trim()){L="["+L+"]";var A=new RegExp("^"+L+L+"*"),O=new RegExp(L+L+"*$");String.prototype.trim=function(){return String(this).replace(A,"").replace(O,"")}}var M=function(e){return e=+e,e!==e?e=0:e!==0&&e!==1/0&&e!==-1/0&&(e=(e>0||-1)*Math.floor(Math.abs(e))),e},_="a"[0]!="a",D=function(e){if(e==null)throw new TypeError;return _&&typeof e=="string"&&e?e.split(""):Object(e)}}),ace.define("ace/lib/dom",["require","exports","module"],function(e,t,n){var r="http://www.w3.org/1999/xhtml";t.createElement=function(e,t){return document.createElementNS?document.createElementNS(t||r,e):document.createElement(e)},t.setText=function(e,t){e.innerText!==undefined&&(e.innerText=t),e.textContent!==undefined&&(e.textContent=t)},t.hasCssClass=function(e,t){var n=e.className.split(/\s+/g);return n.indexOf(t)!==-1},t.addCssClass=function(e,n){t.hasCssClass(e,n)||(e.className+=" "+n)},t.removeCssClass=function(e,t){var n=e.className.split(/\s+/g);for(;;){var r=n.indexOf(t);if(r==-1)break;n.splice(r,1)}e.className=n.join(" ")},t.toggleCssClass=function(e,t){var n=e.className.split(/\s+/g),r=!0;for(;;){var i=n.indexOf(t);if(i==-1)break;r=!1,n.splice(i,1)}return r&&n.push(t),e.className=n.join(" "),r},t.setCssClass=function(e,n,r){r?t.addCssClass(e,n):t.removeCssClass(e,n)},t.hasCssString=function(e,t){var n=0,r;t=t||document;if(t.createStyleSheet&&(r=t.styleSheets)){while(n5||Math.abs(e.clientY-a)>5;if(!f||i)o=0;o+=1,f&&clearTimeout(f),f=setTimeout(function(){f=null},n[o-1]||600)}o==1&&(u=e.clientX,a=e.clientY),r[s]("mousedown",e);if(o>4)o=0;else if(o>1)return r[s](l[o],e)}),i.isOldIE&&t.addListener(e,"dblclick",function(e){o=2,f&&clearTimeout(f),f=setTimeout(function(){f=null},n[o-1]||600),r[s]("mousedown",e),r[s](l[o],e)})},t.addCommandKeyListener=function(e,n){var r=t.addListener;if(i.isOldGecko||i.isOpera&&!("KeyboardEvent"in window)){var s=null;r(e,"keydown",function(e){s=e.keyCode}),r(e,"keypress",function(e){return o(n,e,s)})}else{var u=null;r(e,"keydown",function(e){return u=e.keyIdentifier||e.keyCode,o(n,e,e.keyCode)})}};if(window.postMessage&&!i.isOldIE){var u=1;t.nextTick=function(e,n){n=n||window;var r="zero-timeout-message-"+u;t.addListener(n,"message",function i(s){s.data==r&&(t.stopPropagation(s),t.removeListener(n,"message",i),e())}),n.postMessage(r,"*")}}t.nextFrame=window.requestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame,t.nextFrame?t.nextFrame=t.nextFrame.bind(window):t.nextFrame=function(e){setTimeout(e,17)}}),ace.define("ace/lib/keys",["require","exports","module","ace/lib/oop"],function(e,t,n){var r=e("./oop"),i=function(){var e={MODIFIER_KEYS:{16:"Shift",17:"Ctrl",18:"Alt",224:"Meta"},KEY_MODS:{ctrl:1,alt:2,option:2,shift:4,meta:8,command:8},FUNCTION_KEYS:{8:"Backspace",9:"Tab",13:"Return",19:"Pause",27:"Esc",32:"Space",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"Left",38:"Up",39:"Right",40:"Down",44:"Print",45:"Insert",46:"Delete",96:"Numpad0",97:"Numpad1",98:"Numpad2",99:"Numpad3",100:"Numpad4",101:"Numpad5",102:"Numpad6",103:"Numpad7",104:"Numpad8",105:"Numpad9",112:"F1",113:"F2",114:"F3",115:"F4",116:"F5",117:"F6",118:"F7",119:"F8",120:"F9",121:"F10",122:"F11",123:"F12",144:"Numlock",145:"Scrolllock"},PRINTABLE_KEYS:{32:" ",48:"0",49:"1",50:"2",51:"3",52:"4",53:"5",54:"6",55:"7",56:"8",57:"9",59:";",61:"=",65:"a",66:"b",67:"c",68:"d",69:"e",70:"f",71:"g",72:"h",73:"i",74:"j",75:"k",76:"l",77:"m",78:"n",79:"o",80:"p",81:"q",82:"r",83:"s",84:"t",85:"u",86:"v",87:"w",88:"x",89:"y",90:"z",107:"+",109:"-",110:".",188:",",190:".",191:"/",192:"`",219:"[",220:"\\",221:"]",222:"'"}};for(var t in e.FUNCTION_KEYS){var n=e.FUNCTION_KEYS[t].toLowerCase();e[n]=parseInt(t,10)}return r.mixin(e,e.MODIFIER_KEYS),r.mixin(e,e.PRINTABLE_KEYS),r.mixin(e,e.FUNCTION_KEYS),e.enter=e["return"],e.escape=e.esc,e.del=e["delete"],e[173]="-",e}();r.mixin(t,i),t.keyCodeToString=function(e){return(i[e]||String.fromCharCode(e)).toLowerCase()}}),ace.define("ace/lib/oop",["require","exports","module"],function(e,t,n){t.inherits=function(){var e=function(){};return function(t,n){e.prototype=n.prototype,t.super_=n.prototype,t.prototype=new e,t.prototype.constructor=t}}(),t.mixin=function(e,t){for(var n in t)e[n]=t[n]},t.implement=function(e,n){t.mixin(e,n)}}),ace.define("ace/lib/useragent",["require","exports","module"],function(e,t,n){t.OS={LINUX:"LINUX",MAC:"MAC",WINDOWS:"WINDOWS"},t.getOS=function(){return t.isMac?t.OS.MAC:t.isLinux?t.OS.LINUX:t.OS.WINDOWS};if(typeof navigator!="object")return;var r=(navigator.platform.match(/mac|win|linux/i)||["other"])[0].toLowerCase(),i=navigator.userAgent;t.isWin=r=="win",t.isMac=r=="mac",t.isLinux=r=="linux",t.isIE=navigator.appName=="Microsoft Internet Explorer"&&parseFloat(navigator.userAgent.match(/MSIE ([0-9]+[\.0-9]+)/)[1]),t.isOldIE=t.isIE&&t.isIE<9,t.isGecko=t.isMozilla=window.controllers&&window.navigator.product==="Gecko",t.isOldGecko=t.isGecko&&parseInt((navigator.userAgent.match(/rv\:(\d+)/)||[])[1],10)<4,t.isOpera=window.opera&&Object.prototype.toString.call(window.opera)=="[object Opera]",t.isWebKit=parseFloat(i.split("WebKit/")[1])||undefined,t.isChrome=parseFloat(i.split(" Chrome/")[1])||undefined,t.isAIR=i.indexOf("AdobeAIR")>=0,t.isIPad=i.indexOf("iPad")>=0,t.isTouchPad=i.indexOf("TouchPad")>=0}),ace.define("ace/editor",["require","exports","module","ace/lib/fixoldbrowsers","ace/lib/oop","ace/lib/lang","ace/lib/useragent","ace/keyboard/textinput","ace/mouse/mouse_handler","ace/mouse/fold_handler","ace/keyboard/keybinding","ace/edit_session","ace/search","ace/range","ace/lib/event_emitter","ace/commands/command_manager","ace/commands/default_commands"],function(e,t,n){e("./lib/fixoldbrowsers");var r=e("./lib/oop"),i=e("./lib/lang"),s=e("./lib/useragent"),o=e("./keyboard/textinput").TextInput,u=e("./mouse/mouse_handler").MouseHandler,a=e("./mouse/fold_handler").FoldHandler,f=e("./keyboard/keybinding").KeyBinding,l=e("./edit_session").EditSession,c=e("./search").Search,h=e("./range").Range,p=e("./lib/event_emitter").EventEmitter,d=e("./commands/command_manager").CommandManager,v=e("./commands/default_commands").commands,m=function(e,t){var n=e.getContainerElement();this.container=n,this.renderer=e,this.commands=new d(s.isMac?"mac":"win",v),this.textInput=new o(e.getTextAreaContainer(),this),this.renderer.textarea=this.textInput.getElement(),this.keyBinding=new f(this),this.$mouseHandler=new u(this),new a(this),this.$blockScrolling=0,this.$search=(new c).set({wrap:!0}),this.setSession(t||new l(""))};(function(){r.implement(this,p),this.setKeyboardHandler=function(e){this.keyBinding.setKeyboardHandler(e)},this.getKeyboardHandler=function(){return this.keyBinding.getKeyboardHandler()},this.setSession=function(e){if(this.session==e)return;if(this.session){var t=this.session;this.session.removeEventListener("change",this.$onDocumentChange),this.session.removeEventListener("changeMode",this.$onChangeMode),this.session.removeEventListener("tokenizerUpdate",this.$onTokenizerUpdate),this.session.removeEventListener("changeTabSize",this.$onChangeTabSize),this.session.removeEventListener("changeWrapLimit",this.$onChangeWrapLimit),this.session.removeEventListener("changeWrapMode",this.$onChangeWrapMode),this.session.removeEventListener("onChangeFold",this.$onChangeFold),this.session.removeEventListener("changeFrontMarker",this.$onChangeFrontMarker),this.session.removeEventListener("changeBackMarker",this.$onChangeBackMarker),this.session.removeEventListener("changeBreakpoint",this.$onChangeBreakpoint),this.session.removeEventListener("changeAnnotation",this.$onChangeAnnotation),this.session.removeEventListener("changeOverwrite",this.$onCursorChange),this.session.removeEventListener("changeScrollTop",this.$onScrollTopChange),this.session.removeEventListener("changeLeftTop",this.$onScrollLeftChange);var n=this.session.getSelection();n.removeEventListener("changeCursor",this.$onCursorChange),n.removeEventListener("changeSelection",this.$onSelectionChange)}this.session=e,this.$onDocumentChange=this.onDocumentChange.bind(this),e.addEventListener("change",this.$onDocumentChange),this.renderer.setSession(e),this.$onChangeMode=this.onChangeMode.bind(this),e.addEventListener("changeMode",this.$onChangeMode),this.$onTokenizerUpdate=this.onTokenizerUpdate.bind(this),e.addEventListener("tokenizerUpdate",this.$onTokenizerUpdate),this.$onChangeTabSize=this.renderer.onChangeTabSize.bind(this.renderer),e.addEventListener("changeTabSize",this.$onChangeTabSize),this.$onChangeWrapLimit=this.onChangeWrapLimit.bind(this),e.addEventListener("changeWrapLimit",this.$onChangeWrapLimit),this.$onChangeWrapMode=this.onChangeWrapMode.bind(this),e.addEventListener("changeWrapMode",this.$onChangeWrapMode),this.$onChangeFold=this.onChangeFold.bind(this),e.addEventListener("changeFold",this.$onChangeFold),this.$onChangeFrontMarker=this.onChangeFrontMarker.bind(this),this.session.addEventListener("changeFrontMarker",this.$onChangeFrontMarker),this.$onChangeBackMarker=this.onChangeBackMarker.bind(this),this.session.addEventListener("changeBackMarker",this.$onChangeBackMarker),this.$onChangeBreakpoint=this.onChangeBreakpoint.bind(this),this.session.addEventListener("changeBreakpoint",this.$onChangeBreakpoint),this.$onChangeAnnotation=this.onChangeAnnotation.bind(this),this.session.addEventListener("changeAnnotation",this.$onChangeAnnotation),this.$onCursorChange=this.onCursorChange.bind(this),this.session.addEventListener("changeOverwrite",this.$onCursorChange),this.$onScrollTopChange=this.onScrollTopChange.bind(this),this.session.addEventListener("changeScrollTop",this.$onScrollTopChange),this.$onScrollLeftChange=this.onScrollLeftChange.bind(this),this.session.addEventListener("changeScrollLeft",this.$onScrollLeftChange),this.selection=e.getSelection(),this.selection.addEventListener("changeCursor",this.$onCursorChange),this.$onSelectionChange=this.onSelectionChange.bind(this),this.selection.addEventListener("changeSelection",this.$onSelectionChange),this.onChangeMode(),this.$blockScrolling+=1,this.onCursorChange(),this.$blockScrolling-=1,this.onScrollTopChange(),this.onScrollLeftChange(),this.onSelectionChange(),this.onChangeFrontMarker(),this.onChangeBackMarker(),this.onChangeBreakpoint(),this.onChangeAnnotation(),this.session.getUseWrapMode()&&this.renderer.adjustWrapLimit(),this.renderer.updateFull(),this._emit("changeSession",{session:e,oldSession:t})},this.getSession=function(){return this.session},this.setValue=function(e,t){return this.session.doc.setValue(e),t?t==1?this.navigateFileEnd():t==-1&&this.navigateFileStart():this.selectAll(),e},this.getValue=function(){return this.session.getValue()},this.getSelection=function(){return this.selection},this.resize=function(e){this.renderer.onResize(e)},this.setTheme=function(e){this.renderer.setTheme(e)},this.getTheme=function(){return this.renderer.getTheme()},this.setStyle=function(e){this.renderer.setStyle(e)},this.unsetStyle=function(e){this.renderer.unsetStyle(e)},this.setFontSize=function(e){this.container.style.fontSize=e,this.renderer.updateFontSize()},this.$highlightBrackets=function(){this.session.$bracketHighlight&&(this.session.removeMarker(this.session.$bracketHighlight),this.session.$bracketHighlight=null);if(this.$highlightPending)return;var e=this;this.$highlightPending=!0,setTimeout(function(){e.$highlightPending=!1;var t=e.session.findMatchingBracket(e.getCursorPosition());if(t){var n=new h(t.row,t.column,t.row,t.column+1);e.session.$bracketHighlight=e.session.addMarker(n,"ace_bracket","text")}},50)},this.focus=function(){var e=this;setTimeout(function(){e.textInput.focus()}),this.textInput.focus()},this.isFocused=function(){return this.textInput.isFocused()},this.blur=function(){this.textInput.blur()},this.onFocus=function(){if(this.$isFocused)return;this.$isFocused=!0,this.renderer.showCursor(),this.renderer.visualizeFocus(),this._emit("focus")},this.onBlur=function(){if(!this.$isFocused)return;this.$isFocused=!1,this.renderer.hideCursor(),this.renderer.visualizeBlur(),this._emit("blur")},this.$cursorChange=function(){this.renderer.updateCursor()},this.onDocumentChange=function(e){var t=e.data,n=t.range,r;n.start.row==n.end.row&&t.action!="insertLines"&&t.action!="removeLines"?r=n.end.row:r=Infinity,this.renderer.updateLines(n.start.row,r),this._emit("change",e),this.$cursorChange()},this.onTokenizerUpdate=function(e){var t=e.data;this.renderer.updateLines(t.first,t.last)},this.onScrollTopChange=function(){this.renderer.scrollToY(this.session.getScrollTop())},this.onScrollLeftChange=function(){this.renderer.scrollToX(this.session.getScrollLeft())},this.onCursorChange=function(){this.$cursorChange(),this.$blockScrolling||this.renderer.scrollCursorIntoView(),this.$highlightBrackets(),this.$updateHighlightActiveLine(),this._emit("changeSelection")},this.$updateHighlightActiveLine=function(){var e=this.getSession(),t;this.$highlightActiveLine&&(this.$selectionStyle!="line"||!this.selection.isMultiLine())&&(t=this.getCursorPosition()),e.$highlightLineMarker&&!t?(e.removeMarker(e.$highlightLineMarker.id),e.$highlightLineMarker=null):!e.$highlightLineMarker&&t?e.$highlightLineMarker=e.highlightLines(t.row,t.row,"ace_active-line"):t&&(e.$highlightLineMarker.start.row=t.row,e.$highlightLineMarker.end.row=t.row,e._emit("changeBackMarker"))},this.onSelectionChange=function(e){var t=this.session;t.$selectionMarker&&t.removeMarker(t.$selectionMarker),t.$selectionMarker=null;if(!this.selection.isEmpty()){var n=this.selection.getRange(),r=this.getSelectionStyle();t.$selectionMarker=t.addMarker(n,"ace_selection",r)}else this.$updateHighlightActiveLine();var i=this.$highlightSelectedWord&&this.$getSelectionHighLightRegexp();this.session.highlight(i),this._emit("changeSelection")},this.$getSelectionHighLightRegexp=function(){var e=this.session,t=this.getSelectionRange();if(t.isEmpty()||t.isMultiLine())return;var n=t.start.column-1,r=t.end.column+1,i=e.getLine(t.start.row),s=i.length,o=i.substring(Math.max(n,0),Math.min(r,s));if(n>=0&&/^[\w\d]/.test(o)||r<=s&&/[\w\d]$/.test(o))return;o=i.substring(t.start.column,t.end.column);if(!/^[\w\d]+$/.test(o))return;var u=this.$search.$assembleRegExp({wholeWord:!0,caseSensitive:!0,needle:o});return u},this.onChangeFrontMarker=function(){this.renderer.updateFrontMarkers()},this.onChangeBackMarker=function(){this.renderer.updateBackMarkers()},this.onChangeBreakpoint=function(){this.renderer.updateBreakpoints()},this.onChangeAnnotation=function(){this.renderer.setAnnotations(this.session.getAnnotations())},this.onChangeMode=function(){this.renderer.updateText()},this.onChangeWrapLimit=function(){this.renderer.updateFull()},this.onChangeWrapMode=function(){this.renderer.onResize(!0)},this.onChangeFold=function(){this.$updateHighlightActiveLine(),this.renderer.updateFull()},this.getCopyText=function(){var e="";return this.selection.isEmpty()||(e=this.session.getTextRange(this.getSelectionRange())),this._emit("copy",e),e},this.onCopy=function(){this.commands.exec("copy",this)},this.onCut=function(){this.commands.exec("cut",this)},this.onPaste=function(e){if(this.$readOnly)return;this._emit("paste",e),this.insert(e)},this.execCommand=function(e,t){this.commands.exec(e,this,t)},this.insert=function(e){var t=this.session,n=t.getMode(),r=this.getCursorPosition();if(this.getBehavioursEnabled()){var i=n.transformAction(t.getState(r.row),"insertion",this,t,e);i&&(e=i.text)}e=e.replace(" ",this.session.getTabString());if(!this.selection.isEmpty())r=this.session.remove(this.getSelectionRange()),this.clearSelection();else if(this.session.getOverwrite()){var s=new h.fromPoints(r,r);s.end.column+=e.length,this.session.remove(s)}this.clearSelection();var o=r.column,u=t.getState(r.row),a=t.getLine(r.row),f=n.checkOutdent(u,a,e),l=t.insert(r,e);i&&i.selection&&(i.selection.length==2?this.selection.setSelectionRange(new h(r.row,o+i.selection[0],r.row,o+i.selection[1])):this.selection.setSelectionRange(new h(r.row+i.selection[0],i.selection[1],r.row+i.selection[2],i.selection[3])));if(t.getDocument().isNewLine(e)){var c=n.getNextLineIndent(u,a.slice(0,r.column),t.getTabString());this.moveCursorTo(r.row+1,0);var p=t.getTabSize(),d=Number.MAX_VALUE;for(var v=r.row+1;v<=l.row;++v){var m=0;a=t.getLine(v);for(var g=0;g0;++g)a.charAt(g)==" "?y-=p:a.charAt(g)==" "&&(y-=1);t.remove(new h(v,0,v,g))}t.indentRows(r.row+1,l.row,c)}f&&n.autoOutdent(u,t,r.row)},this.onTextInput=function(e){this.keyBinding.onTextInput(e)},this.onCommandKey=function(e,t,n){this.keyBinding.onCommandKey(e,t,n)},this.setOverwrite=function(e){this.session.setOverwrite(e)},this.getOverwrite=function(){return this.session.getOverwrite()},this.toggleOverwrite=function(){this.session.toggleOverwrite()},this.setScrollSpeed=function(e){this.$mouseHandler.setScrollSpeed(e)},this.getScrollSpeed=function(){return this.$mouseHandler.getScrollSpeed()},this.setDragDelay=function(e){this.$mouseHandler.setDragDelay(e)},this.getDragDelay=function(){return this.$mouseHandler.getDragDelay()},this.$selectionStyle="line",this.setSelectionStyle=function(e){if(this.$selectionStyle==e)return;this.$selectionStyle=e,this.onSelectionChange(),this._emit("changeSelectionStyle",{data:e})},this.getSelectionStyle=function(){return this.$selectionStyle},this.$highlightActiveLine=!0,this.setHighlightActiveLine=function(e){if(this.$highlightActiveLine==e)return;this.$highlightActiveLine=e,this.$updateHighlightActiveLine()},this.getHighlightActiveLine=function(){return this.$highlightActiveLine},this.$highlightGutterLine=!0,this.setHighlightGutterLine=function(e){if(this.$highlightGutterLine==e)return;this.renderer.setHighlightGutterLine(e),this.$highlightGutterLine=e},this.getHighlightGutterLine=function(){return this.$highlightGutterLine},this.$highlightSelectedWord=!0,this.setHighlightSelectedWord=function(e){if(this.$highlightSelectedWord==e)return;this.$highlightSelectedWord=e,this.$onSelectionChange()},this.getHighlightSelectedWord=function(){return this.$highlightSelectedWord},this.setAnimatedScroll=function(e){this.renderer.setAnimatedScroll(e)},this.getAnimatedScroll=function(){return this.renderer.getAnimatedScroll()},this.setShowInvisibles=function(e){this.renderer.setShowInvisibles(e)},this.getShowInvisibles=function(){return this.renderer.getShowInvisibles()},this.setDisplayIndentGuides=function(e){this.renderer.setDisplayIndentGuides(e)},this.getDisplayIndentGuides=function(){return this.renderer.getDisplayIndentGuides()},this.setShowPrintMargin=function(e){this.renderer.setShowPrintMargin(e)},this.getShowPrintMargin=function(){return this.renderer.getShowPrintMargin()},this.setPrintMarginColumn=function(e){this.renderer.setPrintMarginColumn(e)},this.getPrintMarginColumn=function(){return this.renderer.getPrintMarginColumn()},this.$readOnly=!1,this.setReadOnly=function(e){this.$readOnly=e},this.getReadOnly=function(){return this.$readOnly},this.$modeBehaviours=!0,this.setBehavioursEnabled=function(e){this.$modeBehaviours=e},this.getBehavioursEnabled=function(){return this.$modeBehaviours},this.$modeWrapBehaviours=!0,this.setWrapBehavioursEnabled=function(e){this.$modeWrapBehaviours=e},this.getWrapBehavioursEnabled=function(){return this.$modeWrapBehaviours},this.setShowFoldWidgets=function(e){var t=this.renderer.$gutterLayer;if(t.getShowFoldWidgets()==e)return;this.renderer.$gutterLayer.setShowFoldWidgets(e),this.$showFoldWidgets=e,this.renderer.updateFull()},this.getShowFoldWidgets=function(){return this.renderer.$gutterLayer.getShowFoldWidgets()},this.setFadeFoldWidgets=function(e){this.renderer.setFadeFoldWidgets(e)},this.getFadeFoldWidgets=function(){return this.renderer.getFadeFoldWidgets()},this.remove=function(e){this.selection.isEmpty()&&(e=="left"?this.selection.selectLeft():this.selection.selectRight());var t=this.getSelectionRange();if(this.getBehavioursEnabled()){var n=this.session,r=n.getState(t.start.row),i=n.getMode().transformAction(r,"deletion",this,n,t);i&&(t=i)}this.session.remove(t),this.clearSelection()},this.removeWordRight=function(){this.selection.isEmpty()&&this.selection.selectWordRight(),this.session.remove(this.getSelectionRange()),this.clearSelection()},this.removeWordLeft=function(){this.selection.isEmpty()&&this.selection.selectWordLeft(),this.session.remove(this.getSelectionRange()),this.clearSelection()},this.removeToLineStart=function(){this.selection.isEmpty()&&this.selection.selectLineStart(),this.session.remove(this.getSelectionRange()),this.clearSelection()},this.removeToLineEnd=function(){this.selection.isEmpty()&&this.selection.selectLineEnd();var e=this.getSelectionRange();e.start.column==e.end.column&&e.start.row==e.end.row&&(e.end.column=0,e.end.row++),this.session.remove(e),this.clearSelection()},this.splitLine=function(){this.selection.isEmpty()||(this.session.remove(this.getSelectionRange()),this.clearSelection());var e=this.getCursorPosition();this.insert("\n"),this.moveCursorToPosition(e)},this.transposeLetters=function(){if(!this.selection.isEmpty())return;var e=this.getCursorPosition(),t=e.column;if(t===0)return;var n=this.session.getLine(e.row),r,i;tt.toLowerCase()?1:0});var r=new h(0,0,0,0);for(var i=e.first;i<=e.last;i++){var s=t.getLine(i);r.start.row=i,r.end.row=i,r.end.column=s.length,t.replace(r,n[i-e.first])}},this.toggleCommentLines=function(){var e=this.session.getState(this.getCursorPosition().row),t=this.$getSelectedRows();this.session.getMode().toggleCommentLines(e,this.session,t.first,t.last)},this.getNumberAt=function(e,t){var n=/[\-]?[0-9]+(?:\.[0-9]+)?/g;n.lastIndex=0;var r=this.session.getLine(e);while(n.lastIndex=t){var s={value:i[0],start:i.index,end:i.index+i[0].length};return s}}return null},this.modifyNumber=function(e){var t=this.selection.getCursor().row,n=this.selection.getCursor().column,r=new h(t,n-1,t,n),i=this.session.getTextRange(r);if(!isNaN(parseFloat(i))&&isFinite(i)){var s=this.getNumberAt(t,n);if(s){var o=s.value.indexOf(".")>=0?s.start+s.value.indexOf(".")+1:s.end,u=s.start+s.value.length-o,a=parseFloat(s.value);a*=Math.pow(10,u),o!==s.end&&n=this.getFirstVisibleRow()&&e<=this.getLastVisibleRow()},this.isRowFullyVisible=function(e){return e>=this.renderer.getFirstFullyVisibleRow()&&e<=this.renderer.getLastFullyVisibleRow()},this.$getVisibleRowCount=function(){return this.renderer.getScrollBottomRow()-this.renderer.getScrollTopRow()+1},this.$moveByPage=function(e,t){var n=this.renderer,r=this.renderer.layerConfig,i=e*Math.floor(r.height/r.lineHeight);this.$blockScrolling++,t==1?this.selection.$moveSelection(function(){this.moveCursorBy(i,0)}):t==0&&(this.selection.moveCursorBy(i,0),this.selection.clearSelection()),this.$blockScrolling--;var s=n.scrollTop;n.scrollBy(0,i*r.lineHeight),t!=null&&n.scrollCursorIntoView(null,.5),n.animateScrolling(s)},this.selectPageDown=function(){this.$moveByPage(1,!0)},this.selectPageUp=function(){this.$moveByPage(-1,!0)},this.gotoPageDown=function(){this.$moveByPage(1,!1)},this.gotoPageUp=function(){this.$moveByPage(-1,!1)},this.scrollPageDown=function(){this.$moveByPage(1)},this.scrollPageUp=function(){this.$moveByPage(-1)},this.scrollToRow=function(e){this.renderer.scrollToRow(e)},this.scrollToLine=function(e,t,n,r){this.renderer.scrollToLine(e,t,n,r)},this.centerSelection=function(){var e=this.getSelectionRange(),t={row:Math.floor(e.start.row+(e.end.row-e.start.row)/2),column:Math.floor(e.start.column+(e.end.column-e.start.column)/2)};this.renderer.alignCursor(t,.5)},this.getCursorPosition=function(){return this.selection.getCursor()},this.getCursorPositionScreen=function(){return this.session.documentToScreenPosition(this.getCursorPosition())},this.getSelectionRange=function(){return this.selection.getRange()},this.selectAll=function(){this.$blockScrolling+=1,this.selection.selectAll(),this.$blockScrolling-=1},this.clearSelection=function(){this.selection.clearSelection()},this.moveCursorTo=function(e,t){this.selection.moveCursorTo(e,t)},this.moveCursorToPosition=function(e){this.selection.moveCursorToPosition(e)},this.jumpToMatching=function(e){var t=this.getCursorPosition(),n=this.session.getBracketRange(t);if(!n){n=this.find({needle:/[{}()\[\]]/g,preventScroll:!0,start:{row:t.row,column:t.column-1}});if(!n)return;var r=n.start;r.row==t.row&&Math.abs(r.column-t.column)<2&&(n=this.session.getBracketRange(r))}r=n&&n.cursor||r,r&&(e?n&&n.isEqual(this.getSelectionRange())?this.clearSelection():this.selection.selectTo(r.row,r.column):(this.clearSelection(),this.moveCursorTo(r.row,r.column)))},this.gotoLine=function(e,t,n){this.selection.clearSelection(),this.session.unfold({row:e-1,column:t||0}),this.$blockScrolling+=1,this.moveCursorTo(e-1,t||0),this.$blockScrolling-=1,this.isRowFullyVisible(e-1)||this.scrollToLine(e-1,!0,n)},this.navigateTo=function(e,t){this.clearSelection(),this.moveCursorTo(e,t)},this.navigateUp=function(e){this.selection.clearSelection(),e=e||1,this.selection.moveCursorBy(-e,0)},this.navigateDown=function(e){this.selection.clearSelection(),e=e||1,this.selection.moveCursorBy(e,0)},this.navigateLeft=function(e){if(!this.selection.isEmpty()){var t=this.getSelectionRange().start;this.moveCursorToPosition(t)}else{e=e||1;while(e--)this.selection.moveCursorLeft()}this.clearSelection()},this.navigateRight=function(e){if(!this.selection.isEmpty()){var t=this.getSelectionRange().end;this.moveCursorToPosition(t)}else{e=e||1;while(e--)this.selection.moveCursorRight()}this.clearSelection()},this.navigateLineStart=function(){this.selection.moveCursorLineStart(),this.clearSelection()},this.navigateLineEnd=function(){this.selection.moveCursorLineEnd(),this.clearSelection()},this.navigateFileEnd=function(){var e=this.renderer.scrollTop;this.selection.moveCursorFileEnd(),this.clearSelection(),this.renderer.animateScrolling(e)},this.navigateFileStart=function(){var e=this.renderer.scrollTop;this.selection.moveCursorFileStart(),this.clearSelection(),this.renderer.animateScrolling(e)},this.navigateWordRight=function(){this.selection.moveCursorWordRight(),this.clearSelection()},this.navigateWordLeft=function(){this.selection.moveCursorWordLeft(),this.clearSelection()},this.replace=function(e,t){t&&this.$search.set(t);var n=this.$search.find(this.session),r=0;return n?(this.$tryReplace(n,e)&&(r=1),n!==null&&(this.selection.setSelectionRange(n),this.renderer.scrollSelectionIntoView(n.start,n.end)),r):r},this.replaceAll=function(e,t){t&&this.$search.set(t);var n=this.$search.findAll(this.session),r=0;if(!n.length)return r;this.$blockScrolling+=1;var i=this.getSelectionRange();this.clearSelection(),this.selection.moveCursorTo(0,0);for(var s=n.length-1;s>=0;--s)this.$tryReplace(n[s],e)&&r++;return this.selection.setSelectionRange(i),this.$blockScrolling-=1,r},this.$tryReplace=function(e,t){var n=this.session.getTextRange(e);return t=this.$search.replace(n,t),t!==null?(e.end=this.session.replace(e,t),e):null},this.getLastSearchOptions=function(){return this.$search.getOptions()},this.find=function(e,t,n){t||(t={}),typeof e=="string"||e instanceof RegExp?t.needle=e:typeof e=="object"&&r.mixin(t,e);var i=this.selection.getRange();t.needle==null&&(e=this.session.getTextRange(i)||this.$search.$options.needle,e||(i=this.session.getWordRange(i.start.row,i.start.column),e=this.session.getTextRange(i)),this.$search.set({needle:e})),this.$search.set(t),t.start||this.$search.set({start:i});var s=this.$search.find(this.session);if(t.preventScroll)return s;if(s)return this.revealRange(s,n),s;t.backwards?i.start=i.end:i.end=i.start,this.selection.setRange(i)},this.findNext=function(e,t){this.find({skipCurrent:!0,backwards:!1},e,t)},this.findPrevious=function(e,t){this.find(e,{skipCurrent:!0,backwards:!0},t)},this.revealRange=function(e,t){this.$blockScrolling+=1,this.session.unfold(e),this.selection.setSelectionRange(e),this.$blockScrolling-=1;var n=this.renderer.scrollTop;this.renderer.scrollSelectionIntoView(e.start,e.end,.5),t!=0&&this.renderer.animateScrolling(n)},this.undo=function(){this.$blockScrolling++,this.session.getUndoManager().undo(),this.$blockScrolling--,this.renderer.scrollCursorIntoView(null,.5)},this.redo=function(){this.$blockScrolling++,this.session.getUndoManager().redo(),this.$blockScrolling--,this.renderer.scrollCursorIntoView(null,.5)},this.destroy=function(){this.renderer.destroy()}}).call(m.prototype),t.Editor=m}),ace.define("ace/lib/lang",["require","exports","module"],function(e,t,n){t.stringReverse=function(e){return e.split("").reverse().join("")},t.stringRepeat=function(e,t){return(new Array(t+1)).join(e)};var r=/^\s\s*/,i=/\s\s*$/;t.stringTrimLeft=function(e){return e.replace(r,"")},t.stringTrimRight=function(e){return e.replace(i,"")},t.copyObject=function(e){var t={};for(var n in e)t[n]=e[n];return t},t.copyArray=function(e){var t=[];for(var n=0,r=e.length;n=0){t=this.$clickSelection.start;if(i.start.row!=r.row||i.start.column!=r.column)r=i.end}else if(s==-1&&o==1)r=i.end,t=i.start;else{var u=a(this.$clickSelection,r);r=u.cursor,t=u.anchor}n.selection.setSelectionAnchor(t.row,t.column)}n.selection.selectToPosition(r),n.renderer.scrollCursorIntoView()},this.startDrag=function(){var e=this.editor;this.setState("drag"),this.dragRange=e.getSelectionRange();var t=e.getSelectionStyle();this.dragSelectionMarker=e.session.addMarker(this.dragRange,"ace_selection",t),e.clearSelection(),r.addCssClass(e.container,"ace_dragging"),this.$dragKeybinding||(this.$dragKeybinding={handleKeyboard:function(e,t,n,r){if(n=="esc")return{command:this.command}},command:{exec:function(e){var t=e.$mouseHandler;t.dragCursor=null,t.dragEnd(),t.startSelect()}}}),e.keyBinding.addKeyboardHandler(this.$dragKeybinding)},this.focusWait=function(){var e=u(this.mousedownEvent.x,this.mousedownEvent.y,this.x,this.y),t=(new Date).getTime();(e>s||t-this.mousedownEvent.time>this.$focusWaitTimout)&&this.startSelect()},this.dragWait=function(e){var t=u(this.mousedownEvent.x,this.mousedownEvent.y,this.x,this.y),n=(new Date).getTime(),r=this.editor;t>s?this.startSelect(this.mousedownEvent.getDocumentPosition()):n-this.mousedownEvent.time>r.getDragDelay()&&this.startDrag()},this.dragWaitEnd=function(e){this.mousedownEvent.domEvent=e,this.startSelect()},this.drag=function(){var e=this.editor;this.dragCursor=e.renderer.screenToTextCoordinates(this.x,this.y),e.moveCursorToPosition(this.dragCursor),e.renderer.scrollCursorIntoView()},this.dragEnd=function(e){var t=this.editor,n=this.dragCursor,i=this.dragRange;r.removeCssClass(t.container,"ace_dragging"),t.session.removeMarker(this.dragSelectionMarker),t.keyBinding.removeKeyboardHandler(this.$dragKeybinding);if(!n)return;t.clearSelection();if(e&&(e.ctrlKey||e.altKey)){var s=t.session,o=i;o.end=s.insert(n,s.getTextRange(i)),o.start=n}else{if(i.contains(n.row,n.column))return;var o=t.moveText(i,n)}if(!o)return;t.selection.setSelectionRange(o)},this.onDoubleClick=function(e){var t=e.getDocumentPosition(),n=this.editor,r=n.session,i=r.getBracketRange(t);if(i){i.isEmpty()&&(i.start.column--,i.end.column++),this.$clickSelection=i,this.setState("select");return}this.$clickSelection=n.selection.getWordRange(t.row,t.column),this.setState("selectByWords")},this.onTripleClick=function(e){var t=e.getDocumentPosition(),n=this.editor;this.setState("selectByLines"),this.$clickSelection=n.selection.getLineRange(t.row)},this.onQuadClick=function(e){var t=this.editor;t.selectAll(),this.$clickSelection=t.getSelectionRange(),this.setState("null")},this.onMouseWheel=function(e){if(e.getShiftKey()||e.getAccelKey())return;var t=this.editor,n=t.renderer.isScrollableBy(e.wheelX*e.speed,e.wheelY*e.speed);if(n)this.$passScrollEvent=!1;else{if(this.$passScrollEvent)return;if(!this.$scrollStopTimeout){var r=this;this.$scrollStopTimeout=setTimeout(function(){r.$passScrollEvent=!0,r.$scrollStopTimeout=null},200)}}return t.renderer.scrollBy(e.wheelX*e.speed,e.wheelY*e.speed),e.preventDefault()}}).call(o.prototype),t.DefaultHandlers=o}),ace.define("ace/mouse/default_gutter_handler",["require","exports","module","ace/lib/dom","ace/lib/event"],function(e,t,n){function s(e){function f(){u=r.createElement("div"),u.className="ace_gutter-tooltip",u.style.maxWidth="500px",u.style.display="none",t.container.appendChild(u)}function l(){u||f();var e=o.getDocumentPosition().row,r=n.$annotations[e];if(!r)return c();var i=t.session.getLength();if(e==i){var s=t.renderer.pixelToScreenCoordinates(0,o.y).row,l=o.$pos;if(s>t.session.documentToScreenRow(l.row,l.column))return c()}if(a==r)return;a=r.text.join("
    "),u.style.display="block",u.innerHTML=a,t.on("mousewheel",c),h(o)}function c(){s&&(s=clearTimeout(s)),a&&(u.style.display="none",a=null,t.removeEventListener("mousewheel",c))}function h(e){var n=t.renderer.$gutter.getBoundingClientRect();u.style.left=e.x-n.left+15+"px",e.y+3*t.renderer.lineHeight+150)return;return console.log(e.type,l,e.target),clearInterval(o),t.session.removeMarker(n),n=null,t.selection.setSelectionRange(u,a),r.preventDefault(e)}),r.addListener(c,"drop",function(e){return console.log(e.type,l,e.target),l=0,clearInterval(o),t.session.removeMarker(n),n=null,u.end=t.session.insert(f,e.dataTransfer.getData("Text")),u.start=f,t.focus(),t.selection.setSelectionRange(u),r.preventDefault(e)})};t.DragdropHandler=i}),ace.define("ace/mouse/fold_handler",["require","exports","module"],function(e,t,n){function r(e){e.on("click",function(t){var n=t.getDocumentPosition(),r=e.session,i=r.getFoldAt(n.row,n.column,1);i&&(t.getAccelKey()?r.removeFold(i):r.expandFold(i),t.stop())}),e.on("guttermousedown",function(t){var n=e.renderer.$gutterLayer.getRegion(t);if(n=="foldWidgets"){var r=t.getDocumentPosition().row,i=e.session;i.foldWidgets&&i.foldWidgets[r]&&e.session.onFoldWidgetClick(r,t),t.stop()}}),e.on("gutterdblclick",function(t){var n=e.renderer.$gutterLayer.getRegion(t);if(n=="foldWidgets"){var r=t.getDocumentPosition().row,i=e.session,s=i.foldWidgets;if(!s||s[r])return;var o=r-1,u;while(o>=0){var a=s[o];a==null&&(a=s[o]=i.getFoldWidget());if(a=="start"){var f=i.getFoldWidgetRange(o);u||(u=f);if(f&&f.end.row>=r)break}o--}o==-1&&(f=u);if(f){var r=f.start.row,l=i.getFoldAt(r,i.getLine(r).length,1);l?i.removeFold(l):(i.addFold("...",f),e.renderer.scrollCursorIntoView({row:f.start.row,column:0}))}t.stop()}})}t.FoldHandler=r}),ace.define("ace/keyboard/keybinding",["require","exports","module","ace/lib/keys","ace/lib/event"],function(e,t,n){var r=e("../lib/keys"),i=e("../lib/event"),s=function(e){this.$editor=e,this.$data={},this.$handlers=[],this.setDefaultHandler(e.commands)};(function(){this.setDefaultHandler=function(e){this.removeKeyboardHandler(this.$defaultHandler),this.$defaultHandler=e,this.addKeyboardHandler(e,0),this.$data={editor:this.$editor}},this.setKeyboardHandler=function(e){if(this.$handlers[this.$handlers.length-1]==e)return;while(this.$handlers[1])this.removeKeyboardHandler(this.$handlers[1]);this.addKeyboardHandler(e,1)},this.addKeyboardHandler=function(e,t){if(!e)return;var n=this.$handlers.indexOf(e);n!=-1&&this.$handlers.splice(n,1),t==undefined?this.$handlers.push(e):this.$handlers.splice(t,0,e),n==-1&&e.attach&&e.attach(this.$editor)},this.removeKeyboardHandler=function(e){var t=this.$handlers.indexOf(e);return t==-1?!1:(this.$handlers.splice(t,1),e.detach&&e.detach(this.$editor),!0)},this.getKeyboardHandler=function(){return this.$handlers[this.$handlers.length-1]},this.$callKeyboardHandlers=function(e,t,n,r){var s;for(var o=this.$handlers.length;o--;){s=this.$handlers[o].handleKeyboard(this.$data,e,t,n,r);if(s&&s.command)break}if(!s||!s.command)return!1;var u=!1,a=this.$editor.commands;return s.command!="null"?u=a.exec(s.command,this.$editor,s.args,r):u=s.passEvent!=1,u&&r&&e!=-1&&i.stopEvent(r),u},this.onCommandKey=function(e,t,n){var i=r.keyCodeToString(n);this.$callKeyboardHandlers(t,i,n,e)},this.onTextInput=function(e){var t=this.$callKeyboardHandlers(-1,e);t||this.$editor.commands.exec("insertstring",this.$editor,e)}}).call(s.prototype),t.KeyBinding=s}),ace.define("ace/edit_session",["require","exports","module","ace/config","ace/lib/oop","ace/lib/lang","ace/lib/net","ace/lib/event_emitter","ace/selection","ace/mode/text","ace/range","ace/document","ace/background_tokenizer","ace/search_highlight","ace/edit_session/folding","ace/edit_session/bracket_match"],function(e,t,n){var r=e("./config"),i=e("./lib/oop"),s=e("./lib/lang"),o=e("./lib/net"),u=e("./lib/event_emitter").EventEmitter,a=e("./selection").Selection,f=e("./mode/text").Mode,l=e("./range").Range,c=e("./document").Document,h=e("./background_tokenizer").BackgroundTokenizer,p=e("./search_highlight").SearchHighlight,d=function(e,t){this.$breakpoints=[],this.$decorations=[],this.$frontMarkers={},this.$backMarkers={},this.$markerId=1,this.$undoSelect=!0,this.$foldData=[],this.$foldData.toString=function(){var e="";return this.forEach(function(t){e+="\n"+t.toString()}),e},this.on("changeFold",this.onChangeFold.bind(this)),this.$onChange=this.onChange.bind(this);if(typeof e!="object"||!e.getLine)e=new c(e);this.setDocument(e),this.selection=new a(this),this.setMode(t)};(function(){function y(e){return e<4352?!1:e>=4352&&e<=4447||e>=4515&&e<=4519||e>=4602&&e<=4607||e>=9001&&e<=9002||e>=11904&&e<=11929||e>=11931&&e<=12019||e>=12032&&e<=12245||e>=12272&&e<=12283||e>=12288&&e<=12350||e>=12353&&e<=12438||e>=12441&&e<=12543||e>=12549&&e<=12589||e>=12593&&e<=12686||e>=12688&&e<=12730||e>=12736&&e<=12771||e>=12784&&e<=12830||e>=12832&&e<=12871||e>=12880&&e<=13054||e>=13056&&e<=19903||e>=19968&&e<=42124||e>=42128&&e<=42182||e>=43360&&e<=43388||e>=44032&&e<=55203||e>=55216&&e<=55238||e>=55243&&e<=55291||e>=63744&&e<=64255||e>=65040&&e<=65049||e>=65072&&e<=65106||e>=65108&&e<=65126||e>=65128&&e<=65131||e>=65281&&e<=65376||e>=65504&&e<=65510}i.implement(this,u),this.setDocument=function(e){this.doc&&this.doc.removeListener("change",this.$onChange),this.doc=e,e.on("change",this.$onChange),this.bgTokenizer&&this.bgTokenizer.setDocument(this.getDocument()),this.resetCaches()},this.getDocument=function(){return this.doc},this.$resetRowCache=function(e){if(!e){this.$docRowCache=[],this.$screenRowCache=[];return}var t=this.$getRowCacheIndex(this.$docRowCache,e)+1,n=this.$docRowCache.length;this.$docRowCache.splice(t,n),this.$screenRowCache.splice(t,n)},this.$getRowCacheIndex=function(e,t){var n=0,r=e.length-1;while(n<=r){var i=n+r>>1,s=e[i];if(t>s)n=i+1;else{if(!(t=t)break}return r=n[s],r?(r.index=s,r.start=i-r.value.length,r):null},this.setUndoManager=function(e){this.$undoManager=e,this.$deltas=[],this.$deltasDoc=[],this.$deltasFold=[],this.$informUndoManager&&this.$informUndoManager.cancel();if(e){var t=this;this.$syncInformUndoManager=function(){t.$informUndoManager.cancel(),t.$deltasFold.length&&(t.$deltas.push({group:"fold",deltas:t.$deltasFold}),t.$deltasFold=[]),t.$deltasDoc.length&&(t.$deltas.push({group:"doc",deltas:t.$deltasDoc}),t.$deltasDoc=[]),t.$deltas.length>0&&e.execute({action:"aceupdate",args:[t.$deltas,t]}),t.$deltas=[]},this.$informUndoManager=s.deferredCall(this.$syncInformUndoManager)}},this.$defaultUndoManager={undo:function(){},redo:function(){},reset:function(){}},this.getUndoManager=function(){return this.$undoManager||this.$defaultUndoManager},this.getTabString=function(){return this.getUseSoftTabs()?s.stringRepeat(" ",this.getTabSize()):" "},this.$useSoftTabs=!0,this.setUseSoftTabs=function(e){if(this.$useSoftTabs===e)return;this.$useSoftTabs=e},this.getUseSoftTabs=function(){return this.$useSoftTabs},this.$tabSize=4,this.setTabSize=function(e){if(isNaN(e)||this.$tabSize===e)return;this.$modified=!0,this.$rowLengthCache=[],this.$tabSize=e,this._emit("changeTabSize")},this.getTabSize=function(){return this.$tabSize},this.isTabStop=function(e){return this.$useSoftTabs&&e.column%this.$tabSize==0},this.$overwrite=!1,this.setOverwrite=function(e){if(this.$overwrite==e)return;this.$overwrite=e,this._emit("changeOverwrite")},this.getOverwrite=function(){return this.$overwrite},this.toggleOverwrite=function(){this.setOverwrite(!this.$overwrite)},this.addGutterDecoration=function(e,t){this.$decorations[e]||(this.$decorations[e]=""),this.$decorations[e]+=" "+t,this._emit("changeBreakpoint",{})},this.removeGutterDecoration=function(e,t){this.$decorations[e]=(this.$decorations[e]||"").replace(" "+t,""),this._emit("changeBreakpoint",{})},this.getBreakpoints=function(){return this.$breakpoints},this.setBreakpoints=function(e){this.$breakpoints=[];for(var t=0;t0&&(r=!!n.charAt(t-1).match(this.tokenRe)),r||(r=!!n.charAt(t).match(this.tokenRe));if(r)var i=this.tokenRe;else if(/^\s+$/.test(n.slice(t-1,t+1)))var i=/\s/;else var i=this.nonTokenRe;var s=t;if(s>0){do s--;while(s>=0&&n.charAt(s).match(i));s++}var o=t;while(oo){a=s.end.row+1;if(a>=u)break;s=this.$foldData[i++],o=s?s.start.row:Infinity}n[a]==null&&(n[a]=this.$getStringScreenWidth(t[a])[0]),n[a]>r&&(r=n[a])}this.screenWidth=r}},this.getLine=function(e){return this.doc.getLine(e)},this.getLines=function(e,t){return this.doc.getLines(e,t)},this.getLength=function(){return this.doc.getLength()},this.getTextRange=function(e){return this.doc.getTextRange(e||this.selection.getRange())},this.insert=function(e,t){return this.doc.insert(e,t)},this.remove=function(e){return this.doc.remove(e)},this.undoChanges=function(e,t){if(!e.length)return;this.$fromUndo=!0;var n=null;for(var r=e.length-1;r!=-1;r--){var i=e[r];i.group=="doc"?(this.doc.revertDeltas(i.deltas),n=this.$getUndoSelection(i.deltas,!0,n)):i.deltas.forEach(function(e){this.addFolds(e.folds)},this)}return this.$fromUndo=!1,n&&this.$undoSelect&&!t&&this.selection.setSelectionRange(n),n},this.redoChanges=function(e,t){if(!e.length)return;this.$fromUndo=!0;var n=null;for(var r=0;r=this.doc.getLength()-1)return 0;var n=this.doc.removeLines(e,t);return this.doc.insertLines(e+1,n),1},this.duplicateLines=function(e,t){var e=this.$clipRowToDocument(e),t=this.$clipRowToDocument(t),n=this.getLines(e,t);this.doc.insertLines(e,n);var r=t-e+1;return r},this.$clipRowToDocument=function(e){return Math.max(0,Math.min(e,this.doc.getLength()-1))},this.$clipColumnToRow=function(e,t){return t<0?0:Math.min(this.doc.getLine(e).length,t)},this.$clipPositionToDocument=function(e,t){t=Math.max(0,t);if(e<0)e=0,t=0;else{var n=this.doc.getLength();e>=n?(e=n-1,t=this.doc.getLine(n-1).length):t=Math.min(this.doc.getLine(e).length,t)}return{row:e,column:t}},this.$clipRangeToDocument=function(e){e.start.row<0?(e.start.row=0,e.start.column=0):e.start.column=this.$clipColumnToRow(e.start.row,e.start.column);var t=this.doc.getLength()-1;return e.end.row>t?(e.end.row=t,e.end.column=this.doc.getLine(t).length):e.end.column=this.$clipColumnToRow(e.end.row,e.end.column),e},this.$wrapLimit=80,this.$useWrapMode=!1,this.$wrapLimitRange={min:null,max:null},this.setUseWrapMode=function(e){if(e!=this.$useWrapMode){this.$useWrapMode=e,this.$modified=!0,this.$resetRowCache(0);if(e){var t=this.getLength();this.$wrapData=[];for(var n=0;n0?(this.$wrapLimit=t,this.$modified=!0,this.$useWrapMode&&(this.$updateWrapData(0,this.getLength()-1),this.$resetRowCache(0),this._emit("changeWrapLimit")),!0):!1},this.$constrainWrapLimit=function(e){var t=this.$wrapLimitRange.min;t&&(e=Math.max(t,e));var n=this.$wrapLimitRange.max;return n&&(e=Math.min(n,e)),Math.max(1,e)},this.getWrapLimit=function(){return this.$wrapLimit},this.getWrapLimitRange=function(){return{min:this.$wrapLimitRange.min,max:this.$wrapLimitRange.max}},this.$updateInternalDataOnChange=function(e){var t=this.$useWrapMode,n,r=e.data.action,i=e.data.range.start.row,s=e.data.range.end.row,o=e.data.range.start,u=e.data.range.end,a=null;r.indexOf("Lines")!=-1?(r=="insertLines"?s=i+e.data.lines.length:s=i,n=e.data.lines?e.data.lines.length:s-i):n=s-i;if(n!=0)if(r.indexOf("remove")!=-1){this[t?"$wrapData":"$rowLengthCache"].splice(i,n);var f=this.$foldData;a=this.getFoldsInRange(e.data.range),this.removeFolds(a);var l=this.getFoldLine(u.row),c=0;if(l){l.addRemoveChars(u.row,u.column,o.column-u.column),l.shiftRow(-n);var h=this.getFoldLine(i);h&&h!==l&&(h.merge(l),l=h),c=f.indexOf(l)+1}for(c;c=u.row&&l.shiftRow(-n)}s=i}else{var p;if(t){p=[i,0];for(var d=0;d=i&&l.shiftRow(n)}}else{n=Math.abs(e.data.range.start.column-e.data.range.end.column),r.indexOf("remove")!=-1&&(a=this.getFoldsInRange(e.data.range),this.removeFolds(a),n=-n);var l=this.getFoldLine(i);l&&l.addRemoveChars(i,o.column,n)}return t&&this.$wrapData.length!=this.doc.getLength()&&console.error("doc.getLength() and $wrapData.length have to be the same!"),t?this.$updateWrapData(i,s):this.$updateRowLengthCache(i,s),a},this.$updateRowLengthCache=function(e,t,n){this.$rowLengthCache[e]=null,this.$rowLengthCache[t]=null},this.$updateWrapData=function(e,t){var n=this.doc.getAllLines(),r=this.getTabSize(),i=this.$wrapData,o=this.$wrapLimit,u,f,l=e;t=Math.min(t,n.length-1);while(l<=t){f=this.getFoldLine(l,f);if(!f)u=this.$getDisplayTokens(s.stringTrimRight(n[l])),i[l]=this.$computeWrapSplits(u,o,r),l++;else{u=[],f.walk(function(e,t,r,i){var s;if(e!=null){s=this.$getDisplayTokens(e,u.length),s[0]=a;for(var o=1;o=v)u.pop();i[f.start.row]=this.$computeWrapSplits(u,o,r),l=f.end.row+1}}};var t=1,n=2,a=3,c=4,d=9,v=10,m=11,g=12;this.$computeWrapSplits=function(e,t){function o(t){var r=e.slice(i,t),o=r.length;r.join("").replace(/12/g,function(){o-=1}).replace(/2/g,function(){o-=1}),s+=o,n.push(s),i=t}if(e.length==0)return[];var n=[],r=e.length,i=0,s=0;while(r-i>t){var u=i+t;if(e[u]>=v){while(e[u]>=v)u++;o(u);continue}if(e[u]==a||e[u]==c){for(u;u!=i-1;u--)if(e[u]==a)break;if(u>i){o(u);continue}u=i+t;for(u;uf&&e[u]f&&e[u]==d)u--;if(u>f){o(++u);continue}u=i+t,o(u)}return n},this.$getDisplayTokens=function(e,r){var i=[],s;r=r||0;for(var o=0;o39&&u<48||u>57&&u<64?i.push(d):u>=4352&&y(u)?i.push(t,n):i.push(t)}return i},this.$getStringScreenWidth=function(e,t,n){if(t==0)return[0,0];t==null&&(t=Infinity),n=n||0;var r,i;for(i=0;i=4352&&y(r)?n+=2:n+=1;if(n>t)break}return[n,i]},this.getRowLength=function(e){return!this.$useWrapMode||!this.$wrapData[e]?1:this.$wrapData[e].length+1},this.getScreenLastRowColumn=function(e){var t=this.screenToDocumentPosition(e,Number.MAX_VALUE);return this.documentToScreenColumn(t.row,t.column)},this.getDocumentLastRowColumn=function(e,t){var n=this.documentToScreenRow(e,t);return this.getScreenLastRowColumn(n)},this.getDocumentLastRowColumnPosition=function(e,t){var n=this.documentToScreenRow(e,t);return this.screenToDocumentPosition(n,Number.MAX_VALUE/10)},this.getRowSplitData=function(e){return this.$useWrapMode?this.$wrapData[e]:undefined},this.getScreenTabSize=function(e){return this.$tabSize-e%this.$tabSize},this.screenToDocumentRow=function(e,t){return this.screenToDocumentPosition(e,t).row},this.screenToDocumentColumn=function(e,t){return this.screenToDocumentPosition(e,t).column},this.screenToDocumentPosition=function(e,t){if(e<0)return{row:0,column:0};var n,r=0,i=0,s,o=0,u=0,a=this.$screenRowCache,f=this.$getRowCacheIndex(a,e),l=a.length;if(l&&f>=0)var o=a[f],r=this.$docRowCache[f],c=e>a[l-1];else var c=!l;var h=this.getLength()-1,p=this.getNextFoldLine(r),d=p?p.start.row:Infinity;while(o<=e){u=this.getRowLength(r);if(o+u-1>=e||r>=h)break;o+=u,r++,r>d&&(r=p.end.row+1,p=this.getNextFoldLine(r,p),d=p?p.start.row:Infinity),c&&(this.$docRowCache.push(r),this.$screenRowCache.push(o))}if(p&&p.start.row<=r)n=this.getFoldDisplayLine(p),r=p.start.row;else{if(o+u<=e||r>h)return{row:h,column:this.getLine(h).length};n=this.getLine(r),p=null}if(this.$useWrapMode){var v=this.$wrapData[r];v&&(s=v[e-o],e>o&&v.length&&(i=v[e-o-1]||v[v.length-1],n=n.substring(i)))}return i+=this.$getStringScreenWidth(n,t)[1],this.$useWrapMode&&i>=s&&(i=s-1),p?p.idxToPosition(i):{row:r,column:i}},this.documentToScreenPosition=function(e,t){if(typeof t=="undefined")var n=this.$clipPositionToDocument(e.row,e.column);else n=this.$clipPositionToDocument(e,t);e=n.row,t=n.column;var r=0,i=null,s=null;s=this.getFoldAt(e,t,1),s&&(e=s.start.row,t=s.start.column);var o,u=0,a=this.$docRowCache,f=this.$getRowCacheIndex(a,e),l=a.length;if(l&&f>=0)var u=a[f],r=this.$screenRowCache[f],c=e>a[l-1];else var c=!l;var h=this.getNextFoldLine(u),p=h?h.start.row:Infinity;while(u=p){o=h.end.row+1;if(o>e)break;h=this.getNextFoldLine(o,h),p=h?h.start.row:Infinity}else o=u+1;r+=this.getRowLength(u),u=o,c&&(this.$docRowCache.push(u),this.$screenRowCache.push(r))}var d="";h&&u>=p?(d=this.getFoldDisplayLine(h,e,t),i=h.start.row):(d=this.getLine(e).substring(0,t),i=e);if(this.$useWrapMode){var v=this.$wrapData[i],m=0;while(d.length>=v[m])r++,m++;d=d.substring(v[m-1]||0,d.length)}return{row:r,column:this.$getStringScreenWidth(d)[0]}},this.documentToScreenColumn=function(e,t){return this.documentToScreenPosition(e,t).column},this.documentToScreenRow=function(e,t){return this.documentToScreenPosition(e,t).row},this.getScreenLength=function(){var e=0,t=null;if(!this.$useWrapMode){e=this.getLength();var n=this.$foldData;for(var r=0;ro&&(s=t.end.row+1,t=this.$foldData[r++],o=t?t.start.row:Infinity)}return e}}).call(d.prototype),e("./edit_session/folding").Folding.call(d.prototype),e("./edit_session/bracket_match").BracketMatch.call(d.prototype),t.EditSession=d}),ace.define("ace/config",["require","exports","module","ace/lib/lang"],function(e,t,n){"no use strict";function o(e){return e.replace(/-(.)/g,function(e,t){return t.toUpperCase()})}var r=e("./lib/lang"),i=function(){return this}(),s={packaged:!1,workerPath:null,modePath:null,themePath:null,basePath:"",suffix:".js",$moduleUrls:{}};t.get=function(e){if(!s.hasOwnProperty(e))throw new Error("Unknown config key: "+e);return s[e]},t.set=function(e,t){if(!s.hasOwnProperty(e))throw new Error("Unknown config key: "+e);s[e]=t},t.all=function(){return r.copyObject(s)},t.moduleUrl=function(e,t){if(s.$moduleUrls[e])return s.$moduleUrls[e];var n=e.split("/");t=t||n[n.length-2]||"";var r=n[n.length-1].replace(t,"").replace(/(^[\-_])|([\-_]$)/,"");!r&&n.length>1&&(r=n[n.length-2]);var i=s[t+"Path"];return i==null&&(i=s.basePath),i&&i.slice(-1)!="/"&&(i+="/"),i+t+"-"+r+this.get("suffix")},t.setModuleUrl=function(e,t){return s.$moduleUrls[e]=t},t.init=function(){s.packaged=e.packaged||n.packaged||i.define&&define.packaged;if(!i.document)return"";var r={},u="",a=document.getElementsByTagName("script");for(var f=0;ft.row||e.row==t.row&&e.column>t.column},this.getRange=function(){var e=this.anchor,t=this.lead;return this.isEmpty()?o.fromPoints(t,t):this.isBackwards()?o.fromPoints(t,e):o.fromPoints(e,t)},this.clearSelection=function(){this.$isEmpty||(this.$isEmpty=!0,this._emit("changeSelection"))},this.selectAll=function(){var e=this.doc.getLength()-1;this.setSelectionAnchor(0,0),this.moveCursorTo(e,this.doc.getLine(e).length)},this.setRange=this.setSelectionRange=function(e,t){t?(this.setSelectionAnchor(e.end.row,e.end.column),this.selectTo(e.start.row,e.start.column)):(this.setSelectionAnchor(e.start.row,e.start.column),this.selectTo(e.end.row,e.end.column)),this.$desiredColumn=null},this.$moveSelection=function(e){var t=this.lead;this.$isEmpty&&this.setSelectionAnchor(t.row,t.column),e.call(this)},this.selectTo=function(e,t){this.$moveSelection(function(){this.moveCursorTo(e,t)})},this.selectToPosition=function(e){this.$moveSelection(function(){this.moveCursorToPosition(e)})},this.selectUp=function(){this.$moveSelection(this.moveCursorUp)},this.selectDown=function(){this.$moveSelection(this.moveCursorDown)},this.selectRight=function(){this.$moveSelection(this.moveCursorRight)},this.selectLeft=function(){this.$moveSelection(this.moveCursorLeft)},this.selectLineStart=function(){this.$moveSelection(this.moveCursorLineStart)},this.selectLineEnd=function(){this.$moveSelection(this.moveCursorLineEnd)},this.selectFileEnd=function(){this.$moveSelection(this.moveCursorFileEnd)},this.selectFileStart=function(){this.$moveSelection(this.moveCursorFileStart)},this.selectWordRight=function(){this.$moveSelection(this.moveCursorWordRight)},this.selectWordLeft=function(){this.$moveSelection(this.moveCursorWordLeft)},this.getWordRange=function(e,t){if(typeof t=="undefined"){var n=e||this.lead;e=n.row,t=n.column}return this.session.getWordRange(e,t)},this.selectWord=function(){this.setSelectionRange(this.getWordRange())},this.selectAWord=function(){var e=this.getCursor(),t=this.session.getAWordRange(e.row,e.column);this.setSelectionRange(t)},this.getLineRange=function(e,t){var n=typeof e=="number"?e:this.lead.row,r,i=this.session.getFoldLine(n);return i?(n=i.start.row,r=i.end.row):r=n,t?new o(n,0,r,this.session.getLine(r).length):new o(n,0,r+1,0)},this.selectLine=function(){this.setSelectionRange(this.getLineRange())},this.moveCursorUp=function(){this.moveCursorBy(-1,0)},this.moveCursorDown=function(){this.moveCursorBy(1,0)},this.moveCursorLeft=function(){var e=this.lead.getPosition(),t;if(t=this.session.getFoldAt(e.row,e.column,-1))this.moveCursorTo(t.start.row,t.start.column);else if(e.column==0)e.row>0&&this.moveCursorTo(e.row-1,this.doc.getLine(e.row-1).length);else{var n=this.session.getTabSize();this.session.isTabStop(e)&&this.doc.getLine(e.row).slice(e.column-n,e.column).split(" ").length-1==n?this.moveCursorBy(0,-n):this.moveCursorBy(0,-1)}},this.moveCursorRight=function(){var e=this.lead.getPosition(),t;if(t=this.session.getFoldAt(e.row,e.column,1))this.moveCursorTo(t.end.row,t.end.column);else if(this.lead.column==this.doc.getLine(this.lead.row).length)this.lead.row0&&(t.column=r)}}this.moveCursorTo(t.row,t.column)},this.moveCursorFileEnd=function(){var e=this.doc.getLength()-1,t=this.doc.getLine(e).length;this.moveCursorTo(e,t)},this.moveCursorFileStart=function(){this.moveCursorTo(0,0)},this.moveCursorLongWordRight=function(){var e=this.lead.row,t=this.lead.column,n=this.doc.getLine(e),r=n.substring(t),i;this.session.nonTokenRe.lastIndex=0,this.session.tokenRe.lastIndex=0;var s=this.session.getFoldAt(e,t,1);if(s){this.moveCursorTo(s.end.row,s.end.column);return}if(i=this.session.nonTokenRe.exec(r))t+=this.session.nonTokenRe.lastIndex,this.session.nonTokenRe.lastIndex=0,r=n.substring(t);if(t>=n.length){this.moveCursorTo(e,n.length),this.moveCursorRight(),e0&&this.moveCursorWordLeft();return}if(o=this.session.tokenRe.exec(s))t-=this.session.tokenRe.lastIndex,this.session.tokenRe.lastIndex=0;this.moveCursorTo(e,t)},this.$shortWordEndIndex=function(e){var t,n=0,r,i=/\s/,s=this.session.tokenRe;s.lastIndex=0;if(t=this.session.tokenRe.exec(e))n=this.session.tokenRe.lastIndex;else{while((r=e[n])&&i.test(r))n++;if(n<=1){s.lastIndex=0;while((r=e[n])&&!s.test(r)){s.lastIndex=0,n++;if(i.test(r)){if(n>2){n--;break}while((r=e[n])&&i.test(r))n++;if(n>2)break}}}}return s.lastIndex=0,n},this.moveCursorShortWordRight=function(){var e=this.lead.row,t=this.lead.column,n=this.doc.getLine(e),r=n.substring(t),i=this.session.getFoldAt(e,t,1);if(i)return this.moveCursorTo(i.end.row,i.end.column);if(t==n.length){var s=this.doc.getLength();do e++,r=this.doc.getLine(e);while(e0&&/^\s*$/.test(r));t=r.length,/\s+$/.test(r)||(r="")}var s=i.stringReverse(r),o=this.$shortWordEndIndex(s);return this.moveCursorTo(e,t-o)},this.moveCursorWordRight=function(){this.session.$selectLongWords?this.moveCursorLongWordRight():this.moveCursorShortWordRight()},this.moveCursorWordLeft=function(){this.session.$selectLongWords?this.moveCursorLongWordLeft():this.moveCursorShortWordLeft()},this.moveCursorBy=function(e,t){var n=this.session.documentToScreenPosition(this.lead.row,this.lead.column);t===0&&(this.$desiredColumn?n.column=this.$desiredColumn:this.$desiredColumn=n.column);var r=this.session.screenToDocumentPosition(n.row+e,n.column);this.moveCursorTo(r.row,r.column+t,t===0)},this.moveCursorToPosition=function(e){this.moveCursorTo(e.row,e.column)},this.moveCursorTo=function(e,t,n){var r=this.session.getFoldAt(e,t,1);r&&(e=r.start.row,t=r.start.column),this.$keepDesiredColumnOnChange=!0,this.lead.setPosition(e,t),this.$keepDesiredColumnOnChange=!1,n||(this.$desiredColumn=null)},this.moveCursorToScreen=function(e,t,n){var r=this.session.screenToDocumentPosition(e,t);this.moveCursorTo(r.row,r.column,n)},this.detach=function(){this.lead.detach(),this.anchor.detach(),this.session=this.doc=null},this.fromOrientedRange=function(e){this.setSelectionRange(e,e.cursor==e.start),this.$desiredColumn=e.desiredColumn||this.$desiredColumn},this.toOrientedRange=function(e){var t=this.getRange();return e?(e.start.column=t.start.column,e.start.row=t.start.row,e.end.column=t.end.column,e.end.row=t.end.row):e=t,e.cursor=this.isBackwards()?e.start:e.end,e.desiredColumn=this.$desiredColumn,e}}).call(u.prototype),t.Selection=u}),ace.define("ace/range",["require","exports","module"],function(e,t,n){var r=function(e,t,n,r){this.start={row:e,column:t},this.end={row:n,column:r}};(function(){this.isEqual=function(e){return this.start.row==e.start.row&&this.end.row==e.end.row&&this.start.column==e.start.column&&this.end.column==e.end.column},this.toString=function(){return"Range: ["+this.start.row+"/"+this.start.column+"] -> ["+this.end.row+"/"+this.end.column+"]"},this.contains=function(e,t){return this.compare(e,t)==0},this.compareRange=function(e){var t,n=e.end,r=e.start;return t=this.compare(n.row,n.column),t==1?(t=this.compare(r.row,r.column),t==1?2:t==0?1:0):t==-1?-2:(t=this.compare(r.row,r.column),t==-1?-1:t==1?42:0)},this.comparePoint=function(e){return this.compare(e.row,e.column)},this.containsRange=function(e){return this.comparePoint(e.start)==0&&this.comparePoint(e.end)==0},this.intersects=function(e){var t=this.compareRange(e);return t==-1||t==0||t==1},this.isEnd=function(e,t){return this.end.row==e&&this.end.column==t},this.isStart=function(e,t){return this.start.row==e&&this.start.column==t},this.setStart=function(e,t){typeof e=="object"?(this.start.column=e.column,this.start.row=e.row):(this.start.row=e,this.start.column=t)},this.setEnd=function(e,t){typeof e=="object"?(this.end.column=e.column,this.end.row=e.row):(this.end.row=e,this.end.column=t)},this.inside=function(e,t){return this.compare(e,t)==0?this.isEnd(e,t)||this.isStart(e,t)?!1:!0:!1},this.insideStart=function(e,t){return this.compare(e,t)==0?this.isEnd(e,t)?!1:!0:!1},this.insideEnd=function(e,t){return this.compare(e,t)==0?this.isStart(e,t)?!1:!0:!1},this.compare=function(e,t){return!this.isMultiLine()&&e===this.start.row?tthis.end.column?1:0:ethis.end.row?1:this.start.row===e?t>=this.start.column?0:-1:this.end.row===e?t<=this.end.column?0:1:0},this.compareStart=function(e,t){return this.start.row==e&&this.start.column==t?-1:this.compare(e,t)},this.compareEnd=function(e,t){return this.end.row==e&&this.end.column==t?1:this.compare(e,t)},this.compareInside=function(e,t){return this.end.row==e&&this.end.column==t?1:this.start.row==e&&this.start.column==t?-1:this.compare(e,t)},this.clipRows=function(e,t){if(this.end.row>t)var n={row:t+1,column:0};if(this.start.row>t)var i={row:t+1,column:0};if(this.start.row1&&i[a].token.length!==f-1)throw new Error("For "+i[a].regex+" the matching groups ("+(f-1)+") and length of the token array ("+i[a].token.length+") don't match (rule #"+a+" of state "+n+")");u[o]={rule:a,len:f},o+=f,s.push(l)}this.regExps[n]=new RegExp("(?:("+s.join(")|(")+")|(.))",t)}};(function(){this.getLineTokens=function(e,t){var n=t||"start",r=this.rules[n],i=this.matchMappings[n],s=this.regExps[n];s.lastIndex=0;var o,u=[],a=0,f={type:null,value:""};while(o=s.exec(e)){var l="text",c=null,h=[o[0]];for(var p=0;p1&&(h=o.slice(p+2,p+1+i[p].len)),typeof c.token=="function"?l=c.token.apply(this,h):l=c.token;if(c.next){n=c.next,r=this.rules[n],i=this.matchMappings[n],a=s.lastIndex,s=this.regExps[n];if(s===undefined)throw new Error("You indicated a state of "+c.next+" to go to, but it doesn't exist!");s.lastIndex=a}break}if(h[0]){typeof l=="string"&&(h=[h.join("")],l=[l]);for(var p=0;p=t&&(e.row=Math.max(0,t-1),e.column=this.getLine(t-1).length),e},this.insert=function(e,t){if(!t||t.length===0)return e;e=this.$clipPosition(e),this.getLength()<=1&&this.$detectNewLine(t);var n=this.$split(t),r=n.splice(0,1)[0],i=n.length==0?null:n.splice(n.length-1,1)[0];return e=this.insertInLine(e,r),i!==null&&(e=this.insertNewLine(e),e=this.insertLines(e.row,n),e=this.insertInLine(e,i||"")),e},this.insertLines=function(e,t){if(t.length==0)return{row:e,column:0};if(t.length>65535){var n=this.insertLines(e,t.slice(65535));t=t.slice(0,65535)}var r=[e,0];r.push.apply(r,t),this.$lines.splice.apply(this.$lines,r);var i=new s(e,0,e+t.length,0),o={action:"insertLines",range:i,lines:t};return this._emit("change",{data:o}),n||i.end},this.insertNewLine=function(e){e=this.$clipPosition(e);var t=this.$lines[e.row]||"";this.$lines[e.row]=t.substring(0,e.column),this.$lines.splice(e.row+1,0,t.substring(e.column,t.length));var n={row:e.row+1,column:0},r={action:"insertText",range:s.fromPoints(e,n),text:this.getNewLineCharacter()};return this._emit("change",{data:r}),n},this.insertInLine=function(e,t){if(t.length==0)return e;var n=this.$lines[e.row]||"";this.$lines[e.row]=n.substring(0,e.column)+t+n.substring(e.column);var r={row:e.row,column:e.column+t.length},i={action:"insertText",range:s.fromPoints(e,r),text:t};return this._emit("change",{data:i}),r},this.remove=function(e){e.start=this.$clipPosition(e.start),e.end=this.$clipPosition(e.end);if(e.isEmpty())return e.start;var t=e.start.row,n=e.end.row;if(e.isMultiLine()){var r=e.start.column==0?t:t+1,i=n-1;e.end.column>0&&this.removeInLine(n,0,e.end.column),i>=r&&this.removeLines(r,i),r!=t&&(this.removeInLine(t,e.start.column,this.getLine(t).length),this.removeNewLine(e.start.row))}else this.removeInLine(t,e.start.column,e.end.column);return e.start},this.removeInLine=function(e,t,n){if(t==n)return;var r=new s(e,t,e,n),i=this.getLine(e),o=i.substring(t,n),u=i.substring(0,t)+i.substring(n,i.length);this.$lines.splice(e,1,u);var a={action:"removeText",range:r,text:o};return this._emit("change",{data:a}),r.start},this.removeLines=function(e,t){var n=new s(e,0,t+1,0),r=this.$lines.splice(e,t-e+1),i={action:"removeLines",range:n,nl:this.getNewLineCharacter(),lines:r};return this._emit("change",{data:i}),r},this.removeNewLine=function(e){var t=this.getLine(e),n=this.getLine(e+1),r=new s(e,t.length,e+1,0),i=t+n;this.$lines.splice(e,2,i);var o={action:"removeText",range:r,text:this.getNewLineCharacter()};this._emit("change",{data:o})},this.replace=function(e,t){if(t.length==0&&e.isEmpty())return e.start;if(t==this.getTextRange(e))return e.end;this.remove(e);if(t)var n=this.insert(e.start,t);else n=e.start;return n},this.applyDeltas=function(e){for(var t=0;t=0;t--){var n=e[t],r=s.fromPoints(n.range.start,n.range.end);n.action=="insertLines"?this.removeLines(r.start.row,r.end.row-1):n.action=="insertText"?this.remove(r):n.action=="removeLines"?this.insertLines(r.start.row,n.lines):n.action=="removeText"&&this.insert(r.start,n.text)}}}).call(u.prototype),t.Document=u}),ace.define("ace/anchor",["require","exports","module","ace/lib/oop","ace/lib/event_emitter"],function(e,t,n){var r=e("./lib/oop"),i=e("./lib/event_emitter").EventEmitter,s=t.Anchor=function(e,t,n){this.document=e,typeof n=="undefined"?this.setPosition(t.row,t.column):this.setPosition(t,n),this.$onChange=this.onChange.bind(this),e.on("change",this.$onChange)};(function(){r.implement(this,i),this.getPosition=function(){return this.$clipPositionToDocument(this.row,this.column)},this.getDocument=function(){return this.document},this.onChange=function(e){var t=e.data,n=t.range;if(n.start.row==n.end.row&&n.start.row!=this.row)return;if(n.start.row>this.row)return;if(n.start.row==this.row&&n.start.column>this.column)return;var r=this.row,i=this.column;t.action==="insertText"?n.start.row===r&&n.start.column<=i?n.start.row===n.end.row?i+=n.end.column-n.start.column:(i-=n.start.column,r+=n.end.row-n.start.row):n.start.row!==n.end.row&&n.start.row=i?i=n.start.column:i=Math.max(0,i-(n.end.column-n.start.column)):n.start.row!==n.end.row&&n.start.row=this.document.getLength()?(n.row=Math.max(0,this.document.getLength()-1),n.column=this.document.getLine(n.row).length):e<0?(n.row=0,n.column=0):(n.row=e,n.column=Math.min(this.document.getLine(n.row).length,Math.max(0,t))),t<0&&(n.column=0),n}}).call(s.prototype)}),ace.define("ace/background_tokenizer",["require","exports","module","ace/lib/oop","ace/lib/event_emitter"],function(e,t,n){var r=e("./lib/oop"),i=e("./lib/event_emitter").EventEmitter,s=5e3,o=function(e,t){this.running=!1,this.lines=[],this.states=[],this.currentLine=0,this.tokenizer=e;var n=this;this.$worker=function(){if(!n.running)return;var e=new Date,t=n.currentLine,r=n.doc,i=0,s=r.getLength();while(n.currentLine20){n.fireUpdateEvent(t,n.currentLine-1),n.running=setTimeout(n.$worker,20);return}}n.running=!1,n.fireUpdateEvent(t,s-1)}};(function(){r.implement(this,i),this.setTokenizer=function(e){this.tokenizer=e,this.lines=[],this.states=[],this.start(0)},this.setDocument=function(e){this.doc=e,this.lines=[],this.states=[],this.stop()},this.fireUpdateEvent=function(e,t){var n={first:e,last:t};this._emit("update",{data:n})},this.start=function(e){this.currentLine=Math.min(e||0,this.currentLine,this.doc.getLength()),this.lines.splice(this.currentLine,this.lines.length),this.states.splice(this.currentLine,this.states.length),this.stop(),this.running=setTimeout(this.$worker,700)},this.$updateOnChange=function(e){var t=e.range,n=t.start.row,r=t.end.row-n;if(r===0)this.lines[n]=null;else if(e.action=="removeText"||e.action=="removeLines")this.lines.splice(n,r+1,null),this.states.splice(n,r+1,null);else{var i=Array(r+1);i.unshift(n,1),this.lines.splice.apply(this.lines,i),this.states.splice.apply(this.states,i)}this.currentLine=Math.min(n,this.currentLine,this.doc.getLength()),this.stop(),this.running=setTimeout(this.$worker,700)},this.stop=function(){this.running&&clearTimeout(this.running),this.running=!1},this.getTokens=function(e){return this.lines[e]||this.$tokenizeRow(e)},this.getState=function(e){return this.currentLine==e&&this.$tokenizeRow(e),this.states[e]||"start"},this.$tokenizeRow=function(e){var t=this.doc.getLine(e),n=this.states[e-1];if(t.length>s){var r={value:t.substr(s),type:"text"};t=t.slice(0,s)}var i=this.tokenizer.getLineTokens(t,n);return r&&(i.tokens.push(r),i.state="start"),this.states[e]!==i.state?(this.states[e]=i.state,this.lines[e+1]=null,this.currentLine>e+1&&(this.currentLine=e+1)):this.currentLine==e&&(this.currentLine=e+1),this.lines[e]=i.tokens}}).call(o.prototype),t.BackgroundTokenizer=o}),ace.define("ace/search_highlight",["require","exports","module","ace/lib/lang","ace/lib/oop","ace/range"],function(e,t,n){var r=e("./lib/lang"),i=e("./lib/oop"),s=e("./range").Range,o=function(e,t,n){this.setRegexp(e),this.clazz=t,this.type=n||"text"};(function(){this.MAX_RANGES=500,this.setRegexp=function(e){if(this.regExp+""==e+"")return;this.regExp=e,this.cache=[]},this.update=function(e,t,n,i){if(!this.regExp)return;var o=i.firstRow,u=i.lastRow;for(var a=o;a<=u;a++){var f=this.cache[a];f==null&&(f=r.getMatchOffsets(n.getLine(a),this.regExp),f.length>this.MAX_RANGES&&(f=f.slice(0,this.MAX_RANGES)),f=f.map(function(e){return new s(a,e.offset,a,e.offset+e.length)}),this.cache[a]=f.length?f:"");for(var l=f.length;l--;)t.drawSingleLineMarker(e,f[l].toScreenRange(n),this.clazz,i,null,this.type)}}}).call(o.prototype),t.SearchHighlight=o}),ace.define("ace/edit_session/folding",["require","exports","module","ace/range","ace/edit_session/fold_line","ace/edit_session/fold","ace/token_iterator"],function(e,t,n){function u(){this.getFoldAt=function(e,t,n){var r=this.getFoldLine(e);if(!r)return null;var i=r.folds;for(var s=0;s=e)return i;if(i.end.row>e)return null}return null},this.getNextFoldLine=function(e,t){var n=this.$foldData,r=0;t&&(r=n.indexOf(t)),r==-1&&(r=0);for(r;r=e)return i}return null},this.getFoldedRowCount=function(e,t){var n=this.$foldData,r=t-e+1;for(var i=0;i=t){u=e?r-=t-u:r=0);break}o>=e&&(u>=e?r-=o-u:r-=o-e+1)}return r},this.$addFoldLine=function(e){return this.$foldData.push(e),this.$foldData.sort(function(e,t){return e.start.row-t.start.row}),e},this.addFold=function(e,t){var n=this.$foldData,r=!1,o;e instanceof s?o=e:o=new s(t,e),this.$clipRangeToDocument(o.range);var u=o.start.row,a=o.start.column,f=o.end.row,l=o.end.column;if(u==f&&l-a<2)throw"The range has to be at least 2 characters width";var c=this.getFoldAt(u,a,1),h=this.getFoldAt(f,l,-1);if(c&&h==c)return c.addSubFold(o);if(c&&!c.range.isStart(u,a)||h&&!h.range.isEnd(f,l))throw"A fold can't intersect already existing fold"+o.range+c.range;var p=this.getFoldsInRange(o.range);p.length>0&&(this.removeFolds(p),o.subFolds=p);for(var d=0;dthis.endRow)throw"Can't add a fold to this FoldLine as it has no connection";this.folds.push(e),this.folds.sort(function(e,t){return-e.range.compareEnd(t.start.row,t.start.column)}),this.range.compareEnd(e.start.row,e.start.column)>0?(this.end.row=e.end.row,this.end.column=e.end.column):this.range.compareStart(e.end.row,e.end.column)<0&&(this.start.row=e.start.row,this.start.column=e.start.column)}else if(e.start.row==this.end.row)this.folds.push(e),this.end.row=e.end.row,this.end.column=e.end.column;else{if(e.end.row!=this.start.row)throw"Trying to add fold to FoldRow that doesn't have a matching row";this.folds.unshift(e),this.start.row=e.start.row,this.start.column=e.start.column}e.foldLine=this},this.containsRow=function(e){return e>=this.start.row&&e<=this.end.row},this.walk=function(e,t,n){var r=0,i=this.folds,s,o,u,a=!0;t==null&&(t=this.end.row,n=this.end.column);for(var f=0;f=this.$rowTokens.length){this.$row+=1;if(this.$row>=e)return this.$row=e-1,null;this.$rowTokens=this.$session.getTokens(this.$row),this.$tokenIndex=0}return this.$rowTokens[this.$tokenIndex]},this.getCurrentToken=function(){return this.$rowTokens[this.$tokenIndex]},this.getCurrentTokenRow=function(){return this.$row},this.getCurrentTokenColumn=function(){var e=this.$rowTokens,t=this.$tokenIndex,n=e[t].start;if(n!==undefined)return n;n=0;while(t>0)t-=1,n+=e[t].value.length;return n}}).call(r.prototype),t.TokenIterator=r}),ace.define("ace/edit_session/bracket_match",["require","exports","module","ace/token_iterator","ace/range"],function(e,t,n){function s(){this.findMatchingBracket=function(e,t){if(e.column==0)return null;var n=t||this.getLine(e.row).charAt(e.column-1);if(n=="")return null;var r=n.match(/([\(\[\{])|([\)\]\}])/);return r?r[1]?this.$findClosingBracket(r[1],e):this.$findOpeningBracket(r[2],e):null},this.getBracketRange=function(e){var t=this.getLine(e.row),n=!0,r,s=t.charAt(e.column-1),o=s&&s.match(/([\(\[\{])|([\)\]\}])/);o||(s=t.charAt(e.column),e={row:e.row,column:e.column+1},o=s&&s.match(/([\(\[\{])|([\)\]\}])/),n=!1);if(!o)return null;if(o[1]){var u=this.$findClosingBracket(o[1],e);if(!u)return null;r=i.fromPoints(e,u),n||(r.end.column++,r.start.column--),r.cursor=r.end}else{var u=this.$findOpeningBracket(o[2],e);if(!u)return null;r=i.fromPoints(u,e),n||(r.start.column++,r.end.column--),r.cursor=r.start}return r},this.$brackets={")":"(","(":")","]":"[","[":"]","{":"}","}":"{"},this.$findOpeningBracket=function(e,t,n){var i=this.$brackets[e],s=1,o=new r(this,t.row,t.column),u=o.getCurrentToken();u||(u=o.stepForward());if(!u)return;n||(n=new RegExp("(\\.?"+u.type.replace(".","\\.").replace("rparen",".paren")+")+"));var a=t.column-o.getCurrentTokenColumn()-2,f=u.value;for(;;){while(a>=0){var l=f.charAt(a);if(l==i){s-=1;if(s==0)return{row:o.getCurrentTokenRow(),column:a+o.getCurrentTokenColumn()}}else l==e&&(s+=1);a-=1}do u=o.stepBackward();while(u&&!n.test(u.type));if(u==null)break;f=u.value,a=f.length-1}return null},this.$findClosingBracket=function(e,t,n){var i=this.$brackets[e],s=1,o=new r(this,t.row,t.column),u=o.getCurrentToken();u||(u=o.stepForward());if(!u)return;n||(n=new RegExp("(\\.?"+u.type.replace(".","\\.").replace("lparen",".paren")+")+"));var a=t.column-o.getCurrentTokenColumn();for(;;){var f=u.value,l=f.length;while(aw&&o[c].end.row==n.end.row)c--;return o.slice(m,c+1)}return o},this.replace=function(e,t){var n=this.$options,r=this.$assembleRegExp(n);if(n.$isMultiLine)return t;if(!r)return;var i=r.exec(e);if(!i||i[0].length!=e.length)return null;t=e.replace(r,t);if(n.preserveCase){t=t.split("");for(var s=Math.min(e.length,e.length);s--;){var o=e[s];o&&o.toLowerCase()!=o?t[s]=t[s].toUpperCase():t[s]=t[s].toLowerCase()}t=t.join("")}return t},this.$matchIterator=function(e,t){var n=this.$assembleRegExp(t);if(!n)return!1;var i=this,o,u=t.backwards;if(t.$isMultiLine)var a=n.length,f=function(t,r,i){var u=t.search(n[0]);if(u==-1)return;for(var f=1;f=0;u--)if(o(s[u],t,i))return!0};else var f=function(e,t,i){var s=r.getMatchOffsets(e,n);for(var u=0;u=o;r--)if(n(e.getLine(r),r))return;if(t.wrap==0)return;for(r=u,o=s.row;r>=o;r--)if(n(e.getLine(r),r))return}:function(n){var r=s.row,i=e.getLine(r).substr(s.column);if(n(i,r,s.column))return;for(r+=1;r<=u;r++)if(n(e.getLine(r),r))return;if(t.wrap==0)return;for(r=o,u=s.row;r<=u;r++)if(n(e.getLine(r),r))return};return{forEach:a}}}).call(o.prototype),t.Search=o}),ace.define("ace/commands/command_manager",["require","exports","module","ace/lib/oop","ace/keyboard/hash_handler","ace/lib/event_emitter"],function(e,t,n){var r=e("../lib/oop"),i=e("../keyboard/hash_handler").HashHandler,s=e("../lib/event_emitter").EventEmitter,o=function(e,t){this.platform=e,this.commands=this.byName={},this.commmandKeyBinding={},this.addCommands(t),this.setDefaultHandler("exec",function(e){return e.command.exec(e.editor,e.args||{})})};r.inherits(o,i),function(){r.implement(this,s),this.exec=function(e,t,n){typeof e=="string"&&(e=this.commands[e]);if(!e)return!1;if(t&&t.$readOnly&&!e.readOnly)return!1;var r=this._emit("exec",{editor:t,command:e,args:n});return r===!1?!1:!0},this.toggleRecording=function(e){if(this.$inReplay)return;return e&&e._emit("changeStatus"),this.recording?(this.macro.pop(),this.removeEventListener("exec",this.$addCommandToMacro),this.macro.length||(this.macro=this.oldMacro),this.recording=!1):(this.$addCommandToMacro||(this.$addCommandToMacro=function(e){this.macro.push([e.command,e.args])}.bind(this)),this.oldMacro=this.macro,this.macro=[],this.on("exec",this.$addCommandToMacro),this.recording=!0)},this.replay=function(e){if(this.$inReplay||!this.macro)return;if(this.recording)return this.toggleRecording(e);try{this.$inReplay=!0,this.macro.forEach(function(t){typeof t=="string"?this.exec(t,e):this.exec(t[0],e,t[1])},this)}finally{this.$inReplay=!1}},this.trimMacro=function(e){return e.map(function(e){return typeof e[0]!="string"&&(e[0]=e[0].name),e[1]||(e=e[0]),e})}}.call(o.prototype),t.CommandManager=o}),ace.define("ace/keyboard/hash_handler",["require","exports","module","ace/lib/keys"],function(e,t,n){function i(e,t){this.platform=t,this.commands={},this.commmandKeyBinding={},this.addCommands(e)}var r=e("../lib/keys");(function(){this.addCommand=function(e){this.commands[e.name]&&this.removeCommand(e),this.commands[e.name]=e,e.bindKey&&this._buildKeyHash(e)},this.removeCommand=function(e){var t=typeof e=="string"?e:e.name;e=this.commands[t],delete this.commands[t];var n=this.commmandKeyBinding;for(var r in n)for(var i in n[r])n[r][i]==e&&delete n[r][i]},this.bindKey=function(e,t){if(!e)return;if(typeof t=="function"){this.addCommand({exec:t,bindKey:e,name:e});return}var n=this.commmandKeyBinding;e.split("|").forEach(function(e){var r=this.parseKeys(e,t),i=r.hashId;(n[i]||(n[i]={}))[r.key]=t},this)},this.addCommands=function(e){e&&Object.keys(e).forEach(function(t){var n=e[t];if(typeof n=="string")return this.bindKey(n,t);typeof n=="function"&&(n={exec:n}),n.name||(n.name=t),this.addCommand(n)},this)},this.removeCommands=function(e){Object.keys(e).forEach(function(t){this.removeCommand(e[t])},this)},this.bindKeys=function(e){Object.keys(e).forEach(function(t){this.bindKey(t,e[t])},this)},this._buildKeyHash=function(e){var t=e.bindKey;if(!t)return;var n=typeof t=="string"?t:t[this.platform];this.bindKey(n,e)},this.parseKeys=function(e){var t=e.toLowerCase().split(/[\-\+]([\-\+])?/).filter(function(e){return e}),n=t.pop(),i=r[n];if(r.FUNCTION_KEYS[i])n=r.FUNCTION_KEYS[i].toLowerCase();else{if(!t.length)return{key:n,hashId:-1};if(t.length==1&&t[0]=="shift")return{key:n.toUpperCase(),hashId:-1}}var s=0;for(var o=t.length;o--;){var u=r.KEY_MODS[t[o]];if(u==null)throw"invalid modifier "+t[o]+" in "+e;s|=u}return{key:n,hashId:s}},this.findKeyCommand=function(t,n){var r=this.commmandKeyBinding;return r[t]&&r[t][n]},this.handleKeyboard=function(e,t,n,r){return{command:this.findKeyCommand(t,n)}}}).call(i.prototype),t.HashHandler=i}),ace.define("ace/commands/default_commands",["require","exports","module","ace/lib/lang"],function(e,t,n){function i(e,t){return{win:e,mac:t}}var r=e("../lib/lang");t.commands=[{name:"selectall",bindKey:i("Ctrl-A","Command-A"),exec:function(e){e.selectAll()},readOnly:!0},{name:"centerselection",bindKey:i(null,"Ctrl-L"),exec:function(e){e.centerSelection()},readOnly:!0},{name:"gotoline",bindKey:i("Ctrl-L","Command-L"),exec:function(e){var t=parseInt(prompt("Enter line number:"),10);isNaN(t)||e.gotoLine(t)},readOnly:!0},{name:"fold",bindKey:i("Alt-L|Ctrl-F1","Command-Alt-L|Command-F1"),exec:function(e){e.session.toggleFold(!1)},readOnly:!0},{name:"unfold",bindKey:i("Alt-Shift-L|Ctrl-Shift-F1","Command-Alt-Shift-L|Command-Shift-F1"),exec:function(e){e.session.toggleFold(!0)},readOnly:!0},{name:"foldall",bindKey:i("Alt-0","Command-Option-0"),exec:function(e){e.session.foldAll()},readOnly:!0},{name:"unfoldall",bindKey:i("Alt-Shift-0","Command-Option-Shift-0"),exec:function(e){e.session.unfold()},readOnly:!0},{name:"findnext",bindKey:i("Ctrl-K","Command-G"),exec:function(e){e.findNext()},readOnly:!0},{name:"findprevious",bindKey:i("Ctrl-Shift-K","Command-Shift-G"),exec:function(e){e.findPrevious()},readOnly:!0},{name:"find",bindKey:i("Ctrl-F","Command-F"),exec:function(e){var t=prompt("Find:",e.getCopyText());e.find(t)},readOnly:!0},{name:"overwrite",bindKey:"Insert",exec:function(e){e.toggleOverwrite()},readOnly:!0},{name:"selecttostart",bindKey:i("Ctrl-Shift-Home","Command-Shift-Up"),exec:function(e){e.getSelection().selectFileStart()},multiSelectAction:"forEach",readOnly:!0},{name:"gotostart",bindKey:i("Ctrl-Home","Command-Home|Command-Up"),exec:function(e){e.navigateFileStart()},multiSelectAction:"forEach",readOnly:!0},{name:"selectup",bindKey:i("Shift-Up","Shift-Up"),exec:function(e){e.getSelection().selectUp()},multiSelectAction:"forEach",readOnly:!0},{name:"golineup",bindKey:i("Up","Up|Ctrl-P"),exec:function(e,t){e.navigateUp(t.times)},multiSelectAction:"forEach",readOnly:!0},{name:"selecttoend",bindKey:i("Ctrl-Shift-End","Command-Shift-Down"),exec:function(e){e.getSelection().selectFileEnd()},multiSelectAction:"forEach",readOnly:!0},{name:"gotoend",bindKey:i("Ctrl-End","Command-End|Command-Down"),exec:function(e){e.navigateFileEnd()},multiSelectAction:"forEach",readOnly:!0},{name:"selectdown",bindKey:i("Shift-Down","Shift-Down"),exec:function(e){e.getSelection().selectDown()},multiSelectAction:"forEach",readOnly:!0},{name:"golinedown",bindKey:i("Down","Down|Ctrl-N"),exec:function(e,t){e.navigateDown(t.times)},multiSelectAction:"forEach",readOnly:!0},{name:"selectwordleft",bindKey:i("Ctrl-Shift-Left","Option-Shift-Left"),exec:function(e){e.getSelection().selectWordLeft()},multiSelectAction:"forEach",readOnly:!0},{name:"gotowordleft",bindKey:i("Ctrl-Left","Option-Left"),exec:function(e){e.navigateWordLeft()},multiSelectAction:"forEach",readOnly:!0},{name:"selecttolinestart",bindKey:i("Alt-Shift-Left","Command-Shift-Left"),exec:function(e){e.getSelection().selectLineStart()},multiSelectAction:"forEach",readOnly:!0},{name:"gotolinestart",bindKey:i("Alt-Left|Home","Command-Left|Home|Ctrl-A"),exec:function(e){e.navigateLineStart()},multiSelectAction:"forEach",readOnly:!0},{name:"selectleft",bindKey:i("Shift-Left","Shift-Left"),exec:function(e){e.getSelection().selectLeft()},multiSelectAction:"forEach",readOnly:!0},{name:"gotoleft",bindKey:i("Left","Left|Ctrl-B"),exec:function(e,t){e.navigateLeft(t.times)},multiSelectAction:"forEach",readOnly:!0},{name:"selectwordright",bindKey:i("Ctrl-Shift-Right","Option-Shift-Right"),exec:function(e){e.getSelection().selectWordRight()},multiSelectAction:"forEach",readOnly:!0},{name:"gotowordright",bindKey:i("Ctrl-Right","Option-Right"),exec:function(e){e.navigateWordRight()},multiSelectAction:"forEach",readOnly:!0},{name:"selecttolineend",bindKey:i("Alt-Shift-Right","Command-Shift-Right"),exec:function(e){e.getSelection().selectLineEnd()},multiSelectAction:"forEach",readOnly:!0},{name:"gotolineend",bindKey:i("Alt-Right|End","Command-Right|End|Ctrl-E"),exec:function(e){e.navigateLineEnd()},multiSelectAction:"forEach",readOnly:!0},{name:"selectright",bindKey:i("Shift-Right","Shift-Right"),exec:function(e){e.getSelection().selectRight()},multiSelectAction:"forEach",readOnly:!0},{name:"gotoright",bindKey:i("Right","Right|Ctrl-F"),exec:function(e,t){e.navigateRight(t.times)},multiSelectAction:"forEach",readOnly:!0},{name:"selectpagedown",bindKey:"Shift-PageDown",exec:function(e){e.selectPageDown()},readOnly:!0},{name:"pagedown",bindKey:i(null,"Option-PageDown"),exec:function(e){e.scrollPageDown()},readOnly:!0},{name:"gotopagedown",bindKey:i("PageDown","PageDown|Ctrl-V"),exec:function(e){e.gotoPageDown()},readOnly:!0},{name:"selectpageup",bindKey:"Shift-PageUp",exec:function(e){e.selectPageUp()},readOnly:!0},{name:"pageup",bindKey:i(null,"Option-PageUp"),exec:function(e){e.scrollPageUp()},readOnly:!0},{name:"gotopageup",bindKey:"PageUp",exec:function(e){e.gotoPageUp()},readOnly:!0},{name:"scrollup",bindKey:i("Ctrl-Up",null),exec:function(e){e.renderer.scrollBy(0,-2*e.renderer.layerConfig.lineHeight)},readOnly:!0},{name:"scrolldown",bindKey:i("Ctrl-Down",null),exec:function(e){e.renderer.scrollBy(0,2*e.renderer.layerConfig.lineHeight)},readOnly:!0},{name:"selectlinestart",bindKey:"Shift-Home",exec:function(e){e.getSelection().selectLineStart()},multiSelectAction:"forEach",readOnly:!0},{name:"selectlineend",bindKey:"Shift-End",exec:function(e){e.getSelection().selectLineEnd()},multiSelectAction:"forEach",readOnly:!0},{name:"togglerecording",bindKey:i("Ctrl-Alt-E","Command-Option-E"),exec:function(e){e.commands.toggleRecording(e)},readOnly:!0},{name:"replaymacro",bindKey:i("Ctrl-Shift-E","Command-Shift-E"),exec:function(e){e.commands.replay(e)},readOnly:!0},{name:"jumptomatching",bindKey:i("Ctrl-P","Ctrl-Shift-P"),exec:function(e){e.jumpToMatching()},multiSelectAction:"forEach",readOnly:!0},{name:"selecttomatching",bindKey:i("Ctrl-Shift-P",null),exec:function(e){e.jumpToMatching(!0)},readOnly:!0},{name:"cut",exec:function(e){var t=e.getSelectionRange();e._emit("cut",t),e.selection.isEmpty()||(e.session.remove(t),e.clearSelection())},multiSelectAction:"forEach"},{name:"removeline",bindKey:i("Ctrl-D","Command-D"),exec:function(e){e.removeLines()},multiSelectAction:"forEach"},{name:"duplicateSelection",bindKey:i("Ctrl-Shift-D","Command-Shift-D"),exec:function(e){e.duplicateSelection()},multiSelectAction:"forEach"},{name:"sortlines",bindKey:i("Ctrl-Alt-S","Command-Alt-S"),exec:function(e){e.sortLines()},multiSelectAction:"forEach"},{name:"togglecomment",bindKey:i("Ctrl-/","Command-/"),exec:function(e){e.toggleCommentLines()},multiSelectAction:"forEach"},{name:"modifyNumberUp",bindKey:i("Ctrl-Shift-Up","Alt-Shift-Up"),exec:function(e){e.modifyNumber(1)},multiSelectAction:"forEach"},{name:"modifyNumberDown",bindKey:i("Ctrl-Shift-Down","Alt-Shift-Down"),exec:function(e){e.modifyNumber(-1)},multiSelectAction:"forEach"},{name:"replace",bindKey:i("Ctrl-R","Command-Option-F"),exec:function(e){var t=prompt("Find:",e.getCopyText());if(!t)return;var n=prompt("Replacement:");if(!n)return;e.replace(n,{needle:t})}},{name:"replaceall",bindKey:i("Ctrl-Shift-R","Command-Shift-Option-F"),exec:function(e){var t=prompt("Find:");if(!t)return;var n=prompt("Replacement:");if(!n)return;e.replaceAll(n,{needle:t})}},{name:"undo",bindKey:i("Ctrl-Z","Command-Z"),exec:function(e){e.undo()}},{name:"redo",bindKey:i("Ctrl-Shift-Z|Ctrl-Y","Command-Shift-Z|Command-Y"),exec:function(e){e.redo()}},{name:"copylinesup",bindKey:i("Alt-Shift-Up","Command-Option-Up"),exec:function(e){e.copyLinesUp()}},{name:"movelinesup",bindKey:i("Alt-Up","Option-Up"),exec:function(e){e.moveLinesUp()}},{name:"copylinesdown",bindKey:i("Alt-Shift-Down","Command-Option-Down"),exec:function(e){e.copyLinesDown()}},{name:"movelinesdown",bindKey:i("Alt-Down","Option-Down"),exec:function(e){e.moveLinesDown()}},{name:"del",bindKey:i("Delete","Delete|Ctrl-D"),exec:function(e){e.remove("right")},multiSelectAction:"forEach"},{name:"backspace",bindKey:i("Command-Backspace|Option-Backspace|Shift-Backspace|Backspace","Ctrl-Backspace|Command-Backspace|Shift-Backspace|Backspace|Ctrl-H"),exec:function(e){e.remove("left")},multiSelectAction:"forEach"},{name:"removetolinestart",bindKey:i("Alt-Backspace","Command-Backspace"),exec:function(e){e.removeToLineStart()},multiSelectAction:"forEach"},{name:"removetolineend",bindKey:i("Alt-Delete","Ctrl-K"),exec:function(e){e.removeToLineEnd()},multiSelectAction:"forEach"},{name:"removewordleft",bindKey:i("Ctrl-Backspace","Alt-Backspace|Ctrl-Alt-Backspace"),exec:function(e){e.removeWordLeft()},multiSelectAction:"forEach"},{name:"removewordright",bindKey:i("Ctrl-Delete","Alt-Delete"),exec:function(e){e.removeWordRight()},multiSelectAction:"forEach"},{name:"outdent",bindKey:i("Shift-Tab","Shift-Tab"),exec:function(e){e.blockOutdent()},multiSelectAction:"forEach"},{name:"indent",bindKey:i("Tab","Tab"),exec:function(e){e.indent()},multiSelectAction:"forEach"},{name:"insertstring",exec:function(e,t){e.insert(t)},multiSelectAction:"forEach"},{name:"inserttext",exec:function(e,t){e.insert(r.stringRepeat(t.text||"",t.times||1))},multiSelectAction:"forEach"},{name:"splitline",bindKey:i(null,"Ctrl-O"),exec:function(e){e.splitLine()},multiSelectAction:"forEach"},{name:"transposeletters",bindKey:i("Ctrl-T","Ctrl-T"),exec:function(e){e.transposeLetters()},multiSelectAction:function(e){e.transposeSelections(1)}},{name:"touppercase",bindKey:i("Ctrl-U","Ctrl-U"),exec:function(e){e.toUpperCase()},multiSelectAction:"forEach"},{name:"tolowercase",bindKey:i("Ctrl-Shift-U","Ctrl-Shift-U"),exec:function(e){e.toLowerCase()},multiSelectAction:"forEach"}]}),ace.define("ace/undomanager",["require","exports","module"],function(e,t,n){var r=function(){this.reset()};(function(){this.execute=function(e){var t=e.args[0];this.$doc=e.args[1],this.$undoStack.push(t),this.$redoStack=[]},this.undo=function(e){var t=this.$undoStack.pop(),n=null;return t&&(n=this.$doc.undoChanges(t,e),this.$redoStack.push(t)),n},this.redo=function(e){var t=this.$redoStack.pop(),n=null;return t&&(n=this.$doc.redoChanges(t,e),this.$undoStack.push(t)),n},this.reset=function(){this.$undoStack=[],this.$redoStack=[]},this.hasUndo=function(){return this.$undoStack.length>0},this.hasRedo=function(){return this.$redoStack.length>0}}).call(r.prototype),t.UndoManager=r}),ace.define("ace/virtual_renderer",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/event","ace/lib/useragent","ace/config","ace/lib/net","ace/layer/gutter","ace/layer/marker","ace/layer/text","ace/layer/cursor","ace/scrollbar","ace/renderloop","ace/lib/event_emitter"],function(e,t,n){var r=e("./lib/oop"),i=e("./lib/dom"),s=e("./lib/event"),o=e("./lib/useragent"),u=e("./config"),a=e("./lib/net"),f=e("./layer/gutter").Gutter,l=e("./layer/marker").Marker,c=e("./layer/text").Text,h=e("./layer/cursor").Cursor,p=e("./scrollbar").ScrollBar,d=e("./renderloop").RenderLoop,v=e("./lib/event_emitter").EventEmitter,m=".ace_editor {position: absolute;overflow: hidden;font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', 'Consolas', 'source-code-pro', monospace;font-size: 12px;}.ace_scroller {position: absolute;overflow: hidden;}.ace_content {position: absolute;-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;cursor: text;}.ace_gutter {position: absolute;overflow : hidden;height: 100%;width: auto;cursor: default;z-index: 4;}.ace_gutter-active-line {position: absolute;left: 0;right: 0;}.ace_scroller.ace_scroll-left {box-shadow: 17px 0 16px -16px rgba(0, 0, 0, 0.4) inset;}.ace_gutter-cell {padding-left: 19px;padding-right: 6px;background-repeat: no-repeat;}.ace_gutter-cell.ace_error {background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QUM2OEZDQTQ4RTU0MTFFMUEzM0VFRTM2RUY1M0RBMjYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6QUM2OEZDQTU4RTU0MTFFMUEzM0VFRTM2RUY1M0RBMjYiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpBQzY4RkNBMjhFNTQxMUUxQTMzRUVFMzZFRjUzREEyNiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpBQzY4RkNBMzhFNTQxMUUxQTMzRUVFMzZFRjUzREEyNiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PkgXxbAAAAJbSURBVHjapFNNaBNBFH4zs5vdZLP5sQmNpT82QY209heh1ioWisaDRcSKF0WKJ0GQnrzrxasHsR6EnlrwD0TagxJabaVEpFYxLWlLSS822tr87m66ccfd2GKyVhA6MMybgfe97/vmPUQphd0sZjto9XIn9OOsvlu2nkqRzVU+6vvlzPf8W6bk8dxQ0NPbxAALgCgg2JkaQuhzQau/El0zbmUA7U0Es8v2CiYmKQJHGO1QICCLoqilMhkmurDAyapKgqItezi/USRdJqEYY4D5jCy03ht2yMkkvL91jTTX10qzyyu2hruPRN7jgbH+EOsXcMLgYiThEgAMhABW85oqy1DXdRIdvP1AHJ2acQXvDIrVHcdQNrEKNYSVMSZGMjEzIIAwDXIo+6G/FxcGnzkC3T2oMhLjre49sBB+RRcHLqdafK6sYdE/GGBwU1VpFNj0aN8pJbe+BkZyevUrvLl6Xmm0W9IuTc0DxrDNAJd5oEvI/KRsNC3bQyNjPO9yQ1YHcfj2QvfQc/5TUhJTBc2iM0U7AWDQtc1nJHvD/cfO2s7jaGkiTEfa/Ep8coLu7zmNmh8+dc5lZDuUeFAGUNA/OY6JVaypQ0vjr7XYjUvJM37vt+j1vuTK5DgVfVUoTjVe+y3/LxMxY2GgU+CSLy4cpfsYorRXuXIOi0Vt40h67uZFTdIo6nLaZcwUJWAzwNS0tBnqqKzQDnjdG/iPyZxo46HaKUpbvYkj8qYRTZsBhge+JHhZyh0x9b95JqjVJkT084kZIPwu/mPWqPgfQ5jXh2+92Ay7HedfAgwA6KDWafb4w3cAAAAASUVORK5CYII=\");background-repeat: no-repeat;background-position: 2px center;}.ace_gutter-cell.ace_warning {background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QUM2OEZDQTg4RTU0MTFFMUEzM0VFRTM2RUY1M0RBMjYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6QUM2OEZDQTk4RTU0MTFFMUEzM0VFRTM2RUY1M0RBMjYiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpBQzY4RkNBNjhFNTQxMUUxQTMzRUVFMzZFRjUzREEyNiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpBQzY4RkNBNzhFNTQxMUUxQTMzRUVFMzZFRjUzREEyNiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pgd7PfIAAAGmSURBVHjaYvr//z8DJZiJgUIANoCRkREb9gLiSVAaQx4OQM7AAkwd7XU2/v++/rOttdYGEB9dASEvOMydGKfH8Gv/p4XTkvRBfLxeQAP+1cUhXopyvzhP7P/IoSj7g7Mw09cNKO6J1QQ0L4gICPIv/veg/8W+JdFvQNLHVsW9/nmn9zk7B+cCkDwhL7gt6knSZnx9/LuCEOcvkIAMP+cvto9nfqyZmmUAksfnBUtbM60gX/3/kgyv3/xSFOL5DZT+L8vP+Yfh5cvfPvp/xUHyQHXGyAYwgpwBjZYFT3Y1OEl/OfCH4ffv3wzc4iwMvNIsDJ+f/mH4+vIPAxsb631WW0Yln6ZpQLXdMK/DXGDflh+sIv37EivD5x//Gb7+YWT4y86sl7BCCkSD+Z++/1dkvsFRl+HnD1Rvje4F8whjMXmGj58YGf5zsDMwcnAwfPvKcml62DsQDeaDxN+/Y0qwlpEHqrdB94IRNIDUgfgfKJChGK4OikEW3gTiXUB950ASLFAF54AC94A0G9QAfOnmF9DCDzABFqS08IHYDIScdijOjQABBgC+/9awBH96jwAAAABJRU5ErkJggg==\");background-position: 2px center;}.ace_gutter-cell.ace_info {background-image: url(\"data:image/gif;base64,R0lGODlhEAAQAMQAAAAAAEFBQVJSUl5eXmRkZGtra39/f4WFhYmJiZGRkaampry8vMPDw8zMzNXV1dzc3OTk5Orq6vDw8P///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAkAABQALAAAAAAQABAAAAUuICWOZGmeaBml5XGwFCQSBGyXRSAwtqQIiRuiwIM5BoYVbEFIyGCQoeJGrVptIQA7\");background-position: 2px center;}.ace_dark .ace_gutter-cell.ace_info {background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpGRTk5MTVGREIxNDkxMUUxOTc5Q0FFREQyMTNGMjBFQyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpGRTk5MTVGRUIxNDkxMUUxOTc5Q0FFREQyMTNGMjBFQyI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkZFOTkxNUZCQjE0OTExRTE5NzlDQUVERDIxM0YyMEVDIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkZFOTkxNUZDQjE0OTExRTE5NzlDQUVERDIxM0YyMEVDIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+SIDkjAAAAJ1JREFUeNpi/P//PwMlgImBQkB7A6qrq/+DMC55FkIGKCoq4pVnpFkgTp069f/+/fv/r1u37r+tre1/kg0A+ptn9uzZYLaRkRHpLvjw4cNXWVlZhufPnzOcO3eOdAO0tbVPAjHDmzdvGA4fPsxIsgGSkpJmv379Ynj37h2DjIyMCMkG3LhxQ/T27dsMampqDHZ2dq/pH41DxwCAAAMAFdc68dUsFZgAAAAASUVORK5CYII=\");}.ace_scrollbar {position: absolute;overflow-x: hidden;overflow-y: scroll;right: 0;}.ace_scrollbar-inner {position: absolute;width: 1px;left: 0;}.ace_print-margin {position: absolute;height: 100%;}.ace_text-input {position: absolute;z-index: 0;width: 0.5em;height: 1em;opacity: 0;background: transparent;-moz-appearance: none;appearance: none;border: none;resize: none;outline: none;overflow: hidden;}.ace_text-input.ace_composition {background: #fff;color: #000;z-index: 1000;opacity: 1;border: solid lightgray 1px;margin: -1px}.ace_layer {z-index: 1;position: absolute;overflow: hidden;white-space: nowrap;height: 100%;width: 100%;-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;/* setting pointer-events: auto; on node under the mouse, which changesduring scroll, will break mouse wheel scrolling in Safari */pointer-events: none;}.ace_gutter-layer {position: relative;width: auto;text-align: right;pointer-events: auto;}.ace_text-layer {color: black;font: inherit !important;}.ace_cjk {display: inline-block;text-align: center;}.ace_cursor-layer {z-index: 4;}.ace_cursor {z-index: 4;position: absolute;-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;}.ace_hidden-cursors .ace_cursor {opacity: 0.2;}.ace_smooth-blinking .ace_cursor {-moz-transition: opacity 0.18s;-webkit-transition: opacity 0.18s;-o-transition: opacity 0.18s;-ms-transition: opacity 0.18s;transition: opacity 0.18s;}.ace_cursor[style*=\"opacity: 0\"]{-ms-filter: \"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)\";}.ace_editor.ace_multiselect .ace_cursor {border-left-width: 1px;}.ace_line {white-space: nowrap;}.ace_marker-layer .ace_step {position: absolute;z-index: 3;}.ace_marker-layer .ace_selection {position: absolute;z-index: 5;}.ace_marker-layer .ace_bracket {position: absolute;z-index: 6;}.ace_marker-layer .ace_active-line {position: absolute;z-index: 2;}.ace_marker-layer .ace_selected-word {position: absolute;z-index: 4;-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;}.ace_line .ace_fold {-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;display: inline-block;height: 11px;margin-top: -2px;vertical-align: middle;background-image:url(\"data:image/png,%89PNG%0D%0A%1A%0A%00%00%00%0DIHDR%00%00%00%11%00%00%00%09%08%06%00%00%00%D4%E8%C7%0C%00%00%03%1EiCCPICC%20Profile%00%00x%01%85T%DFk%D3P%14%FE%DAe%9D%B0%E1%8B%3Ag%11%09%3Eh%91ndStC%9C%B6kW%BA%CDZ%EA6%B7!H%9B%A6m%5C%9A%C6%24%ED~%B0%07%D9%8Bo%3A%C5w%F1%07%3E%F9%07%0C%D9%83o%7B%92%0D%C6%14a%F8%AC%88%22L%F6%22%B3%9E%9B4M'S%03%B9%F7%BB%DF%F9%EE9'%E7%E4%5E%A0%F9qZ%D3%14%2F%0F%14USO%C5%C2%FC%C4%E4%14%DF%F2%01%5E%1CC%2B%FChM%8B%86%16J%26G%40%0F%D3%B2y%EF%B3%F3%0E%1E%C6lt%EEo%DF%AB%FEc%D5%9A%95%0C%11%F0%1C%20%BE%945%C4%22%E1Y%A0i%5C%D4t%13%E0%D6%89%EF%9D15%C2%CDLsX%A7%04%09%1Fg8oc%81%E1%8C%8D%23%96f45%40%9A%09%C2%07%C5B%3AK%B8%408%98i%E0%F3%0D%D8%CE%81%14%E4'%26%A9%92.%8B%3C%ABER%2F%E5dE%B2%0C%F6%F0%1Fs%83%F2_%B0%A8%94%E9%9B%AD%E7%10%8Dm%9A%19N%D1%7C%8A%DE%1F9%7Dp%8C%E6%00%D5%C1%3F_%18%BDA%B8%9DpX6%E3%A35~B%CD%24%AE%11%26%BD%E7%EEti%98%EDe%9A%97Y)%12%25%1C%24%BCbT%AE3li%E6%0B%03%89%9A%E6%D3%ED%F4P%92%B0%9F4%BF43Y%F3%E3%EDP%95%04%EB1%C5%F5%F6KF%F4%BA%BD%D7%DB%91%93%07%E35%3E%A7)%D6%7F%40%FE%BD%F7%F5r%8A%E5y%92%F0%EB%B4%1E%8D%D5%F4%5B%92%3AV%DB%DB%E4%CD%A6%23%C3%C4wQ%3F%03HB%82%8E%1Cd(%E0%91B%0Ca%9Ac%C4%AA%F8L%16%19%22J%A4%D2itTy%B28%D6%3B(%93%96%ED%1CGx%C9_%0E%B8%5E%16%F5%5B%B2%B8%F6%E0%FB%9E%DD%25%D7%8E%BC%15%85%C5%B7%A3%D8Q%ED%B5%81%E9%BA%B2%13%9A%1B%7Fua%A5%A3n%E17%B9%E5%9B%1Bm%AB%0B%08Q%FE%8A%E5%B1H%5Ee%CAO%82Q%D7u6%E6%90S%97%FCu%0B%CF2%94%EE%25v%12X%0C%BA%AC%F0%5E%F8*l%0AO%85%17%C2%97%BF%D4%C8%CE%DE%AD%11%CB%80q%2C%3E%AB%9ES%CD%C6%EC%25%D2L%D2%EBd%B8%BF%8A%F5B%C6%18%F9%901CZ%9D%BE%24M%9C%8A9%F2%DAP%0B'%06w%82%EB%E6%E2%5C%2F%D7%07%9E%BB%CC%5D%E1%FA%B9%08%AD.r%23%8E%C2%17%F5E%7C!%F0%BE3%BE%3E_%B7o%88a%A7%DB%BE%D3d%EB%A31Z%EB%BB%D3%91%BA%A2%B1z%94%8F%DB'%F6%3D%8E%AA%13%19%B2%B1%BE%B1~V%08%2B%B4%A2cjJ%B3tO%00%03%25mN%97%F3%05%93%EF%11%84%0B%7C%88%AE-%89%8F%ABbW%90O%2B%0Ao%99%0C%5E%97%0CI%AFH%D9.%B0%3B%8F%ED%03%B6S%D6%5D%E6i_s9%F3*p%E9%1B%FD%C3%EB.7U%06%5E%19%C0%D1s.%17%A03u%E4%09%B0%7C%5E%2C%EB%15%DB%1F%3C%9E%B7%80%91%3B%DBc%AD%3Dma%BA%8B%3EV%AB%DBt.%5B%1E%01%BB%0F%AB%D5%9F%CF%AA%D5%DD%E7%E4%7F%0Bx%A3%FC%06%A9%23%0A%D6%C2%A1_2%00%00%00%09pHYs%00%00%0B%13%00%00%0B%13%01%00%9A%9C%18%00%00%00%B5IDAT(%15%A5%91%3D%0E%02!%10%85ac%E1%05%D6%CE%D6%C6%CE%D2%E8%ED%CD%DE%C0%C6%D6N.%E0V%F8%3D%9Ca%891XH%C2%BE%D9y%3F%90!%E6%9C%C3%BFk%E5%011%C6-%F5%C8N%04%DF%BD%FF%89%DFt%83DN%60%3E%F3%AB%A0%DE%1A%5Dg%BE%10Q%97%1B%40%9C%A8o%10%8F%5E%828%B4%1B%60%87%F6%02%26%85%1Ch%1E%C1%2B%5Bk%FF%86%EE%B7j%09%9A%DA%9B%ACe%A3%F9%EC%DA!9%B4%D5%A6%81%86%86%98%CC%3C%5B%40%FA%81%B3%E9%CB%23%94%C16Azo%05%D4%E1%C1%95a%3B%8A'%A0%E8%CC%17%22%85%1D%BA%00%A2%FA%DC%0A%94%D1%D1%8D%8B%3A%84%17B%C7%60%1A%25Z%FC%8D%00%00%00%00IEND%AEB%60%82\"),url(\"data:image/png,%89PNG%0D%0A%1A%0A%00%00%00%0DIHDR%00%00%00%05%00%00%007%08%06%00%00%00%C4%DD%80C%00%00%03%1EiCCPICC%20Profile%00%00x%01%85T%DFk%D3P%14%FE%DAe%9D%B0%E1%8B%3Ag%11%09%3Eh%91ndStC%9C%B6kW%BA%CDZ%EA6%B7!H%9B%A6m%5C%9A%C6%24%ED~%B0%07%D9%8Bo%3A%C5w%F1%07%3E%F9%07%0C%D9%83o%7B%92%0D%C6%14a%F8%AC%88%22L%F6%22%B3%9E%9B4M'S%03%B9%F7%BB%DF%F9%EE9'%E7%E4%5E%A0%F9qZ%D3%14%2F%0F%14USO%C5%C2%FC%C4%E4%14%DF%F2%01%5E%1CC%2B%FChM%8B%86%16J%26G%40%0F%D3%B2y%EF%B3%F3%0E%1E%C6lt%EEo%DF%AB%FEc%D5%9A%95%0C%11%F0%1C%20%BE%945%C4%22%E1Y%A0i%5C%D4t%13%E0%D6%89%EF%9D15%C2%CDLsX%A7%04%09%1Fg8oc%81%E1%8C%8D%23%96f45%40%9A%09%C2%07%C5B%3AK%B8%408%98i%E0%F3%0D%D8%CE%81%14%E4'%26%A9%92.%8B%3C%ABER%2F%E5dE%B2%0C%F6%F0%1Fs%83%F2_%B0%A8%94%E9%9B%AD%E7%10%8Dm%9A%19N%D1%7C%8A%DE%1F9%7Dp%8C%E6%00%D5%C1%3F_%18%BDA%B8%9DpX6%E3%A35~B%CD%24%AE%11%26%BD%E7%EEti%98%EDe%9A%97Y)%12%25%1C%24%BCbT%AE3li%E6%0B%03%89%9A%E6%D3%ED%F4P%92%B0%9F4%BF43Y%F3%E3%EDP%95%04%EB1%C5%F5%F6KF%F4%BA%BD%D7%DB%91%93%07%E35%3E%A7)%D6%7F%40%FE%BD%F7%F5r%8A%E5y%92%F0%EB%B4%1E%8D%D5%F4%5B%92%3AV%DB%DB%E4%CD%A6%23%C3%C4wQ%3F%03HB%82%8E%1Cd(%E0%91B%0Ca%9Ac%C4%AA%F8L%16%19%22J%A4%D2itTy%B28%D6%3B(%93%96%ED%1CGx%C9_%0E%B8%5E%16%F5%5B%B2%B8%F6%E0%FB%9E%DD%25%D7%8E%BC%15%85%C5%B7%A3%D8Q%ED%B5%81%E9%BA%B2%13%9A%1B%7Fua%A5%A3n%E17%B9%E5%9B%1Bm%AB%0B%08Q%FE%8A%E5%B1H%5Ee%CAO%82Q%D7u6%E6%90S%97%FCu%0B%CF2%94%EE%25v%12X%0C%BA%AC%F0%5E%F8*l%0AO%85%17%C2%97%BF%D4%C8%CE%DE%AD%11%CB%80q%2C%3E%AB%9ES%CD%C6%EC%25%D2L%D2%EBd%B8%BF%8A%F5B%C6%18%F9%901CZ%9D%BE%24M%9C%8A9%F2%DAP%0B'%06w%82%EB%E6%E2%5C%2F%D7%07%9E%BB%CC%5D%E1%FA%B9%08%AD.r%23%8E%C2%17%F5E%7C!%F0%BE3%BE%3E_%B7o%88a%A7%DB%BE%D3d%EB%A31Z%EB%BB%D3%91%BA%A2%B1z%94%8F%DB'%F6%3D%8E%AA%13%19%B2%B1%BE%B1~V%08%2B%B4%A2cjJ%B3tO%00%03%25mN%97%F3%05%93%EF%11%84%0B%7C%88%AE-%89%8F%ABbW%90O%2B%0Ao%99%0C%5E%97%0CI%AFH%D9.%B0%3B%8F%ED%03%B6S%D6%5D%E6i_s9%F3*p%E9%1B%FD%C3%EB.7U%06%5E%19%C0%D1s.%17%A03u%E4%09%B0%7C%5E%2C%EB%15%DB%1F%3C%9E%B7%80%91%3B%DBc%AD%3Dma%BA%8B%3EV%AB%DBt.%5B%1E%01%BB%0F%AB%D5%9F%CF%AA%D5%DD%E7%E4%7F%0Bx%A3%FC%06%A9%23%0A%D6%C2%A1_2%00%00%00%09pHYs%00%00%0B%13%00%00%0B%13%01%00%9A%9C%18%00%00%00%3AIDAT8%11c%FC%FF%FF%7F%18%03%1A%60%01%F2%3F%A0%891%80%04%FF%11-%F8%17%9BJ%E2%05%B1ZD%81v%26t%E7%80%F8%A3%82h%A12%1A%20%A3%01%02%0F%01%BA%25%06%00%19%C0%0D%AEF%D5%3ES%00%00%00%00IEND%AEB%60%82\");background-repeat: no-repeat, repeat-x;background-position: center center, top left;color: transparent;border: 1px solid black;-moz-border-radius: 2px;-webkit-border-radius: 2px;border-radius: 2px;cursor: pointer;pointer-events: auto;}.ace_dark .ace_fold {}.ace_fold:hover{background-image:url(\"data:image/png,%89PNG%0D%0A%1A%0A%00%00%00%0DIHDR%00%00%00%11%00%00%00%09%08%06%00%00%00%D4%E8%C7%0C%00%00%03%1EiCCPICC%20Profile%00%00x%01%85T%DFk%D3P%14%FE%DAe%9D%B0%E1%8B%3Ag%11%09%3Eh%91ndStC%9C%B6kW%BA%CDZ%EA6%B7!H%9B%A6m%5C%9A%C6%24%ED~%B0%07%D9%8Bo%3A%C5w%F1%07%3E%F9%07%0C%D9%83o%7B%92%0D%C6%14a%F8%AC%88%22L%F6%22%B3%9E%9B4M'S%03%B9%F7%BB%DF%F9%EE9'%E7%E4%5E%A0%F9qZ%D3%14%2F%0F%14USO%C5%C2%FC%C4%E4%14%DF%F2%01%5E%1CC%2B%FChM%8B%86%16J%26G%40%0F%D3%B2y%EF%B3%F3%0E%1E%C6lt%EEo%DF%AB%FEc%D5%9A%95%0C%11%F0%1C%20%BE%945%C4%22%E1Y%A0i%5C%D4t%13%E0%D6%89%EF%9D15%C2%CDLsX%A7%04%09%1Fg8oc%81%E1%8C%8D%23%96f45%40%9A%09%C2%07%C5B%3AK%B8%408%98i%E0%F3%0D%D8%CE%81%14%E4'%26%A9%92.%8B%3C%ABER%2F%E5dE%B2%0C%F6%F0%1Fs%83%F2_%B0%A8%94%E9%9B%AD%E7%10%8Dm%9A%19N%D1%7C%8A%DE%1F9%7Dp%8C%E6%00%D5%C1%3F_%18%BDA%B8%9DpX6%E3%A35~B%CD%24%AE%11%26%BD%E7%EEti%98%EDe%9A%97Y)%12%25%1C%24%BCbT%AE3li%E6%0B%03%89%9A%E6%D3%ED%F4P%92%B0%9F4%BF43Y%F3%E3%EDP%95%04%EB1%C5%F5%F6KF%F4%BA%BD%D7%DB%91%93%07%E35%3E%A7)%D6%7F%40%FE%BD%F7%F5r%8A%E5y%92%F0%EB%B4%1E%8D%D5%F4%5B%92%3AV%DB%DB%E4%CD%A6%23%C3%C4wQ%3F%03HB%82%8E%1Cd(%E0%91B%0Ca%9Ac%C4%AA%F8L%16%19%22J%A4%D2itTy%B28%D6%3B(%93%96%ED%1CGx%C9_%0E%B8%5E%16%F5%5B%B2%B8%F6%E0%FB%9E%DD%25%D7%8E%BC%15%85%C5%B7%A3%D8Q%ED%B5%81%E9%BA%B2%13%9A%1B%7Fua%A5%A3n%E17%B9%E5%9B%1Bm%AB%0B%08Q%FE%8A%E5%B1H%5Ee%CAO%82Q%D7u6%E6%90S%97%FCu%0B%CF2%94%EE%25v%12X%0C%BA%AC%F0%5E%F8*l%0AO%85%17%C2%97%BF%D4%C8%CE%DE%AD%11%CB%80q%2C%3E%AB%9ES%CD%C6%EC%25%D2L%D2%EBd%B8%BF%8A%F5B%C6%18%F9%901CZ%9D%BE%24M%9C%8A9%F2%DAP%0B'%06w%82%EB%E6%E2%5C%2F%D7%07%9E%BB%CC%5D%E1%FA%B9%08%AD.r%23%8E%C2%17%F5E%7C!%F0%BE3%BE%3E_%B7o%88a%A7%DB%BE%D3d%EB%A31Z%EB%BB%D3%91%BA%A2%B1z%94%8F%DB'%F6%3D%8E%AA%13%19%B2%B1%BE%B1~V%08%2B%B4%A2cjJ%B3tO%00%03%25mN%97%F3%05%93%EF%11%84%0B%7C%88%AE-%89%8F%ABbW%90O%2B%0Ao%99%0C%5E%97%0CI%AFH%D9.%B0%3B%8F%ED%03%B6S%D6%5D%E6i_s9%F3*p%E9%1B%FD%C3%EB.7U%06%5E%19%C0%D1s.%17%A03u%E4%09%B0%7C%5E%2C%EB%15%DB%1F%3C%9E%B7%80%91%3B%DBc%AD%3Dma%BA%8B%3EV%AB%DBt.%5B%1E%01%BB%0F%AB%D5%9F%CF%AA%D5%DD%E7%E4%7F%0Bx%A3%FC%06%A9%23%0A%D6%C2%A1_2%00%00%00%09pHYs%00%00%0B%13%00%00%0B%13%01%00%9A%9C%18%00%00%00%B5IDAT(%15%A5%91%3D%0E%02!%10%85ac%E1%05%D6%CE%D6%C6%CE%D2%E8%ED%CD%DE%C0%C6%D6N.%E0V%F8%3D%9Ca%891XH%C2%BE%D9y%3F%90!%E6%9C%C3%BFk%E5%011%C6-%F5%C8N%04%DF%BD%FF%89%DFt%83DN%60%3E%F3%AB%A0%DE%1A%5Dg%BE%10Q%97%1B%40%9C%A8o%10%8F%5E%828%B4%1B%60%87%F6%02%26%85%1Ch%1E%C1%2B%5Bk%FF%86%EE%B7j%09%9A%DA%9B%ACe%A3%F9%EC%DA!9%B4%D5%A6%81%86%86%98%CC%3C%5B%40%FA%81%B3%E9%CB%23%94%C16Azo%05%D4%E1%C1%95a%3B%8A'%A0%E8%CC%17%22%85%1D%BA%00%A2%FA%DC%0A%94%D1%D1%8D%8B%3A%84%17B%C7%60%1A%25Z%FC%8D%00%00%00%00IEND%AEB%60%82\"),url(\"data:image/png,%89PNG%0D%0A%1A%0A%00%00%00%0DIHDR%00%00%00%05%00%00%007%08%06%00%00%00%C4%DD%80C%00%00%03%1EiCCPICC%20Profile%00%00x%01%85T%DFk%D3P%14%FE%DAe%9D%B0%E1%8B%3Ag%11%09%3Eh%91ndStC%9C%B6kW%BA%CDZ%EA6%B7!H%9B%A6m%5C%9A%C6%24%ED~%B0%07%D9%8Bo%3A%C5w%F1%07%3E%F9%07%0C%D9%83o%7B%92%0D%C6%14a%F8%AC%88%22L%F6%22%B3%9E%9B4M'S%03%B9%F7%BB%DF%F9%EE9'%E7%E4%5E%A0%F9qZ%D3%14%2F%0F%14USO%C5%C2%FC%C4%E4%14%DF%F2%01%5E%1CC%2B%FChM%8B%86%16J%26G%40%0F%D3%B2y%EF%B3%F3%0E%1E%C6lt%EEo%DF%AB%FEc%D5%9A%95%0C%11%F0%1C%20%BE%945%C4%22%E1Y%A0i%5C%D4t%13%E0%D6%89%EF%9D15%C2%CDLsX%A7%04%09%1Fg8oc%81%E1%8C%8D%23%96f45%40%9A%09%C2%07%C5B%3AK%B8%408%98i%E0%F3%0D%D8%CE%81%14%E4'%26%A9%92.%8B%3C%ABER%2F%E5dE%B2%0C%F6%F0%1Fs%83%F2_%B0%A8%94%E9%9B%AD%E7%10%8Dm%9A%19N%D1%7C%8A%DE%1F9%7Dp%8C%E6%00%D5%C1%3F_%18%BDA%B8%9DpX6%E3%A35~B%CD%24%AE%11%26%BD%E7%EEti%98%EDe%9A%97Y)%12%25%1C%24%BCbT%AE3li%E6%0B%03%89%9A%E6%D3%ED%F4P%92%B0%9F4%BF43Y%F3%E3%EDP%95%04%EB1%C5%F5%F6KF%F4%BA%BD%D7%DB%91%93%07%E35%3E%A7)%D6%7F%40%FE%BD%F7%F5r%8A%E5y%92%F0%EB%B4%1E%8D%D5%F4%5B%92%3AV%DB%DB%E4%CD%A6%23%C3%C4wQ%3F%03HB%82%8E%1Cd(%E0%91B%0Ca%9Ac%C4%AA%F8L%16%19%22J%A4%D2itTy%B28%D6%3B(%93%96%ED%1CGx%C9_%0E%B8%5E%16%F5%5B%B2%B8%F6%E0%FB%9E%DD%25%D7%8E%BC%15%85%C5%B7%A3%D8Q%ED%B5%81%E9%BA%B2%13%9A%1B%7Fua%A5%A3n%E17%B9%E5%9B%1Bm%AB%0B%08Q%FE%8A%E5%B1H%5Ee%CAO%82Q%D7u6%E6%90S%97%FCu%0B%CF2%94%EE%25v%12X%0C%BA%AC%F0%5E%F8*l%0AO%85%17%C2%97%BF%D4%C8%CE%DE%AD%11%CB%80q%2C%3E%AB%9ES%CD%C6%EC%25%D2L%D2%EBd%B8%BF%8A%F5B%C6%18%F9%901CZ%9D%BE%24M%9C%8A9%F2%DAP%0B'%06w%82%EB%E6%E2%5C%2F%D7%07%9E%BB%CC%5D%E1%FA%B9%08%AD.r%23%8E%C2%17%F5E%7C!%F0%BE3%BE%3E_%B7o%88a%A7%DB%BE%D3d%EB%A31Z%EB%BB%D3%91%BA%A2%B1z%94%8F%DB'%F6%3D%8E%AA%13%19%B2%B1%BE%B1~V%08%2B%B4%A2cjJ%B3tO%00%03%25mN%97%F3%05%93%EF%11%84%0B%7C%88%AE-%89%8F%ABbW%90O%2B%0Ao%99%0C%5E%97%0CI%AFH%D9.%B0%3B%8F%ED%03%B6S%D6%5D%E6i_s9%F3*p%E9%1B%FD%C3%EB.7U%06%5E%19%C0%D1s.%17%A03u%E4%09%B0%7C%5E%2C%EB%15%DB%1F%3C%9E%B7%80%91%3B%DBc%AD%3Dma%BA%8B%3EV%AB%DBt.%5B%1E%01%BB%0F%AB%D5%9F%CF%AA%D5%DD%E7%E4%7F%0Bx%A3%FC%06%A9%23%0A%D6%C2%A1_2%00%00%00%09pHYs%00%00%0B%13%00%00%0B%13%01%00%9A%9C%18%00%00%003IDAT8%11c%FC%FF%FF%7F%3E%03%1A%60%01%F2%3F%A3%891%80%04%FFQ%26%F8w%C0%B43%A1%DB%0C%E2%8F%0A%A2%85%CAh%80%8C%06%08%3C%04%E8%96%18%00%A3S%0D%CD%CF%D8%C1%9D%00%00%00%00IEND%AEB%60%82\");background-repeat: no-repeat, repeat-x;background-position: center center, top left;}.ace_editor.ace_dragging .ace_content {cursor: move;}.ace_gutter-tooltip {background-color: #FFFFD5;border: 1px solid gray;box-shadow: 0 1px 1px rgba(0, 0, 0, 0.4);color: black;display: inline-block;padding: 4px;position: absolute;z-index: 300;-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;cursor: default;white-space: pre-line;word-wrap: break-word;}.ace_folding-enabled > .ace_gutter-cell {padding-right: 13px;}.ace_fold-widget {-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;margin: 0 -12px 0 1px;display: inline-block;width: 11px;vertical-align: top;background-image: url(\"data:image/png,%89PNG%0D%0A%1A%0A%00%00%00%0DIHDR%00%00%00%05%00%00%00%05%08%06%00%00%00%8Do%26%E5%00%00%004IDATx%DAe%8A%B1%0D%000%0C%C2%F2%2CK%96%BC%D0%8F9%81%88H%E9%D0%0E%96%C0%10%92%3E%02%80%5E%82%E4%A9*-%EEsw%C8%CC%11%EE%96w%D8%DC%E9*Eh%0C%151(%00%00%00%00IEND%AEB%60%82\");background-repeat: no-repeat;background-position: center;border-radius: 3px;border: 1px solid transparent;}.ace_fold-widget.ace_end {background-image: url(\"data:image/png,%89PNG%0D%0A%1A%0A%00%00%00%0DIHDR%00%00%00%05%00%00%00%05%08%06%00%00%00%8Do%26%E5%00%00%004IDATx%DAm%C7%C1%09%000%08C%D1%8C%ECE%C8E(%8E%EC%02)%1EZJ%F1%C1'%04%07I%E1%E5%EE%CAL%F5%A2%99%99%22%E2%D6%1FU%B5%FE0%D9x%A7%26Wz5%0E%D5%00%00%00%00IEND%AEB%60%82\");}.ace_fold-widget.ace_closed {background-image: url(\"data:image/png,%89PNG%0D%0A%1A%0A%00%00%00%0DIHDR%00%00%00%03%00%00%00%06%08%06%00%00%00%06%E5%24%0C%00%00%009IDATx%DA5%CA%C1%09%000%08%03%C0%AC*(%3E%04%C1%0D%BA%B1%23%A4Uh%E0%20%81%C0%CC%F8%82%81%AA%A2%AArGfr%88%08%11%11%1C%DD%7D%E0%EE%5B%F6%F6%CB%B8%05Q%2F%E9tai%D9%00%00%00%00IEND%AEB%60%82\");}.ace_fold-widget:hover {border: 1px solid rgba(0, 0, 0, 0.3);background-color: rgba(255, 255, 255, 0.2);-moz-box-shadow: 0 1px 1px rgba(255, 255, 255, 0.7);-webkit-box-shadow: 0 1px 1px rgba(255, 255, 255, 0.7);box-shadow: 0 1px 1px rgba(255, 255, 255, 0.7);}.ace_fold-widget:active {border: 1px solid rgba(0, 0, 0, 0.4);background-color: rgba(0, 0, 0, 0.05);-moz-box-shadow: 0 1px 1px rgba(255, 255, 255, 0.8);-webkit-box-shadow: 0 1px 1px rgba(255, 255, 255, 0.8);box-shadow: 0 1px 1px rgba(255, 255, 255, 0.8);}/*** Dark version for fold widgets*/.ace_dark .ace_fold-widget {background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHklEQVQIW2P4//8/AzoGEQ7oGCaLLAhWiSwB146BAQCSTPYocqT0AAAAAElFTkSuQmCC\");}.ace_dark .ace_fold-widget.ace_end {background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAH0lEQVQIW2P4//8/AxQ7wNjIAjDMgC4AxjCVKBirIAAF0kz2rlhxpAAAAABJRU5ErkJggg==\");}.ace_dark .ace_fold-widget.ace_closed {background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAFCAYAAACAcVaiAAAAHElEQVQIW2P4//+/AxAzgDADlOOAznHAKgPWAwARji8UIDTfQQAAAABJRU5ErkJggg==\");}.ace_dark .ace_fold-widget:hover {box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);background-color: rgba(255, 255, 255, 0.1);}.ace_dark .ace_fold-widget:active {-moz-box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);-webkit-box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);}.ace_fold-widget.ace_invalid {background-color: #FFB4B4;border-color: #DE5555;}.ace_fade-fold-widgets .ace_fold-widget {-moz-transition: opacity 0.4s ease 0.05s;-webkit-transition: opacity 0.4s ease 0.05s;-o-transition: opacity 0.4s ease 0.05s;-ms-transition: opacity 0.4s ease 0.05s;transition: opacity 0.4s ease 0.05s;opacity: 0;}.ace_fade-fold-widgets:hover .ace_fold-widget {-moz-transition: opacity 0.05s ease 0.05s;-webkit-transition: opacity 0.05s ease 0.05s;-o-transition: opacity 0.05s ease 0.05s;-ms-transition: opacity 0.05s ease 0.05s;transition: opacity 0.05s ease 0.05s;opacity:1;}.ace_underline {text-decoration: underline;}.ace_bold {font-weight: bold;}.ace_nobold .ace_bold {font-weight: normal;}.ace_italic {font-style: italic;}";i.importCssString(m,"ace_editor");var g=function(e,t){var n=this;this.container=e,this.$keepTextAreaAtCursor=!o.isIE,i.addCssClass(e,"ace_editor"),this.setTheme(t),this.$gutter=i.createElement("div"),this.$gutter.className="ace_gutter",this.container.appendChild(this.$gutter),this.scroller=i.createElement("div"),this.scroller.className="ace_scroller",this.container.appendChild(this.scroller),this.content=i.createElement("div"),this.content.className="ace_content",this.scroller.appendChild(this.content),this.setHighlightGutterLine(!0),this.$gutterLayer=new f(this.$gutter),this.$gutterLayer.on("changeGutterWidth",this.onGutterResize.bind(this)),this.$markerBack=new l(this.content);var r=this.$textLayer=new c(this.content);this.canvas=r.element,this.$markerFront=new l(this.content),this.$cursorLayer=new h(this.content),this.$horizScroll=!1,this.$horizScrollAlwaysVisible=!1,this.$animatedScroll=!1,this.scrollBar=new p(e),this.scrollBar.addEventListener("scroll",function(e){n.$inScrollAnimation||n.session.setScrollTop(e.data)}),this.scrollTop=0,this.scrollLeft=0,s.addListener(this.scroller,"scroll",function(){var e=n.scroller.scrollLeft;n.scrollLeft=e,n.session.setScrollLeft(e)}),this.cursorPos={row:0,column:0},this.$textLayer.addEventListener("changeCharacterSize",function(){n.updateCharacterSize(),n.onResize(!0)}),this.$size={width:0,height:0,scrollerHeight:0,scrollerWidth:0},this.layerConfig={width:1,padding:0,firstRow:0,firstRowScreen:0,lastRow:0,lineHeight:1,characterWidth:1,minHeight:1,maxHeight:1,offset:0,height:1},this.$loop=new d(this.$renderChanges.bind(this),this.container.ownerDocument.defaultView),this.$loop.schedule(this.CHANGE_FULL),this.updateCharacterSize(),this.setPadding(4)};(function(){this.showGutter=!0,this.CHANGE_CURSOR=1,this.CHANGE_MARKER=2,this.CHANGE_GUTTER=4,this.CHANGE_SCROLL=8,this.CHANGE_LINES=16,this.CHANGE_TEXT=32,this.CHANGE_SIZE=64,this.CHANGE_MARKER_BACK=128,this.CHANGE_MARKER_FRONT=256,this.CHANGE_FULL=512,this.CHANGE_H_SCROLL=1024,r.implement(this,v),this.updateCharacterSize=function(){this.$textLayer.allowBoldFonts!=this.$allowBoldFonts&&(this.$allowBoldFonts=this.$textLayer.allowBoldFonts,this.setStyle("ace_nobold",!this.$allowBoldFonts)),this.characterWidth=this.$textLayer.getCharacterWidth(),this.lineHeight=this.$textLayer.getLineHeight(),this.$updatePrintMargin()},this.setSession=function(e){this.session=e,this.scroller.className="ace_scroller",this.$cursorLayer.setSession(e),this.$markerBack.setSession(e),this.$markerFront.setSession(e),this.$gutterLayer.setSession(e),this.$textLayer.setSession(e),this.$loop.schedule(this.CHANGE_FULL)},this.updateLines=function(e,t){t===undefined&&(t=Infinity),this.$changedLines?(this.$changedLines.firstRow>e&&(this.$changedLines.firstRow=e),this.$changedLines.lastRowthis.layerConfig.lastRow||this.$changedLines.lastRow2)return;this.resizing>1?this.resizing++:this.resizing=e?1:0,r||(r=i.getInnerHeight(this.container));if(e||o.height!=r)o.height=r,this.scroller.style.height=r+"px",o.scrollerHeight=this.scroller.clientHeight,this.scrollBar.setHeight(o.scrollerHeight),this.session&&(this.session.setScrollTop(this.getScrollTop()),s|=this.CHANGE_FULL);n||(n=i.getInnerWidth(this.container));if(e||this.resizing>1||o.width!=n){o.width=n;var t=this.showGutter?this.$gutter.offsetWidth:0;this.scroller.style.left=t+"px",o.scrollerWidth=Math.max(0,n-t-this.scrollBar.getWidth()),this.scroller.style.right=this.scrollBar.getWidth()+"px";if(this.session.getUseWrapMode()&&this.adjustWrapLimit()||e)s|=this.CHANGE_FULL}e?this.$renderChanges(s,!0):this.$loop.schedule(s),e&&delete this.resizing},this.onGutterResize=function(){var e=this.$size.width,t=this.showGutter?this.$gutter.offsetWidth:0;this.scroller.style.left=t+"px",this.$size.scrollerWidth=Math.max(0,e-t-this.scrollBar.getWidth()),this.session.getUseWrapMode()&&this.adjustWrapLimit()&&this.$loop.schedule(this.CHANGE_FULL)},this.adjustWrapLimit=function(){var e=this.$size.scrollerWidth-this.$padding*2,t=Math.floor(e/this.characterWidth);return this.session.adjustWrapLimit(t)},this.setAnimatedScroll=function(e){this.$animatedScroll=e},this.getAnimatedScroll=function(){return this.$animatedScroll},this.setShowInvisibles=function(e){this.$textLayer.setShowInvisibles(e)&&this.$loop.schedule(this.CHANGE_TEXT)},this.getShowInvisibles=function(){return this.$textLayer.showInvisibles},this.getDisplayIndentGuides=function(){return this.$textLayer.displayIndentGuides},this.setDisplayIndentGuides=function(e){this.$textLayer.setDisplayIndentGuides(e)&&this.$loop.schedule(this.CHANGE_TEXT)},this.$showPrintMargin=!0,this.setShowPrintMargin=function(e){this.$showPrintMargin=e,this.$updatePrintMargin()},this.getShowPrintMargin=function(){return this.$showPrintMargin},this.$printMarginColumn=80,this.setPrintMarginColumn=function(e){this.$printMarginColumn=e,this.$updatePrintMargin()},this.getPrintMarginColumn=function(){return this.$printMarginColumn},this.getShowGutter=function(){return this.showGutter},this.setShowGutter=function(e){if(this.showGutter===e)return;this.$gutter.style.display=e?"block":"none",this.showGutter=e,this.onResize(!0)},this.getFadeFoldWidgets=function(){return i.hasCssClass(this.$gutter,"ace_fade-fold-widgets")},this.setFadeFoldWidgets=function(e){e?i.addCssClass(this.$gutter,"ace_fade-fold-widgets"):i.removeCssClass(this.$gutter,"ace_fade-fold-widgets")},this.$highlightGutterLine=!1,this.setHighlightGutterLine=function(e){if(this.$highlightGutterLine==e)return;this.$highlightGutterLine=e;if(!this.$gutterLineHighlight){this.$gutterLineHighlight=i.createElement("div"),this.$gutterLineHighlight.className="ace_gutter-active-line",this.$gutter.appendChild(this.$gutterLineHighlight);return}this.$gutterLineHighlight.style.display=e?"":"none",this.$cursorLayer.$pixelPos&&this.$updateGutterLineHighlight()},this.getHighlightGutterLine=function(){return this.$highlightGutterLine},this.$updateGutterLineHighlight=function(){this.$gutterLineHighlight.style.top=this.$cursorLayer.$pixelPos.top-this.layerConfig.offset+"px",this.$gutterLineHighlight.style.height=this.layerConfig.lineHeight+"px"},this.$updatePrintMargin=function(){if(!this.$showPrintMargin&&!this.$printMarginEl)return;if(!this.$printMarginEl){var e=i.createElement("div");e.className="ace_layer ace_print-margin-layer",this.$printMarginEl=i.createElement("div"),this.$printMarginEl.className="ace_print-margin",e.appendChild(this.$printMarginEl),this.content.insertBefore(e,this.content.firstChild)}var t=this.$printMarginEl.style;t.left=this.characterWidth*this.$printMarginColumn+this.$padding+"px",t.visibility=this.$showPrintMargin?"visible":"hidden"},this.getContainerElement=function(){return this.container},this.getMouseEventTarget=function(){return this.content},this.getTextAreaContainer=function(){return this.container},this.$moveTextAreaToCursor=function(){if(!this.$keepTextAreaAtCursor)return;var e=this.$cursorLayer.$pixelPos.top,t=this.$cursorLayer.$pixelPos.left;e-=this.layerConfig.offset;if(e<0||e>this.layerConfig.height-this.lineHeight)return;var n=this.characterWidth;this.$composition&&(n+=this.textarea.scrollWidth),t-=this.scrollLeft,t>this.$size.scrollerWidth-n&&(t=this.$size.scrollerWidth-n),this.showGutter&&(t+=this.$gutterLayer.gutterWidth),this.textarea.style.height=this.lineHeight+"px",this.textarea.style.width=n+"px",this.textarea.style.left=t+"px",this.textarea.style.top=e-1+"px"},this.getFirstVisibleRow=function(){return this.layerConfig.firstRow},this.getFirstFullyVisibleRow=function(){return this.layerConfig.firstRow+(this.layerConfig.offset===0?0:1)},this.getLastFullyVisibleRow=function(){var e=Math.floor((this.layerConfig.height+this.layerConfig.offset)/this.layerConfig.lineHeight);return this.layerConfig.firstRow-1+e},this.getLastVisibleRow=function(){return this.layerConfig.lastRow},this.$padding=null,this.setPadding=function(e){this.$padding=e,this.$textLayer.setPadding(e),this.$cursorLayer.setPadding(e),this.$markerFront.setPadding(e),this.$markerBack.setPadding(e),this.$loop.schedule(this.CHANGE_FULL),this.$updatePrintMargin()},this.getHScrollBarAlwaysVisible=function(){return this.$horizScrollAlwaysVisible},this.setHScrollBarAlwaysVisible=function(e){this.$horizScrollAlwaysVisible!=e&&(this.$horizScrollAlwaysVisible=e,(!this.$horizScrollAlwaysVisible||!this.$horizScroll)&&this.$loop.schedule(this.CHANGE_SCROLL))},this.$updateScrollBar=function(){this.scrollBar.setInnerHeight(this.layerConfig.maxHeight),this.scrollBar.setScrollTop(this.scrollTop)},this.$renderChanges=function(e,t){if(!t&&(!e||!this.session||!this.container.offsetWidth))return;(e&this.CHANGE_FULL||e&this.CHANGE_SIZE||e&this.CHANGE_TEXT||e&this.CHANGE_LINES||e&this.CHANGE_SCROLL)&&this.$computeLayerConfig();if(e&this.CHANGE_H_SCROLL){this.scroller.scrollLeft=this.scrollLeft;var n=this.scroller.scrollLeft;this.scrollLeft=n,this.session.setScrollLeft(n),this.scroller.className=this.scrollLeft==0?"ace_scroller":"ace_scroller ace_scroll-left"}if(e&this.CHANGE_FULL){this.$textLayer.checkForSizeChanges(),this.$updateScrollBar(),this.$textLayer.update(this.layerConfig),this.showGutter&&this.$gutterLayer.update(this.layerConfig),this.$markerBack.update(this.layerConfig),this.$markerFront.update(this.layerConfig),this.$cursorLayer.update(this.layerConfig),this.$moveTextAreaToCursor(),this.$highlightGutterLine&&this.$updateGutterLineHighlight();return}if(e&this.CHANGE_SCROLL){this.$updateScrollBar(),e&this.CHANGE_TEXT||e&this.CHANGE_LINES?this.$textLayer.update(this.layerConfig):this.$textLayer.scrollLines(this.layerConfig),this.showGutter&&this.$gutterLayer.update(this.layerConfig),this.$markerBack.update(this.layerConfig),this.$markerFront.update(this.layerConfig),this.$cursorLayer.update(this.layerConfig),this.$moveTextAreaToCursor(),this.$highlightGutterLine&&this.$updateGutterLineHighlight();return}e&this.CHANGE_TEXT?(this.$textLayer.update(this.layerConfig),this.showGutter&&this.$gutterLayer.update(this.layerConfig)):e&this.CHANGE_LINES?(this.$updateLines()||e&this.CHANGE_GUTTER&&this.showGutter)&&this.$gutterLayer.update(this.layerConfig):(e&this.CHANGE_TEXT||e&this.CHANGE_GUTTER)&&this.showGutter&&this.$gutterLayer.update(this.layerConfig),e&this.CHANGE_CURSOR&&(this.$cursorLayer.update(this.layerConfig),this.$moveTextAreaToCursor(),this.$highlightGutterLine&&this.$updateGutterLineHighlight()),e&(this.CHANGE_MARKER|this.CHANGE_MARKER_FRONT)&&this.$markerFront.update(this.layerConfig),e&(this.CHANGE_MARKER|this.CHANGE_MARKER_BACK)&&this.$markerBack.update(this.layerConfig),e&this.CHANGE_SIZE&&this.$updateScrollBar()},this.$computeLayerConfig=function(){var e=this.session,t=this.scrollTop%this.lineHeight,n=this.$size.scrollerHeight+this.lineHeight,r=this.$getLongestLine(),i=this.$horizScrollAlwaysVisible||this.$size.scrollerWidth-r<0,s=this.$horizScroll!==i;this.$horizScroll=i,s&&(this.scroller.style.overflowX=i?"scroll":"hidden",i||this.session.setScrollLeft(0));var o=this.session.getScreenLength()*this.lineHeight;this.session.setScrollTop(Math.max(0,Math.min(this.scrollTop,o-this.$size.scrollerHeight)));var u=Math.ceil(n/this.lineHeight)-1,a=Math.max(0,Math.round((this.scrollTop-t)/this.lineHeight)),f=a+u,l,c,h=this.lineHeight;a=e.screenToDocumentRow(a,0);var p=e.getFoldLine(a);p&&(a=p.start.row),l=e.documentToScreenRow(a,0),c=e.getRowLength(a)*h,f=Math.min(e.screenToDocumentRow(f,0),e.getLength()-1),n=this.$size.scrollerHeight+e.getRowLength(f)*h+c,t=this.scrollTop-l*h,this.layerConfig={width:r,padding:this.$padding,firstRow:a,firstRowScreen:l,lastRow:f,lineHeight:h,characterWidth:this.characterWidth,minHeight:n,maxHeight:o,offset:t,height:this.$size.scrollerHeight},this.$gutterLayer.element.style.marginTop=-t+"px",this.content.style.marginTop=-t+"px",this.content.style.width=r+2*this.$padding+"px",this.content.style.height=n+"px",s&&this.onResize(!0)},this.$updateLines=function(){var e=this.$changedLines.firstRow,t=this.$changedLines.lastRow;this.$changedLines=null;var n=this.layerConfig;if(e>n.lastRow+1)return;if(ti?(t&&(i-=t*this.$size.scrollerHeight),this.session.setScrollTop(i)):this.scrollTop+this.$size.scrollerHeightr?(r0)return!0;if(t>0&&this.session.getScrollTop()+this.$size.scrollerHeight0?1:-1}},this.screenToTextCoordinates=function(e,t){var n=this.scroller.getBoundingClientRect(),r=Math.round((e+this.scrollLeft-n.left-this.$padding)/this.characterWidth),i=Math.floor((t+this.scrollTop-n.top)/this.lineHeight);return this.session.screenToDocumentPosition(i,Math.max(r,0))},this.textToScreenCoordinates=function(e,t){var n=this.scroller.getBoundingClientRect(),r=this.session.documentToScreenPosition(e,t),i=this.$padding+Math.round(r.column*this.characterWidth),s=r.row*this.lineHeight;return{pageX:n.left+i-this.scrollLeft,pageY:n.top+s-this.scrollTop}},this.visualizeFocus=function(){i.addCssClass(this.container,"ace_focus")},this.visualizeBlur=function(){i.removeCssClass(this.container,"ace_focus")},this.showComposition=function(e){this.$composition||(this.$composition={keepTextAreaAtCursor:this.$keepTextAreaAtCursor,cssText:this.textarea.style.cssText}),this.$keepTextAreaAtCursor=!0,i.addCssClass(this.textarea,"ace_composition"),this.textarea.style.cssText="",this.$moveTextAreaToCursor()},this.setCompositionText=function(e){this.$moveTextAreaToCursor()},this.hideComposition=function(){if(!this.$composition)return;i.removeCssClass(this.textarea,"ace_composition"),this.$keepTextAreaAtCursor=this.$composition.keepTextAreaAtCursor,this.textarea.style.cssText=this.$composition.cssText,this.$composition=null},this._loadTheme=function(e,t){if(!u.get("packaged"))return t();a.loadScript(u.moduleUrl(e,"theme"),t)},this.setTheme=function(t){function u(e){i.importCssString(e.cssText,e.cssClass,n.container.ownerDocument),n.theme&&i.removeCssClass(n.container,n.theme.cssClass),n.$theme=e.cssClass,n.theme=e,i.addCssClass(n.container,e.cssClass),i.setCssClass(n.container,"ace_dark",e.isDark);var t=e.padding||4;n.$padding&&t!=n.$padding&&n.setPadding(t),n.$size&&(n.$size.width=0,n.onResize()),n._dispatchEvent("themeLoaded",{theme:e})}var n=this;this.$themeValue=t,n._dispatchEvent("themeChange",{theme:t});if(!t||typeof t=="string"){var r=t||"ace/theme/textmate",s;try{s=e(r)}catch(o){}if(s)return u(s);n._loadTheme(r,function(){e([r],function(e){if(n.$themeValue!==t)return;u(e)})})}else u(t)},this.getTheme=function(){return this.$themeValue},this.setStyle=function(t,n){i.setCssClass(this.container,t,n!=0)},this.unsetStyle=function(t){i.removeCssClass(this.container,t)},this.destroy=function(){this.$textLayer.destroy(),this.$cursorLayer.destroy()}}).call(g.prototype),t.VirtualRenderer=g}),ace.define("ace/layer/gutter",["require","exports","module","ace/lib/dom","ace/lib/oop","ace/lib/lang","ace/lib/event_emitter"],function(e,t,n){var r=e("../lib/dom"),i=e("../lib/oop"),s=e("../lib/lang"),o=e("../lib/event_emitter").EventEmitter,u=function(e){this.element=r.createElement("div"),this.element.className="ace_layer ace_gutter-layer",e.appendChild(this.element),this.setShowFoldWidgets(this.$showFoldWidgets),this.gutterWidth=0,this.$annotations=[],this.$updateAnnotations=this.$updateAnnotations.bind(this)};(function(){i.implement(this,o),this.setSession=function(e){this.session&&this.session.removeEventListener("change",this.$updateAnnotations),this.session=e,e.on("change",this.$updateAnnotations)},this.addGutterDecoration=function(e,t){window.console&&console.warn&&console.warn("deprecated use session.addGutterDecoration"),this.session.addGutterDecoration(e,t)},this.removeGutterDecoration=function(e,t){window.console&&console.warn&&console.warn("deprecated use session.removeGutterDecoration"),this.session.removeGutterDecoration(e,t)},this.setAnnotations=function(e){this.$annotations=[];var t,n;for(var r=0;ru&&(i=o.end.row+1,o=this.session.getNextFoldLine(i,o),u=o?o.start.row:Infinity);if(i>s)break;var h=this.$annotations[i]||t;n.push("
    ",c=i+1);if(a){var p=a[i];p==null&&(p=a[i]=this.session.getFoldWidget(i)),p&&n.push("")}n.push("
    "),i++}this.element=r.setInnerHtml(this.element,n.join("")),this.element.style.height=e.minHeight+"px",this.session.$useWrapMode&&(c=this.session.getLength());var d=(""+c).length*e.characterWidth,v=this.$padding||this.$computePadding();d+=v.left+v.right,d!==this.gutterWidth&&(this.gutterWidth=d,this.element.style.width=Math.ceil(this.gutterWidth)+"px",this._emit("changeGutterWidth",d))},this.$showFoldWidgets=!0,this.setShowFoldWidgets=function(e){e?r.addCssClass(this.element,"ace_folding-enabled"):r.removeCssClass(this.element,"ace_folding-enabled"),this.$showFoldWidgets=e,this.$padding=null},this.getShowFoldWidgets=function(){return this.$showFoldWidgets},this.$computePadding=function(){if(!this.element.firstChild)return{left:0,right:0};var e=r.computedStyle(this.element.firstChild);return this.$padding={},this.$padding.left=parseInt(e.paddingLeft)+1,this.$padding.right=parseInt(e.paddingRight),this.$padding},this.getRegion=function(e){var t=this.$padding||this.$computePadding(),n=this.element.getBoundingClientRect();if(e.xn.right-t.right)return"foldWidgets"}}).call(u.prototype),t.Gutter=u}),ace.define("ace/layer/marker",["require","exports","module","ace/range","ace/lib/dom"],function(e,t,n){var r=e("../range").Range,i=e("../lib/dom"),s=function(e){this.element=i.createElement("div"),this.element.className="ace_layer ace_marker-layer",e.appendChild(this.element)};(function(){this.$padding=0,this.setPadding=function(e){this.$padding=e},this.setSession=function(e){this.session=e},this.setMarkers=function(e){this.markers=e},this.update=function(e){var e=e||this.config;if(!e)return;this.config=e;var t=[];for(var n in this.markers){var r=this.markers[n];if(!r.range){r.update(t,this,this.session,e);continue}var s=r.range.clipRows(e.firstRow,e.lastRow);if(s.isEmpty())continue;s=s.toScreenRange(this.session);if(r.renderer){var o=this.$getTop(s.start.row,e),u=this.$padding+s.start.column*e.characterWidth;r.renderer(t,s,u,o,e)}else r.type=="fullLine"?this.drawFullLineMarker(t,s,r.clazz,e):s.isMultiLine()?r.type=="text"?this.drawTextMarker(t,s,r.clazz,e):this.drawMultiLineMarker(t,s,r.clazz,e):this.drawSingleLineMarker(t,s,r.clazz+" ace_start",e)}this.element=i.setInnerHtml(this.element,t.join(""))},this.$getTop=function(e,t){return(e-t.firstRowScreen)*t.lineHeight},this.drawTextMarker=function(e,t,n,i){var s=t.start.row,o=new r(s,t.start.column,s,this.session.getScreenLastRowColumn(s));this.drawSingleLineMarker(e,o,n+" ace_start",i,1,"text"),s=t.end.row,o=new r(s,0,s,t.end.column),this.drawSingleLineMarker(e,o,n,i,0,"text");for(s=t.start.row+1;s
    "),u=this.$getTop(t.end.row,r);var f=t.end.column*r.characterWidth;e.push("
    "),o=(t.end.row-t.start.row-1)*r.lineHeight;if(o<0)return;u=this.$getTop(t.start.row+1,r),e.push("
    ")},this.drawSingleLineMarker=function(e,t,n,r,i){var s=r.lineHeight,o=(t.end.column+(i||0)-t.start.column)*r.characterWidth,u=this.$getTop(t.start.row,r),a=this.$padding+t.start.column*r.characterWidth;e.push("
    ")},this.drawFullLineMarker=function(e,t,n,r){var i=this.$getTop(t.start.row,r),s=r.lineHeight;t.start.row!=t.end.row&&(s+=this.$getTop(t.end.row,r)-i),e.push("
    ")}}).call(s.prototype),t.Marker=s}),ace.define("ace/layer/text",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/lang","ace/lib/useragent","ace/lib/event_emitter"],function(e,t,n){var r=e("../lib/oop"),i=e("../lib/dom"),s=e("../lib/lang"),o=e("../lib/useragent"),u=e("../lib/event_emitter").EventEmitter,a=function(e){this.element=i.createElement("div"),this.element.className="ace_layer ace_text-layer",e.appendChild(this.element),this.$characterSize={width:0,height:0},this.checkForSizeChanges(),this.$pollSizeChanges()};(function(){r.implement(this,u),this.EOF_CHAR="¶",this.EOL_CHAR="¬",this.TAB_CHAR="→",this.SPACE_CHAR="·",this.$padding=0,this.setPadding=function(e){this.$padding=e,this.element.style.padding="0 "+e+"px"},this.getLineHeight=function(){return this.$characterSize.height||1},this.getCharacterWidth=function(){return this.$characterSize.width||1},this.checkForSizeChanges=function(){var e=this.$measureSizes();if(e&&(this.$characterSize.width!==e.width||this.$characterSize.height!==e.height)){this.$measureNode.style.fontWeight="bold";var t=this.$measureSizes();this.$measureNode.style.fontWeight="",this.$characterSize=e,this.allowBoldFonts=t&&t.width===e.width&&t.height===e.height,this._emit("changeCharacterSize",{data:e})}},this.$pollSizeChanges=function(){var e=this;this.$pollSizeChangesTimer=setInterval(function(){e.checkForSizeChanges()},500)},this.$fontStyles={fontFamily:1,fontSize:1,fontWeight:1,fontStyle:1,lineHeight:1},this.$measureSizes=o.isIE||o.isOldGecko?function(){var e=1e3;if(!this.$measureNode){var t=this.$measureNode=i.createElement("div"),n=t.style;n.width=n.height="auto",n.left=n.top=-e*40+"px",n.visibility="hidden",n.position="fixed",n.overflow="visible",n.whiteSpace="nowrap",t.innerHTML=s.stringRepeat("Xy",e);if(this.element.ownerDocument.body)this.element.ownerDocument.body.appendChild(t);else{var r=this.element.parentNode;while(!i.hasCssClass(r,"ace_editor"))r=r.parentNode;r.appendChild(t)}}if(!this.element.offsetWidth)return null;var n=this.$measureNode.style,o=i.computedStyle(this.element);for(var u in this.$fontStyles)n[u]=o[u];var a={height:this.$measureNode.offsetHeight,width:this.$measureNode.offsetWidth/(e*2)};return a.width==0||a.height==0?null:a}:function(){if(!this.$measureNode){var e=this.$measureNode=i.createElement("div"),t=e.style;t.width=t.height="auto",t.left=t.top="-100px",t.visibility="hidden",t.position="fixed",t.overflow="visible",t.whiteSpace="nowrap",e.innerHTML="X";var n=this.element.parentNode;while(n&&!i.hasCssClass(n,"ace_editor"))n=n.parentNode;if(!n)return this.$measureNode=null;n.appendChild(e)}var r=this.$measureNode.getBoundingClientRect(),s={height:r.height,width:r.width};return s.width==0||s.height==0?null:s},this.setSession=function(e){this.session=e,this.$computeTabString()},this.showInvisibles=!1,this.setShowInvisibles=function(e){return this.showInvisibles==e?!1:(this.showInvisibles=e,this.$computeTabString(),!0)},this.displayIndentGuides=!0,this.setDisplayIndentGuides=function(e){return this.displayIndentGuides==e?!1:(this.displayIndentGuides=e,this.$computeTabString(),!0)},this.$tabStrings=[],this.onChangeTabSize=this.$computeTabString=function(){var e=this.session.getTabSize();this.tabSize=e;var t=this.$tabStrings=[0];for(var n=1;n"+this.TAB_CHAR+Array(n).join(" ")+""):t.push((new Array(n+1)).join(" "));if(this.displayIndentGuides){this.$indentGuideRe=/\s\S| \t|\t |\s$/;var r="ace_indent-guide",i=Array(this.tabSize+1).join(" "),s=i;this.showInvisibles&&(r+=" ace_invisible",s=this.TAB_CHAR+i.substr(6)),this.$tabStrings[" "]=""+i+"",this.$tabStrings[" "]=""+s+""}},this.updateLines=function(e,t,n){(this.config.lastRow!=e.lastRow||this.config.firstRow!=e.firstRow)&&this.scrollLines(e),this.config=e;var r=Math.max(t,e.firstRow),s=Math.min(n,e.lastRow),o=this.element.childNodes,u=0;for(var a=e.firstRow;al&&(a=f.end.row+1,f=this.session.getNextFoldLine(a,f),l=f?f.start.row:Infinity);if(a>s)break;var c=o[u++];if(c){var h=[];this.$renderLine(h,a,!this.$useLineGroups(),a==l?f:!1),i.setInnerHtml(c,h.join(""))}a++}},this.scrollLines=function(e){var t=this.config;this.config=e;if(!t||t.lastRow0;r--)n.removeChild(n.firstChild);if(t.lastRow>e.lastRow)for(var r=this.session.getFoldedRowCount(e.lastRow+1,t.lastRow);r>0;r--)n.removeChild(n.lastChild);if(e.firstRowt.lastRow){var i=this.$renderLinesFragment(e,t.lastRow+1,e.lastRow);n.appendChild(i)}},this.$renderLinesFragment=function(e,t,n){var r=this.element.ownerDocument.createDocumentFragment(),s=t,o=this.session.getNextFoldLine(s),u=o?o.start.row:Infinity;for(;;){s>u&&(s=o.end.row+1,o=this.session.getNextFoldLine(s,o),u=o?o.start.row:Infinity);if(s>n)break;var a=i.createElement("div"),f=[];this.$renderLine(f,s,!1,s==u?o:!1),a.innerHTML=f.join("");if(this.$useLineGroups())a.className="ace_line_group",r.appendChild(a);else{var l=a.childNodes;while(l.length)r.appendChild(l[0])}s++}return r},this.update=function(e){this.config=e;var t=[],n=e.firstRow,r=e.lastRow,s=n,o=this.session.getNextFoldLine(s),u=o?o.start.row:Infinity;for(;;){s>u&&(s=o.end.row+1,o=this.session.getNextFoldLine(s,o),u=o?o.start.row:Infinity);if(s>r)break;this.$useLineGroups()&&t.push("
    "),this.$renderLine(t,s,!1,s==u?o:!1),this.$useLineGroups()&&t.push("
    "),s++}this.element=i.setInnerHtml(this.element,t.join(""))},this.$textToken={text:!0,rparen:!0,lparen:!0},this.$renderToken=function(e,t,n,r){var i=this,s=/\t|&|<|( +)|([\x00-\x1f\x80-\xa0\u1680\u180E\u2000-\u200f\u2028\u2029\u202F\u205F\u3000\uFEFF])|[\u1100-\u115F\u11A3-\u11A7\u11FA-\u11FF\u2329-\u232A\u2E80-\u2E99\u2E9B-\u2EF3\u2F00-\u2FD5\u2FF0-\u2FFB\u3000-\u303E\u3041-\u3096\u3099-\u30FF\u3105-\u312D\u3131-\u318E\u3190-\u31BA\u31C0-\u31E3\u31F0-\u321E\u3220-\u3247\u3250-\u32FE\u3300-\u4DBF\u4E00-\uA48C\uA490-\uA4C6\uA960-\uA97C\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFAFF\uFE10-\uFE19\uFE30-\uFE52\uFE54-\uFE66\uFE68-\uFE6B\uFF01-\uFF60\uFFE0-\uFFE6]/g,o=function(e,n,r,s,o){if(n)return(new Array(e.length+1)).join(" ");if(e=="&")return"&";if(e=="<")return"<";if(e==" "){var u=i.session.getScreenTabSize(t+s);return t+=u-1,i.$tabStrings[u]}if(e==" "){var a=i.showInvisibles?"ace_cjk ace_invisible":"ace_cjk",f=i.showInvisibles?i.SPACE_CHAR:"";return t+=1,""+f+""}return r?""+i.SPACE_CHAR+"":(t+=1,""+e+"")},u=r.replace(s,o);if(!this.$textToken[n.type]){var a="ace_"+n.type.replace(/\./g," ace_"),f="";n.type=="fold"&&(f=" style='width:"+n.value.length*this.config.characterWidth+"px;' "),e.push("",u,"")}else e.push(u);return t+r.length},this.renderIndentGuide=function(e,t){var n=t.search(this.$indentGuideRe);return n<=0?t:t[0]==" "?(n-=n%this.tabSize,e.push(Array(n/this.tabSize+1).join(this.$tabStrings[" "])),t.substr(n)):t[0]==" "?(e.push(Array(n+1).join(this.$tabStrings[" "])),t.substr(n)):t},this.$renderWrappedLine=function(e,t,n,r){var i=0,s=0,o=n[0],u=0;for(var a=0;a=o)u=this.$renderToken(e,u,f,l.substring(0,o-i)),l=l.substring(o-i),i=o,r||e.push("
    ","
    "),s++,u=0,o=n[s]||Number.MAX_VALUE;l.length!=0&&(i+=l.length,u=this.$renderToken(e,u,f,l))}}},this.$renderSimpleLine=function(e,t){var n=0,r=t[0],i=r.value;this.displayIndentGuides&&(i=this.renderIndentGuide(e,i)),i&&(n=this.$renderToken(e,n,r,i));for(var s=1;s");if(i.length){var s=this.session.getRowSplitData(t);s&&s.length?this.$renderWrappedLine(e,i,s,n):this.$renderSimpleLine(e,i)}this.showInvisibles&&(r&&(t=r.end.row),e.push("",t==this.session.getLength()-1?this.EOF_CHAR:this.EOL_CHAR,"")),n||e.push("
    ")},this.$getFoldLineTokens=function(e,t){function i(e,t,n){var i=0,s=0;while(s+e[i].value.lengthn-t&&(o=o.substring(0,n-t)),r.push({type:e[i].type,value:o}),s=t+o.length,i+=1}while(sn?r.push({type:e[i].type,value:o.substring(0,n-s)}):r.push(e[i]),s+=o.length,i+=1}}var n=this.session,r=[],s=n.getTokens(e);return t.walk(function(e,t,o,u,a){e!=null?r.push({type:"fold",value:e}):(a&&(s=n.getTokens(t)),s.length&&i(s,u,o))},t.end.row,this.session.getLine(t.end.row).length),r},this.$useLineGroups=function(){return this.session.getUseWrapMode()},this.destroy=function(){clearInterval(this.$pollSizeChangesTimer),this.$measureNode&&this.$measureNode.parentNode.removeChild(this.$measureNode),delete this.$measureNode}}).call(a.prototype),t.Text=a}),ace.define("ace/layer/cursor",["require","exports","module","ace/lib/dom"],function(e,t,n){var r=e("../lib/dom"),i=function(e){this.element=r.createElement("div"),this.element.className="ace_layer ace_cursor-layer",e.appendChild(this.element),this.isVisible=!1,this.isBlinking=!0,this.blinkInterval=1e3,this.smoothBlinking=!1,this.cursors=[],this.cursor=this.addCursor(),r.addCssClass(this.element,"ace_hidden-cursors")};(function(){this.$padding=0,this.setPadding=function(e){this.$padding=e},this.setSession=function(e){this.session=e},this.setBlinking=function(e){e!=this.isBlinking&&(this.isBlinking=e,this.restartTimer())},this.setBlinkInterval=function(e){e!=this.blinkInterval&&(this.blinkInterval=e,this.restartTimer())},this.setSmoothBlinking=function(e){e!=this.smoothBlinking&&(this.smoothBlinking=e,e?r.addCssClass(this.element,"ace_smooth-blinking"):r.removeCssClass(this.element,"ace_smooth-blinking"),this.restartTimer())},this.addCursor=function(){var e=r.createElement("div");return e.className="ace_cursor",this.element.appendChild(e),this.cursors.push(e),e},this.removeCursor=function(){if(this.cursors.length>1){var e=this.cursors.pop();return e.parentNode.removeChild(e),e}},this.hideCursor=function(){this.isVisible=!1,r.addCssClass(this.element,"ace_hidden-cursors"),this.restartTimer()},this.showCursor=function(){this.isVisible=!0,r.removeCssClass(this.element,"ace_hidden-cursors"),this.restartTimer()},this.restartTimer=function(){clearInterval(this.intervalId),clearTimeout(this.timeoutId),this.smoothBlinking&&r.removeCssClass(this.element,"ace_smooth-blinking");for(var e=this.cursors.length;e--;)this.cursors[e].style.opacity="";if(!this.isBlinking||!this.blinkInterval||!this.isVisible)return;this.smoothBlinking&&setTimeout(function(){r.addCssClass(this.element,"ace_smooth-blinking")}.bind(this));var t=function(){this.timeoutId=setTimeout(function(){for(var e=this.cursors.length;e--;)this.cursors[e].style.opacity=0}.bind(this),.6*this.blinkInterval)}.bind(this);this.intervalId=setInterval(function(){for(var e=this.cursors.length;e--;)this.cursors[e].style.opacity="";t()}.bind(this),this.blinkInterval),t()},this.getPixelPosition=function(e,t){if(!this.config||!this.session)return{left:0,top:0};e||(e=this.session.selection.getCursor());var n=this.session.documentToScreenPosition(e),r=this.$padding+n.column*this.config.characterWidth,i=(n.row-(t?this.config.firstRowScreen:0))*this.config.lineHeight;return{left:r,top:i}},this.update=function(e){this.config=e;var t=this.session.$selectionMarkers,n=0,r=0;if(t===undefined||t.length===0)t=[{cursor:null}];for(var n=t.length;n--;){var i=this.getPixelPosition(t[n].cursor,!0);if((i.top>e.height+e.offset||i.top<-e.offset)&&n>1)continue;var s=(this.cursors[r++]||this.addCursor()).style;s.left=i.left+"px",s.top=i.top+"px",s.width=e.characterWidth+"px",s.height=e.lineHeight+"px"}while(this.cursors.length>r)this.removeCursor();var o=this.session.getOverwrite();this.$setOverwrite(o),this.$pixelPos=i,this.restartTimer()},this.$setOverwrite=function(e){e!=this.overwrite&&(this.overwrite=e,e?r.addCssClass(this.element,"ace_overwrite-cursors"):r.removeCssClass(this.element,"ace_overwrite-cursors"))},this.destroy=function(){clearInterval(this.intervalId),clearTimeout(this.timeoutId)}}).call(i.prototype),t.Cursor=i}),ace.define("ace/scrollbar",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/event","ace/lib/event_emitter"],function(e,t,n){var r=e("./lib/oop"),i=e("./lib/dom"),s=e("./lib/event"),o=e("./lib/event_emitter").EventEmitter,u=function(e){this.element=i.createElement("div"),this.element.className="ace_scrollbar",this.inner=i.createElement("div"),this.inner.className="ace_scrollbar-inner",this.element.appendChild(this.inner),e.appendChild(this.element),this.width=i.scrollbarWidth(e.ownerDocument),this.element.style.width=(this.width||15)+5+"px",s.addListener(this.element,"scroll",this.onScroll.bind(this))};(function(){r.implement(this,o),this.onScroll=function(){this.skipEvent||(this.scrollTop=this.element.scrollTop,this._emit("scroll",{data:this.scrollTop})),this.skipEvent=!1},this.getWidth=function(){return this.width},this.setHeight=function(e){this.element.style.height=e+"px"},this.setInnerHeight=function(e){this.inner.style.height=e+"px"},this.setScrollTop=function(e){this.scrollTop!=e&&(this.skipEvent=!0,this.scrollTop=this.element.scrollTop=e)}}).call(u.prototype),t.ScrollBar=u}),ace.define("ace/renderloop",["require","exports","module","ace/lib/event"],function(e,t,n){var r=e("./lib/event"),i=function(e,t){this.onRender=e,this.pending=!1,this.changes=0,this.window=t||window};(function(){this.schedule=function(e){this.changes=this.changes|e;if(!this.pending){this.pending=!0;var t=this;r.nextFrame(function(){t.pending=!1;var e;while(e=t.changes)t.changes=0,t.onRender(e)},this.window)}}}).call(i.prototype),t.RenderLoop=i}),ace.define("ace/multi_select",["require","exports","module","ace/range_list","ace/range","ace/selection","ace/mouse/multi_select_handler","ace/lib/event","ace/lib/lang","ace/commands/multi_select_commands","ace/search","ace/edit_session","ace/editor"],function(e,t,n){function h(e,t,n){return c.$options.wrap=!0,c.$options.needle=t,c.$options.backwards=n==-1,c.find(e)}function v(e,t){return e.row==t.row&&e.column==t.column}function m(e){e.$onAddRange=e.$onAddRange.bind(e),e.$onRemoveRange=e.$onRemoveRange.bind(e),e.$onMultiSelect=e.$onMultiSelect.bind(e),e.$onSingleSelect=e.$onSingleSelect.bind(e),t.onSessionChange.call(e,e),e.on("changeSession",t.onSessionChange.bind(e)),e.on("mousedown",o),e.commands.addCommands(f.defaultCommands),g(e)}function g(e){function i(){n&&(r.style.cursor="",n=!1)}var t=e.textInput.getElement(),n=!1,r=e.renderer.content;u.addListener(t,"keydown",function(e){e.keyCode==18&&!(e.ctrlKey||e.shiftKey||e.metaKey)?n||(r.style.cursor="crosshair",n=!0):n&&(r.style.cursor="")}),u.addListener(t,"keyup",i),u.addListener(t,"blur",i)}var r=e("./range_list").RangeList,i=e("./range").Range,s=e("./selection").Selection,o=e("./mouse/multi_select_handler").onMouseDown,u=e("./lib/event"),a=e("./lib/lang"),f=e("./commands/multi_select_commands");t.commands=f.defaultCommands.concat(f.multiSelectCommands);var l=e("./search").Search,c=new l,p=e("./edit_session").EditSession;(function(){this.getSelectionMarkers=function(){return this.$selectionMarkers}}).call(p.prototype),function(){this.ranges=null,this.rangeList=null,this.addRange=function(e,t){if(!e)return;if(!this.inMultiSelectMode&&this.rangeCount==0){var n=this.toOrientedRange();if(e.intersects(n))return t||this.fromOrientedRange(e);this.rangeList.add(n),this.$onAddRange(n)}e.cursor||(e.cursor=e.end);var r=this.rangeList.add(e);return this.$onAddRange(e),r.length&&this.$onRemoveRange(r),this.rangeCount>1&&!this.inMultiSelectMode&&(this._emit("multiSelect"),this.inMultiSelectMode=!0,this.session.$undoSelect=!1,this.rangeList.attach(this.session)),t||this.fromOrientedRange(e)},this.toSingleRange=function(e){e=e||this.ranges[0];var t=this.rangeList.removeAll();t.length&&this.$onRemoveRange(t),e&&this.fromOrientedRange(e)},this.substractPoint=function(e){var t=this.rangeList.substractPoint(e);if(t)return this.$onRemoveRange(t),t[0]},this.mergeOverlappingRanges=function(){var e=this.rangeList.merge();e.length?this.$onRemoveRange(e):this.ranges[0]&&this.fromOrientedRange(this.ranges[0])},this.$onAddRange=function(e){this.rangeCount=this.rangeList.ranges.length,this.ranges.unshift(e),this._emit("addRange",{range:e})},this.$onRemoveRange=function(e){this.rangeCount=this.rangeList.ranges.length;if(this.rangeCount==1&&this.inMultiSelectMode){var t=this.rangeList.ranges.pop();e.push(t),this.rangeCount=0}for(var n=e.length;n--;){var r=this.ranges.indexOf(e[n]);this.ranges.splice(r,1)}this._emit("removeRange",{ranges:e}),this.rangeCount==0&&this.inMultiSelectMode&&(this.inMultiSelectMode=!1,this._emit("singleSelect"),this.session.$undoSelect=!0,this.rangeList.detach(this.session)),t=t||this.ranges[0],t&&!t.isEqual(this.getRange())&&this.fromOrientedRange(t)},this.$initRangeList=function(){if(this.rangeList)return;this.rangeList=new r,this.ranges=[],this.rangeCount=0},this.getAllRanges=function(){return this.rangeList.ranges.concat()},this.splitIntoLines=function(){if(this.rangeCount>1){var e=this.rangeList.ranges,t=e[e.length-1],n=i.fromPoints(e[0].start,t.end);this.toSingleRange(),this.setSelectionRange(n,t.cursor==t.start)}else{var n=this.getRange(),r=this.isBackwards(),s=n.start.row,o=n.end.row;if(s==o){if(r)var u=n.end,a=n.start;else var u=n.start,a=n.end;this.addRange(i.fromPoints(a,a)),this.addRange(i.fromPoints(u,u));return}var f=[],l=this.getLineRange(s,!0);l.start.column=n.start.column,f.push(l);for(var c=s+1;c1){var e=this.rangeList.ranges,t=e[e.length-1],n=i.fromPoints(e[0].start,t.end);this.toSingleRange(),this.setSelectionRange(n,t.cursor==t.start)}else{var r=this.session.documentToScreenPosition(this.selectionLead),s=this.session.documentToScreenPosition(this.selectionAnchor),o=this.rectangularRangeBlock(r,s);o.forEach(this.addRange,this)}},this.rectangularRangeBlock=function(e,t,n){var r=[],s=e.column0)d--;if(d>0){var m=0;while(r[m].isEmpty())m++}for(var g=d;g>=m;g--)r[g].isEmpty()&&r.splice(g,1)}return r}}.call(s.prototype);var d=e("./editor").Editor;(function(){this.updateSelectionMarkers=function(){this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.addSelectionMarker=function(e){e.cursor||(e.cursor=e.end);var t=this.getSelectionStyle();return e.marker=this.session.addMarker(e,"ace_selection",t),this.session.$selectionMarkers.push(e),this.session.selectionMarkerCount=this.session.$selectionMarkers.length,e},this.removeSelectionMarker=function(e){if(!e.marker)return;this.session.removeMarker(e.marker);var t=this.session.$selectionMarkers.indexOf(e);t!=-1&&this.session.$selectionMarkers.splice(t,1),this.session.selectionMarkerCount=this.session.$selectionMarkers.length},this.removeSelectionMarkers=function(e){var t=this.session.$selectionMarkers;for(var n=e.length;n--;){var r=e[n];if(!r.marker)continue;this.session.removeMarker(r.marker);var i=t.indexOf(r);i!=-1&&t.splice(i,1)}this.session.selectionMarkerCount=t.length},this.$onAddRange=function(e){this.addSelectionMarker(e.range),this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.$onRemoveRange=function(e){this.removeSelectionMarkers(e.ranges),this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.$onMultiSelect=function(e){if(this.inMultiSelectMode)return;this.inMultiSelectMode=!0,this.setStyle("ace_multiselect"),this.keyBinding.addKeyboardHandler(f.keyboardHandler),this.commands.on("exec",this.$onMultiSelectExec),this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.$onSingleSelect=function(e){if(this.session.multiSelect.inVirtualMode)return;this.inMultiSelectMode=!1,this.unsetStyle("ace_multiselect"),this.keyBinding.removeKeyboardHandler(f.keyboardHandler),this.commands.removeEventListener("exec",this.$onMultiSelectExec),this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.$onMultiSelectExec=function(e){var t=e.command,n=e.editor;if(!n.multiSelect)return;t.multiSelectAction?t.multiSelectAction=="forEach"?n.forEachSelection(t,e.args):t.multiSelectAction=="single"?(n.exitMultiSelectMode(),t.exec(n,e.args||{})):t.multiSelectAction(n,e.args||{}):(t.exec(n,e.args||{}),n.multiSelect.addRange(n.multiSelect.toOrientedRange()),n.multiSelect.mergeOverlappingRanges()),e.preventDefault()},this.forEachSelection=function(e,t){if(this.inVirtualSelectionMode)return;var n=this.session,r=this.selection,i=r.rangeList,o=r._eventRegistry;r._eventRegistry={};var u=new s(n);this.inVirtualSelectionMode=!0;for(var a=i.ranges.length;a--;)u.fromOrientedRange(i.ranges[a]),this.selection=n.selection=u,e.exec(this,t||{}),u.toOrientedRange(i.ranges[a]);u.detach(),this.selection=n.selection=r,this.inVirtualSelectionMode=!1,r._eventRegistry=o,r.mergeOverlappingRanges(),this.onCursorChange(),this.onSelectionChange()},this.exitMultiSelectMode=function(){if(this.inVirtualSelectionMode)return;this.multiSelect.toSingleRange()},this.getCopyText=function(){var e="";if(this.inMultiSelectMode){var t=this.multiSelect.rangeList.ranges;e=[];for(var n=0;nn.length||t.length<=2||!t[1])return this.commands.exec("insertstring",this,e);for(var r=n.length;r--;){var i=n[r];i.isEmpty()||this.session.remove(i),this.session.insert(i.start,t[r])}},this.findAll=function(e,t,n){t=t||{},t.needle=e||t.needle,this.$search.set(t);var r=this.$search.findAll(this.session);if(!r.length)return 0;this.$blockScrolling+=1;var i=this.multiSelect;n||i.toSingleRange(r[0]);for(var s=r.length;s--;)i.addRange(r[s],!0);return this.$blockScrolling-=1,r.length},this.selectMoreLines=function(e,t){var n=this.selection.toOrientedRange(),r=n.cursor==n.end,s=this.session.documentToScreenPosition(n.cursor);this.selection.$desiredColumn&&(s.column=this.selection.$desiredColumn);var o=this.session.screenToDocumentPosition(s.row+e,s.column);if(!n.isEmpty())var u=this.session.documentToScreenPosition(r?n.end:n.start),a=this.session.screenToDocumentPosition(u.row+e,u.column);else var a=o;if(r){var f=i.fromPoints(o,a);f.cursor=f.start}else{var f=i.fromPoints(a,o);f.cursor=f.end}f.desiredColumn=s.column;if(!this.selection.inMultiSelectMode)this.selection.addRange(n);else if(t)var l=n.cursor;this.selection.addRange(f),l&&this.selection.substractPoint(l)},this.transposeSelections=function(e){var t=this.session,n=t.multiSelect,r=n.ranges;for(var i=r.length;i--;){var s=r[i];if(s.isEmpty()){var o=t.getWordRange(s.start.row,s.start.column);s.start.row=o.start.row,s.start.column=o.start.column,s.end.row=o.end.row,s.end.column=o.end.column}}n.mergeOverlappingRanges();var u=[];for(var i=r.length;i--;){var s=r[i];u.unshift(t.getTextRange(s))}e<0?u.unshift(u.pop()):u.push(u.shift());for(var i=r.length;i--;){var s=r[i],o=s.clone();t.replace(s,u[i]),s.start.row=o.start.row,s.start.column=o.start.column}},this.selectMore=function(e,t){var n=this.session,r=n.multiSelect,i=r.toOrientedRange();if(i.isEmpty()){var i=n.getWordRange(i.start.row,i.start.column);i.cursor=i.end,this.multiSelect.addRange(i)}var s=n.getTextRange(i),o=h(n,s,e);o&&(o.cursor=e==-1?o.start:o.end,this.multiSelect.addRange(o)),t&&this.multiSelect.substractPoint(i.cursor)},this.alignCursors=function(){var e=this.session,t=e.multiSelect,n=t.ranges;if(!n.length){var r=this.selection.getRange(),s=r.start.row,o=r.end.row,u=this.session.doc.removeLines(s,o);u=this.$reAlignText(u),this.session.doc.insertLines(s,u),r.start.column=0,r.end.column=u[u.length-1].length,this.selection.setRange(r)}else{var f=-1,l=n.filter(function(e){if(e.cursor.row==f)return!0;f=e.cursor.row});t.$onRemoveRange(l);var c=0,h=Infinity,p=n.map(function(t){var n=t.cursor,r=e.getLine(n.row),i=r.substr(n.column).search(/\S/g);return i==-1&&(i=0),n.column>c&&(c=n.column),io?e.insert(r,a.stringRepeat(" ",s-o)):e.remove(new i(r.row,r.column,r.row,r.column-s+o)),t.start.column=t.end.column=c,t.start.row=t.end.row=r.row,t.cursor=t.end}),t.fromOrientedRange(n[0]),this.renderer.updateCursor(),this.renderer.updateBackMarkers()}},this.$reAlignText=function(e){function o(e,t){return Array(e+1).join(t)}function u(e){return e[2]?o(r," ")+e[2]+o(i-e[2].length+s," ")+e[4].replace(/^([=:])\s+/,"$1 "):e[0]}function a(e){return e[2]?o(r+i-e[2].length," ")+e[2]+o(s," ")+e[4].replace(/^([=:])\s+/,"$1 "):e[0]}function f(e){return e[2]?o(r," ")+e[2]+o(s," ")+e[4].replace(/^([=:])\s+/,"$1 "):e[0]}var t=!0,n=!0,r,i,s;return e.map(function(e){var o=e.match(/(\s*)(.*?)(\s*)([=:].*)/);return o?r==null?(r=o[1].length,i=o[2].length,s=o[3].length,o):(r+i+s!=o[1].length+o[2].length+o[3].length&&(n=!1),r!=o[1].length&&(t=!1),r>o[1].length&&(r=o[1].length),io[3].length&&(s=o[3].length),o):[e]}).map(t?n?a:u:f)}}).call(d.prototype),t.onSessionChange=function(e){var t=e.session;t.multiSelect||(t.$selectionMarkers=[],t.selection.$initRangeList(),t.multiSelect=t.selection),this.multiSelect=t.multiSelect;var n=e.oldSession;n&&(n.multiSelect&&n.multiSelect.editor==this&&(n.multiSelect.editor=null),t.multiSelect.removeEventListener("addRange",this.$onAddRange),t.multiSelect.removeEventListener("removeRange",this.$onRemoveRange),t.multiSelect.removeEventListener("multiSelect",this.$onMultiSelect),t.multiSelect.removeEventListener("singleSelect",this.$onSingleSelect)),t.multiSelect.on("addRange",this.$onAddRange),t.multiSelect.on("removeRange",this.$onRemoveRange),t.multiSelect.on("multiSelect",this.$onMultiSelect),t.multiSelect.on("singleSelect",this.$onSingleSelect),this.inMultiSelectMode!=t.selection.inMultiSelectMode&&(t.selection.inMultiSelectMode?this.$onMultiSelect():this.$onSingleSelect())},t.MultiSelect=m}),ace.define("ace/range_list",["require","exports","module"],function(e,t,n){var r=function(){this.ranges=[]};(function(){this.comparePoints=function(e,t){return e.row-t.row||e.column-t.column},this.pointIndex=function(e,t){var n=this.ranges;for(var r=t||0;r0)continue;return s==0?r:(s=this.comparePoints(e,i.start),s>=0?r:-r-1)}return-r-1},this.add=function(e){var t=this.pointIndex(e.start);t<0&&(t=-t-1);var n=this.pointIndex(e.end,t);return n<0?n=-n-1:n++,this.ranges.splice(t,n-t,e)},this.addList=function(e){var t=[];for(var n=e.length;n--;)t.push.call(t,this.add(e[n]));return t},this.substractPoint=function(e){var t=this.pointIndex(e);if(t>=0)return this.ranges.splice(t,1)},this.merge=function(){var e=[],t=this.ranges,n=t[0],r;for(var i=1;i=0},this.containsPoint=function(e){return this.pointIndex(e)>=0},this.rangeAtPoint=function(e){var t=this.pointIndex(e);if(t>=0)return this.ranges[t]},this.clipRows=function(e,t){var n=this.ranges;if(n[0].start.row>t||n[n.length-1].start.rowi)break;c.start.row==i&&c.start.column>=n.column&&(c.start.column+=u,c.start.row+=o),c.end.row==i&&c.end.column>=n.column&&(c.end.column+=u,c.end.row+=o)}if(o!=0&&f=0?i=e.nameToUrl("ace/worker/worker_sourcemint"):(e.nameToUrl&&!e.toUrl&&(e.toUrl=e.nameToUrl),i=o(e.toUrl("ace/worker/worker",null,"_")));var u={};t.forEach(function(t){u[t]=o(e.toUrl(t,null,"_").replace(/.js(\?.*)?$/,""))})}this.$worker=new Worker(i),this.$worker.postMessage({init:!0,tlns:u,module:n,classname:r}),this.callbackId=1,this.callbacks={},this.$worker.onerror=this.onError,this.$worker.onmessage=this.onMessage};(function(){r.implement(this,i),this.onError=function(e){throw window.console&&console.log&&console.log(e),e},this.onMessage=function(e){var t=e.data;switch(t.type){case"log":window.console&&console.log&&console.log.apply(console,t.data);break;case"event":this._emit(t.name,{data:t.data});break;case"call":var n=this.callbacks[t.id];n&&(n(t.data),delete this.callbacks[t.id])}},this.$normalizePath=function(e){return location.host?(e=e.replace(/^[a-z]+:\/\/[^\/]+/,""),e=location.protocol+"//"+location.host+(e.charAt(0)=="/"?"":location.pathname.replace(/\/[^\/]*$/,""))+"/"+e.replace(/^[\/]+/,""),e):e},this.terminate=function(){this._emit("terminate",{}),this.$worker.terminate(),this.$worker=null,this.$doc.removeEventListener("change",this.changeListener),this.$doc=null},this.send=function(e,t){this.$worker.postMessage({command:e,args:t})},this.call=function(e,t,n){if(n){var r=this.callbackId++;this.callbacks[r]=n,t.push(r)}this.send(e,t)},this.emit=function(e,t){try{this.$worker.postMessage({event:e,data:{data:t.data}})}catch(n){}},this.attachToDocument=function(e){this.$doc&&this.terminate(),this.$doc=e,this.call("setValue",[e.getValue()]),e.on("change",this.changeListener)},this.changeListener=function(e){e.range={start:e.data.range.start,end:e.data.range.end},this.emit("change",e)}}).call(o.prototype);var u=function(t,n,r){this.changeListener=this.changeListener.bind(this),this.callbackId=1,this.callbacks={},this.messageBuffer=[];var s=null,o=Object.create(i),u=this;this.$worker={},this.$worker.postMessage=function(e){u.messageBuffer.push(e),s&&setTimeout(a)};var a=function(){var e=u.messageBuffer.shift();e.command?s[e.command].apply(s,e.args):e.event&&o._emit(e.event,e.data)};o.postMessage=function(e){u.onMessage({data:e})},o.callback=function(e,t){this.postMessage({type:"call",id:t,data:e})},o.emit=function(e,t){this.postMessage({type:"event",name:e,data:t})},e([n],function(e){s=new e[r](o);while(u.messageBuffer.length)a()})};u.prototype=o.prototype,t.UIWorkerClient=u,t.WorkerClient=o}),ace.define("ace/placeholder",["require","exports","module","ace/range","ace/lib/event_emitter","ace/lib/oop"],function(e,t,n){var r=e("./range").Range,i=e("./lib/event_emitter").EventEmitter,s=e("./lib/oop"),o=function(e,t,n,r,i,s){var o=this;this.length=t,this.session=e,this.doc=e.getDocument(),this.mainClass=i,this.othersClass=s,this.$onUpdate=this.onUpdate.bind(this),this.doc.on("change",this.$onUpdate),this.$others=r,this.$onCursorChange=function(){setTimeout(function(){o.onCursorChange()})},this.$pos=n;var u=e.getUndoManager().$undoStack||e.getUndoManager().$undostack||{length:-1};this.$undoStackDepth=u.length,this.setup(),e.selection.on("changeCursor",this.$onCursorChange)};(function(){s.implement(this,i),this.setup=function(){var e=this,t=this.doc,n=this.session,i=this.$pos;this.pos=t.createAnchor(i.row,i.column),this.markerId=n.addMarker(new r(i.row,i.column,i.row,i.column+this.length),this.mainClass,null,!1),this.pos.on("change",function(t){n.removeMarker(e.markerId),e.markerId=n.addMarker(new r(t.value.row,t.value.column,t.value.row,t.value.column+e.length),e.mainClass,null,!1)}),this.others=[],this.$others.forEach(function(n){var r=t.createAnchor(n.row,n.column);e.others.push(r)}),n.setUndoSelect(!1)},this.showOtherMarkers=function(){if(this.othersActive)return;var e=this.session,t=this;this.othersActive=!0,this.others.forEach(function(n){n.markerId=e.addMarker(new r(n.row,n.column,n.row,n.column+t.length),t.othersClass,null,!1),n.on("change",function(i){e.removeMarker(n.markerId),n.markerId=e.addMarker(new r(i.value.row,i.value.column,i.value.row,i.value.column+t.length),t.othersClass,null,!1)})})},this.hideOtherMarkers=function(){if(!this.othersActive)return;this.othersActive=!1;for(var e=0;e=this.pos.column&&n.start.column<=this.pos.column+this.length+1){var s=n.start.column-this.pos.column;this.length+=i;if(!this.session.$fromUndo){if(t.action==="insertText")for(var o=this.others.length-1;o>=0;o--){var u=this.others[o],a={row:u.row,column:u.column+s};u.row===n.start.row&&n.start.column=0;o--){var u=this.others[o],a={row:u.row,column:u.column+s};u.row===n.start.row&&n.start.column=this.pos.column&&t.column<=this.pos.column+this.length?(this.showOtherMarkers(),this._emit("cursorEnter",e)):(this.hideOtherMarkers(),this._emit("cursorLeave",e))},this.detach=function(){this.session.removeMarker(this.markerId),this.hideOtherMarkers(),this.doc.removeEventListener("change",this.$onUpdate),this.session.selection.removeEventListener("changeCursor",this.$onCursorChange),this.pos.detach();for(var e=0;ef){var h=e.getLine(l).length;return new r(f,u,l,h)}},this.openingBracketBlock=function(e,t,n,i,s){var o={row:n,column:i+1},u=e.$findClosingBracket(t,o,s);if(!u)return;var a=e.foldWidgets[u.row];return a==null&&(a=this.getFoldWidget(e,u.row)),a=="start"&&u.row>o.row&&(u.row--,u.column=e.getLine(u.row).length),r.fromPoints(o,u)},this.closingBracketBlock=function(e,t,n,i,s){var o={row:n,column:i},u=e.$findOpeningBracket(t,o);if(!u)return;return u.column++,o.column--,r.fromPoints(u,o)}}).call(i.prototype)}); + (function() { + ace.require(["ace/ace"], function(a) { + a && a.config.init(); + if (!window.ace) + window.ace = {}; + for (var key in a) if (a.hasOwnProperty(key)) + ace[key] = a[key]; + }); + })(); + \ No newline at end of file diff --git a/app/assets/javascripts/shared/ajquery.ui.widget.js b/app/assets/javascripts/shared/ajquery.ui.widget.js new file mode 100755 index 0000000..886aff6 --- /dev/null +++ b/app/assets/javascripts/shared/ajquery.ui.widget.js @@ -0,0 +1,528 @@ +/* + * jQuery UI Widget 1.9.1+amd + * https://github.com/blueimp/jQuery-File-Upload + * + * Copyright 2012 jQuery Foundation and other contributors + * Released under the MIT license. + * http://jquery.org/license + * + * http://api.jqueryui.com/jQuery.widget/ + */ + +(function (factory) { + if (typeof define === "function" && define.amd) { + // Register as an anonymous AMD module: + define(["jquery"], factory); + } else { + // Browser globals: + factory(jQuery); + } +}(function( $, undefined ) { + +var uuid = 0, + slice = Array.prototype.slice, + _cleanData = $.cleanData; +$.cleanData = function( elems ) { + for ( var i = 0, elem; (elem = elems[i]) != null; i++ ) { + try { + $( elem ).triggerHandler( "remove" ); + // http://bugs.jquery.com/ticket/8235 + } catch( e ) {} + } + _cleanData( elems ); +}; + +$.widget = function( name, base, prototype ) { + var fullName, existingConstructor, constructor, basePrototype, + namespace = name.split( "." )[ 0 ]; + + name = name.split( "." )[ 1 ]; + fullName = namespace + "-" + name; + + if ( !prototype ) { + prototype = base; + base = $.Widget; + } + + // create selector for plugin + $.expr[ ":" ][ fullName.toLowerCase() ] = function( elem ) { + return !!$.data( elem, fullName ); + }; + + $[ namespace ] = $[ namespace ] || {}; + existingConstructor = $[ namespace ][ name ]; + constructor = $[ namespace ][ name ] = function( options, element ) { + // allow instantiation without "new" keyword + if ( !this._createWidget ) { + return new constructor( options, element ); + } + + // allow instantiation without initializing for simple inheritance + // must use "new" keyword (the code above always passes args) + if ( arguments.length ) { + this._createWidget( options, element ); + } + }; + // extend with the existing constructor to carry over any static properties + $.extend( constructor, existingConstructor, { + version: prototype.version, + // copy the object used to create the prototype in case we need to + // redefine the widget later + _proto: $.extend( {}, prototype ), + // track widgets that inherit from this widget in case this widget is + // redefined after a widget inherits from it + _childConstructors: [] + }); + + basePrototype = new base(); + // we need to make the options hash a property directly on the new instance + // otherwise we'll modify the options hash on the prototype that we're + // inheriting from + basePrototype.options = $.widget.extend( {}, basePrototype.options ); + $.each( prototype, function( prop, value ) { + if ( $.isFunction( value ) ) { + prototype[ prop ] = (function() { + var _super = function() { + return base.prototype[ prop ].apply( this, arguments ); + }, + _superApply = function( args ) { + return base.prototype[ prop ].apply( this, args ); + }; + return function() { + var __super = this._super, + __superApply = this._superApply, + returnValue; + + this._super = _super; + this._superApply = _superApply; + + returnValue = value.apply( this, arguments ); + + this._super = __super; + this._superApply = __superApply; + + return returnValue; + }; + })(); + } + }); + constructor.prototype = $.widget.extend( basePrototype, { + // TODO: remove support for widgetEventPrefix + // always use the name + a colon as the prefix, e.g., draggable:start + // don't prefix for widgets that aren't DOM-based + widgetEventPrefix: basePrototype.widgetEventPrefix || name + }, prototype, { + constructor: constructor, + namespace: namespace, + widgetName: name, + // TODO remove widgetBaseClass, see #8155 + widgetBaseClass: fullName, + widgetFullName: fullName + }); + + // If this widget is being redefined then we need to find all widgets that + // are inheriting from it and redefine all of them so that they inherit from + // the new version of this widget. We're essentially trying to replace one + // level in the prototype chain. + if ( existingConstructor ) { + $.each( existingConstructor._childConstructors, function( i, child ) { + var childPrototype = child.prototype; + + // redefine the child widget using the same prototype that was + // originally used, but inherit from the new version of the base + $.widget( childPrototype.namespace + "." + childPrototype.widgetName, constructor, child._proto ); + }); + // remove the list of existing child constructors from the old constructor + // so the old child constructors can be garbage collected + delete existingConstructor._childConstructors; + } else { + base._childConstructors.push( constructor ); + } + + $.widget.bridge( name, constructor ); +}; + +$.widget.extend = function( target ) { + var input = slice.call( arguments, 1 ), + inputIndex = 0, + inputLength = input.length, + key, + value; + for ( ; inputIndex < inputLength; inputIndex++ ) { + for ( key in input[ inputIndex ] ) { + value = input[ inputIndex ][ key ]; + if ( input[ inputIndex ].hasOwnProperty( key ) && value !== undefined ) { + // Clone objects + if ( $.isPlainObject( value ) ) { + target[ key ] = $.isPlainObject( target[ key ] ) ? + $.widget.extend( {}, target[ key ], value ) : + // Don't extend strings, arrays, etc. with objects + $.widget.extend( {}, value ); + // Copy everything else by reference + } else { + target[ key ] = value; + } + } + } + } + return target; +}; + +$.widget.bridge = function( name, object ) { + var fullName = object.prototype.widgetFullName; + $.fn[ name ] = function( options ) { + var isMethodCall = typeof options === "string", + args = slice.call( arguments, 1 ), + returnValue = this; + + // allow multiple hashes to be passed on init + options = !isMethodCall && args.length ? + $.widget.extend.apply( null, [ options ].concat(args) ) : + options; + + if ( isMethodCall ) { + this.each(function() { + var methodValue, + instance = $.data( this, fullName ); + if ( !instance ) { + return $.error( "cannot call methods on " + name + " prior to initialization; " + + "attempted to call method '" + options + "'" ); + } + if ( !$.isFunction( instance[options] ) || options.charAt( 0 ) === "_" ) { + return $.error( "no such method '" + options + "' for " + name + " widget instance" ); + } + methodValue = instance[ options ].apply( instance, args ); + if ( methodValue !== instance && methodValue !== undefined ) { + returnValue = methodValue && methodValue.jquery ? + returnValue.pushStack( methodValue.get() ) : + methodValue; + return false; + } + }); + } else { + this.each(function() { + var instance = $.data( this, fullName ); + if ( instance ) { + instance.option( options || {} )._init(); + } else { + new object( options, this ); + } + }); + } + + return returnValue; + }; +}; + +$.Widget = function( /* options, element */ ) {}; +$.Widget._childConstructors = []; + +$.Widget.prototype = { + widgetName: "widget", + widgetEventPrefix: "", + defaultElement: "
    ", + options: { + disabled: false, + + // callbacks + create: null + }, + _createWidget: function( options, element ) { + element = $( element || this.defaultElement || this )[ 0 ]; + this.element = $( element ); + this.uuid = uuid++; + this.eventNamespace = "." + this.widgetName + this.uuid; + this.options = $.widget.extend( {}, + this.options, + this._getCreateOptions(), + options ); + + this.bindings = $(); + this.hoverable = $(); + this.focusable = $(); + + if ( element !== this ) { + // 1.9 BC for #7810 + // TODO remove dual storage + $.data( element, this.widgetName, this ); + $.data( element, this.widgetFullName, this ); + this._on( this.element, { + remove: function( event ) { + if ( event.target === element ) { + this.destroy(); + } + } + }); + this.document = $( element.style ? + // element within the document + element.ownerDocument : + // element is window or document + element.document || element ); + this.window = $( this.document[0].defaultView || this.document[0].parentWindow ); + } + + this._create(); + this._trigger( "create", null, this._getCreateEventData() ); + this._init(); + }, + _getCreateOptions: $.noop, + _getCreateEventData: $.noop, + _create: $.noop, + _init: $.noop, + + destroy: function() { + this._destroy(); + // we can probably remove the unbind calls in 2.0 + // all event bindings should go through this._on() + this.element + .unbind( this.eventNamespace ) + // 1.9 BC for #7810 + // TODO remove dual storage + .removeData( this.widgetName ) + .removeData( this.widgetFullName ) + // support: jquery <1.6.3 + // http://bugs.jquery.com/ticket/9413 + .removeData( $.camelCase( this.widgetFullName ) ); + this.widget() + .unbind( this.eventNamespace ) + .removeAttr( "aria-disabled" ) + .removeClass( + this.widgetFullName + "-disabled " + + "ui-state-disabled" ); + + // clean up events and states + this.bindings.unbind( this.eventNamespace ); + this.hoverable.removeClass( "ui-state-hover" ); + this.focusable.removeClass( "ui-state-focus" ); + }, + _destroy: $.noop, + + widget: function() { + return this.element; + }, + + option: function( key, value ) { + var options = key, + parts, + curOption, + i; + + if ( arguments.length === 0 ) { + // don't return a reference to the internal hash + return $.widget.extend( {}, this.options ); + } + + if ( typeof key === "string" ) { + // handle nested keys, e.g., "foo.bar" => { foo: { bar: ___ } } + options = {}; + parts = key.split( "." ); + key = parts.shift(); + if ( parts.length ) { + curOption = options[ key ] = $.widget.extend( {}, this.options[ key ] ); + for ( i = 0; i < parts.length - 1; i++ ) { + curOption[ parts[ i ] ] = curOption[ parts[ i ] ] || {}; + curOption = curOption[ parts[ i ] ]; + } + key = parts.pop(); + if ( value === undefined ) { + return curOption[ key ] === undefined ? null : curOption[ key ]; + } + curOption[ key ] = value; + } else { + if ( value === undefined ) { + return this.options[ key ] === undefined ? null : this.options[ key ]; + } + options[ key ] = value; + } + } + + this._setOptions( options ); + + return this; + }, + _setOptions: function( options ) { + var key; + + for ( key in options ) { + this._setOption( key, options[ key ] ); + } + + return this; + }, + _setOption: function( key, value ) { + this.options[ key ] = value; + + if ( key === "disabled" ) { + this.widget() + .toggleClass( this.widgetFullName + "-disabled ui-state-disabled", !!value ) + .attr( "aria-disabled", value ); + this.hoverable.removeClass( "ui-state-hover" ); + this.focusable.removeClass( "ui-state-focus" ); + } + + return this; + }, + + enable: function() { + return this._setOption( "disabled", false ); + }, + disable: function() { + return this._setOption( "disabled", true ); + }, + + _on: function( element, handlers ) { + var delegateElement, + instance = this; + // no element argument, shuffle and use this.element + if ( !handlers ) { + handlers = element; + element = this.element; + delegateElement = this.widget(); + } else { + // accept selectors, DOM elements + element = delegateElement = $( element ); + this.bindings = this.bindings.add( element ); + } + + $.each( handlers, function( event, handler ) { + function handlerProxy() { + // allow widgets to customize the disabled handling + // - disabled as an array instead of boolean + // - disabled class as method for disabling individual parts + if ( instance.options.disabled === true || + $( this ).hasClass( "ui-state-disabled" ) ) { + return; + } + return ( typeof handler === "string" ? instance[ handler ] : handler ) + .apply( instance, arguments ); + } + + // copy the guid so direct unbinding works + if ( typeof handler !== "string" ) { + handlerProxy.guid = handler.guid = + handler.guid || handlerProxy.guid || $.guid++; + } + + var match = event.match( /^(\w+)\s*(.*)$/ ), + eventName = match[1] + instance.eventNamespace, + selector = match[2]; + if ( selector ) { + delegateElement.delegate( selector, eventName, handlerProxy ); + } else { + element.bind( eventName, handlerProxy ); + } + }); + }, + + _off: function( element, eventName ) { + eventName = (eventName || "").split( " " ).join( this.eventNamespace + " " ) + this.eventNamespace; + element.unbind( eventName ).undelegate( eventName ); + }, + + _delay: function( handler, delay ) { + function handlerProxy() { + return ( typeof handler === "string" ? instance[ handler ] : handler ) + .apply( instance, arguments ); + } + var instance = this; + return setTimeout( handlerProxy, delay || 0 ); + }, + + _hoverable: function( element ) { + this.hoverable = this.hoverable.add( element ); + this._on( element, { + mouseenter: function( event ) { + $( event.currentTarget ).addClass( "ui-state-hover" ); + }, + mouseleave: function( event ) { + $( event.currentTarget ).removeClass( "ui-state-hover" ); + } + }); + }, + + _focusable: function( element ) { + this.focusable = this.focusable.add( element ); + this._on( element, { + focusin: function( event ) { + $( event.currentTarget ).addClass( "ui-state-focus" ); + }, + focusout: function( event ) { + $( event.currentTarget ).removeClass( "ui-state-focus" ); + } + }); + }, + + _trigger: function( type, event, data ) { + var prop, orig, + callback = this.options[ type ]; + + data = data || {}; + event = $.Event( event ); + event.type = ( type === this.widgetEventPrefix ? + type : + this.widgetEventPrefix + type ).toLowerCase(); + // the original event may come from any element + // so we need to reset the target on the new event + event.target = this.element[ 0 ]; + + // copy original event properties over to the new event + orig = event.originalEvent; + if ( orig ) { + for ( prop in orig ) { + if ( !( prop in event ) ) { + event[ prop ] = orig[ prop ]; + } + } + } + + this.element.trigger( event, data ); + return !( $.isFunction( callback ) && + callback.apply( this.element[0], [ event ].concat( data ) ) === false || + event.isDefaultPrevented() ); + } +}; + +$.each( { show: "fadeIn", hide: "fadeOut" }, function( method, defaultEffect ) { + $.Widget.prototype[ "_" + method ] = function( element, options, callback ) { + if ( typeof options === "string" ) { + options = { effect: options }; + } + var hasOptions, + effectName = !options ? + method : + options === true || typeof options === "number" ? + defaultEffect : + options.effect || defaultEffect; + options = options || {}; + if ( typeof options === "number" ) { + options = { duration: options }; + } + hasOptions = !$.isEmptyObject( options ); + options.complete = callback; + if ( options.delay ) { + element.delay( options.delay ); + } + if ( hasOptions && $.effects && ( $.effects.effect[ effectName ] || $.uiBackCompat !== false && $.effects[ effectName ] ) ) { + element[ method ]( options ); + } else if ( effectName !== method && element[ effectName ] ) { + element[ effectName ]( options.duration, options.easing, callback ); + } else { + element.queue(function( next ) { + $( this )[ method ](); + if ( callback ) { + callback.call( element[ 0 ] ); + } + next(); + }); + } + }; +}); + +// DEPRECATED +if ( $.uiBackCompat !== false ) { + $.Widget.prototype._getCreateOptions = function() { + return $.metadata && $.metadata.get( this.element[0] )[ this.widgetName ]; + }; +} + +})); diff --git a/app/assets/javascripts/shared/jquery-ui.js b/app/assets/javascripts/shared/jquery-ui.js deleted file mode 100755 index 14c9064..0000000 --- a/app/assets/javascripts/shared/jquery-ui.js +++ /dev/null @@ -1,791 +0,0 @@ -/*! - * jQuery UI 1.8.16 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI - */ -(function(c,j){function k(a,b){var d=a.nodeName.toLowerCase();if("area"===d){b=a.parentNode;d=b.name;if(!a.href||!d||b.nodeName.toLowerCase()!=="map")return false;a=c("img[usemap=#"+d+"]")[0];return!!a&&l(a)}return(/input|select|textarea|button|object/.test(d)?!a.disabled:"a"==d?a.href||b:b)&&l(a)}function l(a){return!c(a).parents().andSelf().filter(function(){return c.curCSS(this,"visibility")==="hidden"||c.expr.filters.hidden(this)}).length}c.ui=c.ui||{};if(!c.ui.version){c.extend(c.ui,{version:"1.8.16", -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}});c.fn.extend({propAttr:c.fn.prop||c.fn.attr,_focus:c.fn.focus,focus:function(a,b){return typeof a==="number"?this.each(function(){var d= -this;setTimeout(function(){c(d).focus();b&&b.call(d)},a)}):this._focus.apply(this,arguments)},scrollParent:function(){var a;a=c.browser.msie&&/(static|relative)/.test(this.css("position"))||/absolute/.test(this.css("position"))?this.parents().filter(function(){return/(relative|absolute|fixed)/.test(c.curCSS(this,"position",1))&&/(auto|scroll)/.test(c.curCSS(this,"overflow",1)+c.curCSS(this,"overflow-y",1)+c.curCSS(this,"overflow-x",1))}).eq(0):this.parents().filter(function(){return/(auto|scroll)/.test(c.curCSS(this, -"overflow",1)+c.curCSS(this,"overflow-y",1)+c.curCSS(this,"overflow-x",1))}).eq(0);return/fixed/.test(this.css("position"))||!a.length?c(document):a},zIndex:function(a){if(a!==j)return this.css("zIndex",a);if(this.length){a=c(this[0]);for(var b;a.length&&a[0]!==document;){b=a.css("position");if(b==="absolute"||b==="relative"||b==="fixed"){b=parseInt(a.css("zIndex"),10);if(!isNaN(b)&&b!==0)return b}a=a.parent()}}return 0},disableSelection:function(){return this.bind((c.support.selectstart?"selectstart": -"mousedown")+".ui-disableSelection",function(a){a.preventDefault()})},enableSelection:function(){return this.unbind(".ui-disableSelection")}});c.each(["Width","Height"],function(a,b){function d(f,g,m,n){c.each(e,function(){g-=parseFloat(c.curCSS(f,"padding"+this,true))||0;if(m)g-=parseFloat(c.curCSS(f,"border"+this+"Width",true))||0;if(n)g-=parseFloat(c.curCSS(f,"margin"+this,true))||0});return g}var e=b==="Width"?["Left","Right"]:["Top","Bottom"],h=b.toLowerCase(),i={innerWidth:c.fn.innerWidth,innerHeight:c.fn.innerHeight, -outerWidth:c.fn.outerWidth,outerHeight:c.fn.outerHeight};c.fn["inner"+b]=function(f){if(f===j)return i["inner"+b].call(this);return this.each(function(){c(this).css(h,d(this,f)+"px")})};c.fn["outer"+b]=function(f,g){if(typeof f!=="number")return i["outer"+b].call(this,f);return this.each(function(){c(this).css(h,d(this,f,true,g)+"px")})}});c.extend(c.expr[":"],{data:function(a,b,d){return!!c.data(a,d[3])},focusable:function(a){return k(a,!isNaN(c.attr(a,"tabindex")))},tabbable:function(a){var b=c.attr(a, -"tabindex"),d=isNaN(b);return(d||b>=0)&&k(a,!d)}});c(function(){var a=document.body,b=a.appendChild(b=document.createElement("div"));c.extend(b.style,{minHeight:"100px",height:"auto",padding:0,borderWidth:0});c.support.minHeight=b.offsetHeight===100;c.support.selectstart="onselectstart"in b;a.removeChild(b).style.display="none"});c.extend(c.ui,{plugin:{add:function(a,b,d){a=c.ui[a].prototype;for(var e in d){a.plugins[e]=a.plugins[e]||[];a.plugins[e].push([b,d[e]])}},call:function(a,b,d){if((b=a.plugins[b])&& -a.element[0].parentNode)for(var e=0;e0)return true;a[b]=1;d=a[b]>0;a[b]=0;return d},isOverAxis:function(a,b,d){return a>b&&a=9)&&!a.button)return this._mouseUp(a);if(this._mouseStarted){this._mouseDrag(a);return a.preventDefault()}if(this._mouseDistanceMet(a)&&this._mouseDelayMet(a))(this._mouseStarted=this._mouseStart(this._mouseDownEvent,a)!==false)?this._mouseDrag(a):this._mouseUp(a);return!this._mouseStarted},_mouseUp:function(a){b(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate);if(this._mouseStarted){this._mouseStarted= -false;a.target==this._mouseDownEvent.target&&b.data(a.target,this.widgetName+".preventClickEvent",true);this._mouseStop(a)}return false},_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(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return true}})})(jQuery); -;/* - * jQuery UI Position 1.8.16 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Position - */ -(function(c){c.ui=c.ui||{};var n=/left|center|right/,o=/top|center|bottom/,t=c.fn.position,u=c.fn.offset;c.fn.position=function(b){if(!b||!b.of)return t.apply(this,arguments);b=c.extend({},b);var a=c(b.of),d=a[0],g=(b.collision||"flip").split(" "),e=b.offset?b.offset.split(" "):[0,0],h,k,j;if(d.nodeType===9){h=a.width();k=a.height();j={top:0,left:0}}else if(d.setTimeout){h=a.width();k=a.height();j={top:a.scrollTop(),left:a.scrollLeft()}}else if(d.preventDefault){b.at="left top";h=k=0;j={top:b.of.pageY, -left:b.of.pageX}}else{h=a.outerWidth();k=a.outerHeight();j=a.offset()}c.each(["my","at"],function(){var f=(b[this]||"").split(" ");if(f.length===1)f=n.test(f[0])?f.concat(["center"]):o.test(f[0])?["center"].concat(f):["center","center"];f[0]=n.test(f[0])?f[0]:"center";f[1]=o.test(f[1])?f[1]:"center";b[this]=f});if(g.length===1)g[1]=g[0];e[0]=parseInt(e[0],10)||0;if(e.length===1)e[1]=e[0];e[1]=parseInt(e[1],10)||0;if(b.at[0]==="right")j.left+=h;else if(b.at[0]==="center")j.left+=h/2;if(b.at[1]==="bottom")j.top+= -k;else if(b.at[1]==="center")j.top+=k/2;j.left+=e[0];j.top+=e[1];return this.each(function(){var f=c(this),l=f.outerWidth(),m=f.outerHeight(),p=parseInt(c.curCSS(this,"marginLeft",true))||0,q=parseInt(c.curCSS(this,"marginTop",true))||0,v=l+p+(parseInt(c.curCSS(this,"marginRight",true))||0),w=m+q+(parseInt(c.curCSS(this,"marginBottom",true))||0),i=c.extend({},j),r;if(b.my[0]==="right")i.left-=l;else if(b.my[0]==="center")i.left-=l/2;if(b.my[1]==="bottom")i.top-=m;else if(b.my[1]==="center")i.top-= -m/2;i.left=Math.round(i.left);i.top=Math.round(i.top);r={left:i.left-p,top:i.top-q};c.each(["left","top"],function(s,x){c.ui.position[g[s]]&&c.ui.position[g[s]][x](i,{targetWidth:h,targetHeight:k,elemWidth:l,elemHeight:m,collisionPosition:r,collisionWidth:v,collisionHeight:w,offset:e,my:b.my,at:b.at})});c.fn.bgiframe&&f.bgiframe();f.offset(c.extend(i,{using:b.using}))})};c.ui.position={fit:{left:function(b,a){var d=c(window);d=a.collisionPosition.left+a.collisionWidth-d.width()-d.scrollLeft();b.left= -d>0?b.left-d:Math.max(b.left-a.collisionPosition.left,b.left)},top:function(b,a){var d=c(window);d=a.collisionPosition.top+a.collisionHeight-d.height()-d.scrollTop();b.top=d>0?b.top-d:Math.max(b.top-a.collisionPosition.top,b.top)}},flip:{left:function(b,a){if(a.at[0]!=="center"){var d=c(window);d=a.collisionPosition.left+a.collisionWidth-d.width()-d.scrollLeft();var g=a.my[0]==="left"?-a.elemWidth:a.my[0]==="right"?a.elemWidth:0,e=a.at[0]==="left"?a.targetWidth:-a.targetWidth,h=-2*a.offset[0];b.left+= -a.collisionPosition.left<0?g+e+h:d>0?g+e+h:0}},top:function(b,a){if(a.at[1]!=="center"){var d=c(window);d=a.collisionPosition.top+a.collisionHeight-d.height()-d.scrollTop();var g=a.my[1]==="top"?-a.elemHeight:a.my[1]==="bottom"?a.elemHeight:0,e=a.at[1]==="top"?a.targetHeight:-a.targetHeight,h=-2*a.offset[1];b.top+=a.collisionPosition.top<0?g+e+h:d>0?g+e+h:0}}}};if(!c.offset.setOffset){c.offset.setOffset=function(b,a){if(/static/.test(c.curCSS(b,"position")))b.style.position="relative";var d=c(b), -g=d.offset(),e=parseInt(c.curCSS(b,"top",true),10)||0,h=parseInt(c.curCSS(b,"left",true),10)||0;g={top:a.top-g.top+e,left:a.left-g.left+h};"using"in a?a.using.call(b,g):d.css(g)};c.fn.offset=function(b){var a=this[0];if(!a||!a.ownerDocument)return null;if(b)return this.each(function(){c.offset.setOffset(this,b)});return u.call(this)}}})(jQuery); -;/* - * jQuery UI Draggable 1.8.16 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Draggables - * - * Depends: - * jquery.ui.core.js - * jquery.ui.mouse.js - * jquery.ui.widget.js - */ -(function(d){d.widget("ui.draggable",d.ui.mouse,{widgetEventPrefix:"drag",options:{addClasses:true,appendTo:"parent",axis:false,connectToSortable:false,containment:false,cursor:"auto",cursorAt:false,grid:false,handle:false,helper:"original",iframeFix:false,opacity:false,refreshPositions:false,revert:false,revertDuration:500,scope:"default",scroll:true,scrollSensitivity:20,scrollSpeed:20,snap:false,snapMode:"both",snapTolerance:20,stack:false,zIndex:false},_create:function(){if(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")){this.element.removeData("draggable").unbind(".draggable").removeClass("ui-draggable ui-draggable-dragging ui-draggable-disabled");this._mouseDestroy();return this}},_mouseCapture:function(a){var b= -this.options;if(this.helper||b.disabled||d(a.target).is(".ui-resizable-handle"))return false;this.handle=this._getHandle(a);if(!this.handle)return false;if(b.iframeFix)d(b.iframeFix===true?"iframe":b.iframeFix).each(function(){d('
    ').css({width:this.offsetWidth+"px",height:this.offsetHeight+"px",position:"absolute",opacity:"0.001",zIndex:1E3}).css(d(this).offset()).appendTo("body")});return true},_mouseStart:function(a){var b=this.options; -this.helper=this._createHelper(a);this._cacheHelperProportions();if(d.ui.ddmanager)d.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};d.extend(this.offset,{click:{left:a.pageX-this.offset.left,top:a.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()}); -this.originalPosition=this.position=this._generatePosition(a);this.originalPageX=a.pageX;this.originalPageY=a.pageY;b.cursorAt&&this._adjustOffsetFromHelper(b.cursorAt);b.containment&&this._setContainment();if(this._trigger("start",a)===false){this._clear();return false}this._cacheHelperProportions();d.ui.ddmanager&&!b.dropBehaviour&&d.ui.ddmanager.prepareOffsets(this,a);this.helper.addClass("ui-draggable-dragging");this._mouseDrag(a,true);d.ui.ddmanager&&d.ui.ddmanager.dragStart(this,a);return true}, -_mouseDrag:function(a,b){this.position=this._generatePosition(a);this.positionAbs=this._convertPositionTo("absolute");if(!b){b=this._uiHash();if(this._trigger("drag",a,b)===false){this._mouseUp({});return false}this.position=b.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";d.ui.ddmanager&&d.ui.ddmanager.drag(this,a);return false},_mouseStop:function(a){var b= -false;if(d.ui.ddmanager&&!this.options.dropBehaviour)b=d.ui.ddmanager.drop(this,a);if(this.dropped){b=this.dropped;this.dropped=false}if((!this.element[0]||!this.element[0].parentNode)&&this.options.helper=="original")return false;if(this.options.revert=="invalid"&&!b||this.options.revert=="valid"&&b||this.options.revert===true||d.isFunction(this.options.revert)&&this.options.revert.call(this.element,b)){var c=this;d(this.helper).animate(this.originalPosition,parseInt(this.options.revertDuration, -10),function(){c._trigger("stop",a)!==false&&c._clear()})}else this._trigger("stop",a)!==false&&this._clear();return false},_mouseUp:function(a){this.options.iframeFix===true&&d("div.ui-draggable-iframeFix").each(function(){this.parentNode.removeChild(this)});d.ui.ddmanager&&d.ui.ddmanager.dragStop(this,a);return d.ui.mouse.prototype._mouseUp.call(this,a)},cancel:function(){this.helper.is(".ui-draggable-dragging")?this._mouseUp({}):this._clear();return this},_getHandle:function(a){var b=!this.options.handle|| -!d(this.options.handle,this.element).length?true:false;d(this.options.handle,this.element).find("*").andSelf().each(function(){if(this==a.target)b=true});return b},_createHelper:function(a){var b=this.options;a=d.isFunction(b.helper)?d(b.helper.apply(this.element[0],[a])):b.helper=="clone"?this.element.clone().removeAttr("id"):this.element;a.parents("body").length||a.appendTo(b.appendTo=="parent"?this.element[0].parentNode:b.appendTo);a[0]!=this.element[0]&&!/(fixed|absolute)/.test(a.css("position"))&& -a.css("position","absolute");return a},_adjustOffsetFromHelper:function(a){if(typeof a=="string")a=a.split(" ");if(d.isArray(a))a={left:+a[0],top:+a[1]||0};if("left"in a)this.offset.click.left=a.left+this.margins.left;if("right"in a)this.offset.click.left=this.helperProportions.width-a.right+this.margins.left;if("top"in a)this.offset.click.top=a.top+this.margins.top;if("bottom"in a)this.offset.click.top=this.helperProportions.height-a.bottom+this.margins.top},_getParentOffset:function(){this.offsetParent= -this.helper.offsetParent();var a=this.offsetParent.offset();if(this.cssPosition=="absolute"&&this.scrollParent[0]!=document&&d.ui.contains(this.scrollParent[0],this.offsetParent[0])){a.left+=this.scrollParent.scrollLeft();a.top+=this.scrollParent.scrollTop()}if(this.offsetParent[0]==document.body||this.offsetParent[0].tagName&&this.offsetParent[0].tagName.toLowerCase()=="html"&&d.browser.msie)a={top:0,left:0};return{top:a.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:a.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()}}else 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 a=this.options;if(a.containment=="parent")a.containment=this.helper[0].parentNode;if(a.containment=="document"||a.containment=="window")this.containment=[a.containment=="document"?0:d(window).scrollLeft()-this.offset.relative.left-this.offset.parent.left,a.containment=="document"?0:d(window).scrollTop()-this.offset.relative.top-this.offset.parent.top, -(a.containment=="document"?0:d(window).scrollLeft())+d(a.containment=="document"?document:window).width()-this.helperProportions.width-this.margins.left,(a.containment=="document"?0:d(window).scrollTop())+(d(a.containment=="document"?document:window).height()||document.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top];if(!/^(document|window|parent)$/.test(a.containment)&&a.containment.constructor!=Array){a=d(a.containment);var b=a[0];if(b){a.offset();var c=d(b).css("overflow")!= -"hidden";this.containment=[(parseInt(d(b).css("borderLeftWidth"),10)||0)+(parseInt(d(b).css("paddingLeft"),10)||0),(parseInt(d(b).css("borderTopWidth"),10)||0)+(parseInt(d(b).css("paddingTop"),10)||0),(c?Math.max(b.scrollWidth,b.offsetWidth):b.offsetWidth)-(parseInt(d(b).css("borderLeftWidth"),10)||0)-(parseInt(d(b).css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left-this.margins.right,(c?Math.max(b.scrollHeight,b.offsetHeight):b.offsetHeight)-(parseInt(d(b).css("borderTopWidth"), -10)||0)-(parseInt(d(b).css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top-this.margins.bottom];this.relative_container=a}}else if(a.containment.constructor==Array)this.containment=a.containment},_convertPositionTo:function(a,b){if(!b)b=this.position;a=a=="absolute"?1:-1;var c=this.cssPosition=="absolute"&&!(this.scrollParent[0]!=document&&d.ui.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scrollParent,f=/(html|body)/i.test(c[0].tagName);return{top:b.top+ -this.offset.relative.top*a+this.offset.parent.top*a-(d.browser.safari&&d.browser.version<526&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollTop():f?0:c.scrollTop())*a),left:b.left+this.offset.relative.left*a+this.offset.parent.left*a-(d.browser.safari&&d.browser.version<526&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollLeft():f?0:c.scrollLeft())*a)}},_generatePosition:function(a){var b=this.options,c=this.cssPosition=="absolute"&& -!(this.scrollParent[0]!=document&&d.ui.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scrollParent,f=/(html|body)/i.test(c[0].tagName),e=a.pageX,h=a.pageY;if(this.originalPosition){var g;if(this.containment){if(this.relative_container){g=this.relative_container.offset();g=[this.containment[0]+g.left,this.containment[1]+g.top,this.containment[2]+g.left,this.containment[3]+g.top]}else g=this.containment;if(a.pageX-this.offset.click.leftg[2])e=g[2]+this.offset.click.left;if(a.pageY-this.offset.click.top>g[3])h=g[3]+this.offset.click.top}if(b.grid){h=b.grid[1]?this.originalPageY+Math.round((h-this.originalPageY)/b.grid[1])*b.grid[1]:this.originalPageY;h=g?!(h-this.offset.click.topg[3])?h:!(h-this.offset.click.topg[2])?e:!(e-this.offset.click.left=0;i--){var j=c.snapElements[i].left,l=j+c.snapElements[i].width,k=c.snapElements[i].top,m=k+c.snapElements[i].height;if(j-e=j&&f<=l||h>=j&&h<=l||fl)&&(e>= -i&&e<=k||g>=i&&g<=k||ek);default:return false}};d.ui.ddmanager={current:null,droppables:{"default":[]},prepareOffsets:function(a,b){var c=d.ui.ddmanager.droppables[a.options.scope]||[],e=b?b.type:null,g=(a.currentItem||a.element).find(":data(droppable)").andSelf(),f=0;a:for(;f
    ').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=true;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=a.handles||(!e(".ui-resizable-handle",this.element).length?"e,s,se":{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"});if(this.handles.constructor==String){if(this.handles=="all")this.handles="n,e,s,w,se,sw,ne,nw";var c=this.handles.split(",");this.handles={};for(var d=0;d
    ');/sw|se|ne|nw/.test(f)&&g.css({zIndex:++a.zIndex});"se"==f&&g.addClass("ui-icon ui-icon-gripsmall-diagonal-se");this.handles[f]=".ui-resizable-"+f;this.element.append(g)}}this._renderAxis=function(h){h=h||this.element;for(var i in this.handles){if(this.handles[i].constructor== -String)this.handles[i]=e(this.handles[i],this.element).show();if(this.elementIsWrapper&&this.originalElement[0].nodeName.match(/textarea|input|select|button/i)){var j=e(this.handles[i],this.element),l=0;l=/sw|ne|nw|se|n|s/.test(i)?j.outerHeight():j.outerWidth();j=["padding",/ne|nw|n/.test(i)?"Top":/se|sw|s/.test(i)?"Bottom":/^e$/.test(i)?"Right":"Left"].join("");h.css(j,l);this._proportionallyResize()}e(this.handles[i])}};this._renderAxis(this.element);this._handles=e(".ui-resizable-handle",this.element).disableSelection(); -this._handles.mouseover(function(){if(!b.resizing){if(this.className)var h=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i);b.axis=h&&h[1]?h[1]:"se"}});if(a.autoHide){this._handles.hide();e(this.element).addClass("ui-resizable-autohide").hover(function(){if(!a.disabled){e(this).removeClass("ui-resizable-autohide");b._handles.show()}},function(){if(!a.disabled)if(!b.resizing){e(this).addClass("ui-resizable-autohide");b._handles.hide()}})}this._mouseInit()},destroy:function(){this._mouseDestroy(); -var b=function(c){e(c).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 a=this.element;a.after(this.originalElement.css({position:a.css("position"),width:a.outerWidth(),height:a.outerHeight(),top:a.css("top"),left:a.css("left")})).remove()}this.originalElement.css("resize",this.originalResizeStyle);b(this.originalElement);return this},_mouseCapture:function(b){var a= -false;for(var c in this.handles)if(e(this.handles[c])[0]==b.target)a=true;return!this.options.disabled&&a},_mouseStart:function(b){var a=this.options,c=this.element.position(),d=this.element;this.resizing=true;this.documentScroll={top:e(document).scrollTop(),left:e(document).scrollLeft()};if(d.is(".ui-draggable")||/absolute/.test(d.css("position")))d.css({position:"absolute",top:c.top,left:c.left});e.browser.opera&&/relative/.test(d.css("position"))&&d.css({position:"relative",top:"auto",left:"auto"}); -this._renderProxy();c=m(this.helper.css("left"));var f=m(this.helper.css("top"));if(a.containment){c+=e(a.containment).scrollLeft()||0;f+=e(a.containment).scrollTop()||0}this.offset=this.helper.offset();this.position={left:c,top:f};this.size=this._helper?{width:d.outerWidth(),height:d.outerHeight()}:{width:d.width(),height:d.height()};this.originalSize=this._helper?{width:d.outerWidth(),height:d.outerHeight()}:{width:d.width(),height:d.height()};this.originalPosition={left:c,top:f};this.sizeDiff= -{width:d.outerWidth()-d.width(),height:d.outerHeight()-d.height()};this.originalMousePosition={left:b.pageX,top:b.pageY};this.aspectRatio=typeof a.aspectRatio=="number"?a.aspectRatio:this.originalSize.width/this.originalSize.height||1;a=e(".ui-resizable-"+this.axis).css("cursor");e("body").css("cursor",a=="auto"?this.axis+"-resize":a);d.addClass("ui-resizable-resizing");this._propagate("start",b);return true},_mouseDrag:function(b){var a=this.helper,c=this.originalMousePosition,d=this._change[this.axis]; -if(!d)return false;c=d.apply(this,[b,b.pageX-c.left||0,b.pageY-c.top||0]);this._updateVirtualBoundaries(b.shiftKey);if(this._aspectRatio||b.shiftKey)c=this._updateRatio(c,b);c=this._respectSize(c,b);this._propagate("resize",b);a.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(c);this._trigger("resize",b,this.ui());return false}, -_mouseStop:function(b){this.resizing=false;var a=this.options,c=this;if(this._helper){var d=this._proportionallyResizeElements,f=d.length&&/textarea/i.test(d[0].nodeName);d=f&&e.ui.hasScroll(d[0],"left")?0:c.sizeDiff.height;f=f?0:c.sizeDiff.width;f={width:c.helper.width()-f,height:c.helper.height()-d};d=parseInt(c.element.css("left"),10)+(c.position.left-c.originalPosition.left)||null;var g=parseInt(c.element.css("top"),10)+(c.position.top-c.originalPosition.top)||null;a.animate||this.element.css(e.extend(f, -{top:g,left:d}));c.helper.height(c.size.height);c.helper.width(c.size.width);this._helper&&!a.animate&&this._proportionallyResize()}e("body").css("cursor","auto");this.element.removeClass("ui-resizable-resizing");this._propagate("stop",b);this._helper&&this.helper.remove();return false},_updateVirtualBoundaries:function(b){var a=this.options,c,d,f;a={minWidth:k(a.minWidth)?a.minWidth:0,maxWidth:k(a.maxWidth)?a.maxWidth:Infinity,minHeight:k(a.minHeight)?a.minHeight:0,maxHeight:k(a.maxHeight)?a.maxHeight: -Infinity};if(this._aspectRatio||b){b=a.minHeight*this.aspectRatio;d=a.minWidth/this.aspectRatio;c=a.maxHeight*this.aspectRatio;f=a.maxWidth/this.aspectRatio;if(b>a.minWidth)a.minWidth=b;if(d>a.minHeight)a.minHeight=d;if(cb.width,h=k(b.height)&&a.minHeight&&a.minHeight>b.height;if(g)b.width=a.minWidth;if(h)b.height=a.minHeight;if(d)b.width=a.maxWidth;if(f)b.height=a.maxHeight;var i=this.originalPosition.left+this.originalSize.width,j=this.position.top+this.size.height,l=/sw|nw|w/.test(c);c=/nw|ne|n/.test(c);if(g&&l)b.left=i-a.minWidth;if(d&&l)b.left=i-a.maxWidth;if(h&&c)b.top=j-a.minHeight;if(f&&c)b.top=j-a.maxHeight;if((a=!b.width&&!b.height)&&!b.left&&b.top)b.top=null;else if(a&&!b.top&&b.left)b.left= -null;return b},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var b=this.helper||this.element,a=0;a');var a=e.browser.msie&&e.browser.version<7,c=a?1:0;a=a?2:-1;this.helper.addClass(this._helper).css({width:this.element.outerWidth()+ -a,height:this.element.outerHeight()+a,position:"absolute",left:this.elementOffset.left-c+"px",top:this.elementOffset.top-c+"px",zIndex:++b.zIndex});this.helper.appendTo("body").disableSelection()}else this.helper=this.element},_change:{e:function(b,a){return{width:this.originalSize.width+a}},w:function(b,a){return{left:this.originalPosition.left+a,width:this.originalSize.width-a}},n:function(b,a,c){return{top:this.originalPosition.top+c,height:this.originalSize.height-c}},s:function(b,a,c){return{height:this.originalSize.height+ -c}},se:function(b,a,c){return e.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[b,a,c]))},sw:function(b,a,c){return e.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[b,a,c]))},ne:function(b,a,c){return e.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[b,a,c]))},nw:function(b,a,c){return e.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[b,a,c]))}},_propagate:function(b,a){e.ui.plugin.call(this,b,[a,this.ui()]); -b!="resize"&&this._trigger(b,a,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.extend(e.ui.resizable,{version:"1.8.16"});e.ui.plugin.add("resizable","alsoResize",{start:function(){var b=e(this).data("resizable").options,a=function(c){e(c).each(function(){var d=e(this);d.data("resizable-alsoresize",{width:parseInt(d.width(), -10),height:parseInt(d.height(),10),left:parseInt(d.css("left"),10),top:parseInt(d.css("top"),10),position:d.css("position")})})};if(typeof b.alsoResize=="object"&&!b.alsoResize.parentNode)if(b.alsoResize.length){b.alsoResize=b.alsoResize[0];a(b.alsoResize)}else e.each(b.alsoResize,function(c){a(c)});else a(b.alsoResize)},resize:function(b,a){var c=e(this).data("resizable");b=c.options;var d=c.originalSize,f=c.originalPosition,g={height:c.size.height-d.height||0,width:c.size.width-d.width||0,top:c.position.top- -f.top||0,left:c.position.left-f.left||0},h=function(i,j){e(i).each(function(){var l=e(this),q=e(this).data("resizable-alsoresize"),p={},r=j&&j.length?j:l.parents(a.originalElement[0]).length?["width","height"]:["width","height","top","left"];e.each(r,function(n,o){if((n=(q[o]||0)+(g[o]||0))&&n>=0)p[o]=n||null});if(e.browser.opera&&/relative/.test(l.css("position"))){c._revertToRelativePosition=true;l.css({position:"absolute",top:"auto",left:"auto"})}l.css(p)})};typeof b.alsoResize=="object"&&!b.alsoResize.nodeType? -e.each(b.alsoResize,function(i,j){h(i,j)}):h(b.alsoResize)},stop:function(){var b=e(this).data("resizable"),a=b.options,c=function(d){e(d).each(function(){var f=e(this);f.css({position:f.data("resizable-alsoresize").position})})};if(b._revertToRelativePosition){b._revertToRelativePosition=false;typeof a.alsoResize=="object"&&!a.alsoResize.nodeType?e.each(a.alsoResize,function(d){c(d)}):c(a.alsoResize)}e(this).removeData("resizable-alsoresize")}});e.ui.plugin.add("resizable","animate",{stop:function(b){var a= -e(this).data("resizable"),c=a.options,d=a._proportionallyResizeElements,f=d.length&&/textarea/i.test(d[0].nodeName),g=f&&e.ui.hasScroll(d[0],"left")?0:a.sizeDiff.height;f={width:a.size.width-(f?0:a.sizeDiff.width),height:a.size.height-g};g=parseInt(a.element.css("left"),10)+(a.position.left-a.originalPosition.left)||null;var h=parseInt(a.element.css("top"),10)+(a.position.top-a.originalPosition.top)||null;a.element.animate(e.extend(f,h&&g?{top:h,left:g}:{}),{duration:c.animateDuration,easing:c.animateEasing, -step:function(){var i={width:parseInt(a.element.css("width"),10),height:parseInt(a.element.css("height"),10),top:parseInt(a.element.css("top"),10),left:parseInt(a.element.css("left"),10)};d&&d.length&&e(d[0]).css({width:i.width,height:i.height});a._updateCache(i);a._propagate("resize",b)}})}});e.ui.plugin.add("resizable","containment",{start:function(){var b=e(this).data("resizable"),a=b.element,c=b.options.containment;if(a=c instanceof e?c.get(0):/parent/.test(c)?a.parent().get(0):c){b.containerElement= -e(a);if(/document/.test(c)||c==document){b.containerOffset={left:0,top:0};b.containerPosition={left:0,top:0};b.parentData={element:e(document),left:0,top:0,width:e(document).width(),height:e(document).height()||document.body.parentNode.scrollHeight}}else{var d=e(a),f=[];e(["Top","Right","Left","Bottom"]).each(function(i,j){f[i]=m(d.css("padding"+j))});b.containerOffset=d.offset();b.containerPosition=d.position();b.containerSize={height:d.innerHeight()-f[3],width:d.innerWidth()-f[1]};c=b.containerOffset; -var g=b.containerSize.height,h=b.containerSize.width;h=e.ui.hasScroll(a,"left")?a.scrollWidth:h;g=e.ui.hasScroll(a)?a.scrollHeight:g;b.parentData={element:a,left:c.left,top:c.top,width:h,height:g}}}},resize:function(b){var a=e(this).data("resizable"),c=a.options,d=a.containerOffset,f=a.position;b=a._aspectRatio||b.shiftKey;var g={top:0,left:0},h=a.containerElement;if(h[0]!=document&&/static/.test(h.css("position")))g=d;if(f.left<(a._helper?d.left:0)){a.size.width+=a._helper?a.position.left-d.left: -a.position.left-g.left;if(b)a.size.height=a.size.width/c.aspectRatio;a.position.left=c.helper?d.left:0}if(f.top<(a._helper?d.top:0)){a.size.height+=a._helper?a.position.top-d.top:a.position.top;if(b)a.size.width=a.size.height*c.aspectRatio;a.position.top=a._helper?d.top:0}a.offset.left=a.parentData.left+a.position.left;a.offset.top=a.parentData.top+a.position.top;c=Math.abs((a._helper?a.offset.left-g.left:a.offset.left-g.left)+a.sizeDiff.width);d=Math.abs((a._helper?a.offset.top-g.top:a.offset.top- -d.top)+a.sizeDiff.height);f=a.containerElement.get(0)==a.element.parent().get(0);g=/relative|absolute/.test(a.containerElement.css("position"));if(f&&g)c-=a.parentData.left;if(c+a.size.width>=a.parentData.width){a.size.width=a.parentData.width-c;if(b)a.size.height=a.size.width/a.aspectRatio}if(d+a.size.height>=a.parentData.height){a.size.height=a.parentData.height-d;if(b)a.size.width=a.size.height*a.aspectRatio}},stop:function(){var b=e(this).data("resizable"),a=b.options,c=b.containerOffset,d=b.containerPosition, -f=b.containerElement,g=e(b.helper),h=g.offset(),i=g.outerWidth()-b.sizeDiff.width;g=g.outerHeight()-b.sizeDiff.height;b._helper&&!a.animate&&/relative/.test(f.css("position"))&&e(this).css({left:h.left-d.left-c.left,width:i,height:g});b._helper&&!a.animate&&/static/.test(f.css("position"))&&e(this).css({left:h.left-d.left-c.left,width:i,height:g})}});e.ui.plugin.add("resizable","ghost",{start:function(){var b=e(this).data("resizable"),a=b.options,c=b.size;b.ghost=b.originalElement.clone();b.ghost.css({opacity:0.25, -display:"block",position:"relative",height:c.height,width:c.width,margin:0,left:0,top:0}).addClass("ui-resizable-ghost").addClass(typeof a.ghost=="string"?a.ghost:"");b.ghost.appendTo(b.helper)},resize:function(){var b=e(this).data("resizable");b.ghost&&b.ghost.css({position:"relative",height:b.size.height,width:b.size.width})},stop:function(){var b=e(this).data("resizable");b.ghost&&b.helper&&b.helper.get(0).removeChild(b.ghost.get(0))}});e.ui.plugin.add("resizable","grid",{resize:function(){var b= -e(this).data("resizable"),a=b.options,c=b.size,d=b.originalSize,f=b.originalPosition,g=b.axis;a.grid=typeof a.grid=="number"?[a.grid,a.grid]:a.grid;var h=Math.round((c.width-d.width)/(a.grid[0]||1))*(a.grid[0]||1);a=Math.round((c.height-d.height)/(a.grid[1]||1))*(a.grid[1]||1);if(/^(se|s|e)$/.test(g)){b.size.width=d.width+h;b.size.height=d.height+a}else if(/^(ne)$/.test(g)){b.size.width=d.width+h;b.size.height=d.height+a;b.position.top=f.top-a}else{if(/^(sw)$/.test(g)){b.size.width=d.width+h;b.size.height= -d.height+a}else{b.size.width=d.width+h;b.size.height=d.height+a;b.position.top=f.top-a}b.position.left=f.left-h}}});var m=function(b){return parseInt(b,10)||0},k=function(b){return!isNaN(parseInt(b,10))}})(jQuery); -;/* - * jQuery UI Selectable 1.8.16 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Selectables - * - * Depends: - * jquery.ui.core.js - * jquery.ui.mouse.js - * jquery.ui.widget.js - */ -(function(e){e.widget("ui.selectable",e.ui.mouse,{options:{appendTo:"body",autoRefresh:true,distance:0,filter:"*",tolerance:"touch"},_create:function(){var c=this;this.element.addClass("ui-selectable");this.dragged=false;var f;this.refresh=function(){f=e(c.options.filter,c.element[0]);f.each(function(){var d=e(this),b=d.offset();e.data(this,"selectable-item",{element:this,$element:d,left:b.left,top:b.top,right:b.left+d.outerWidth(),bottom:b.top+d.outerHeight(),startselected:false,selected:d.hasClass("ui-selected"), -selecting:d.hasClass("ui-selecting"),unselecting:d.hasClass("ui-unselecting")})})};this.refresh();this.selectees=f.addClass("ui-selectee");this._mouseInit();this.helper=e("
    ")},destroy:function(){this.selectees.removeClass("ui-selectee").removeData("selectable-item");this.element.removeClass("ui-selectable ui-selectable-disabled").removeData("selectable").unbind(".selectable");this._mouseDestroy();return this},_mouseStart:function(c){var f=this;this.opos=[c.pageX, -c.pageY];if(!this.options.disabled){var d=this.options;this.selectees=e(d.filter,this.element[0]);this._trigger("start",c);e(d.appendTo).append(this.helper);this.helper.css({left:c.clientX,top:c.clientY,width:0,height:0});d.autoRefresh&&this.refresh();this.selectees.filter(".ui-selected").each(function(){var b=e.data(this,"selectable-item");b.startselected=true;if(!c.metaKey){b.$element.removeClass("ui-selected");b.selected=false;b.$element.addClass("ui-unselecting");b.unselecting=true;f._trigger("unselecting", -c,{unselecting:b.element})}});e(c.target).parents().andSelf().each(function(){var b=e.data(this,"selectable-item");if(b){var g=!c.metaKey||!b.$element.hasClass("ui-selected");b.$element.removeClass(g?"ui-unselecting":"ui-selected").addClass(g?"ui-selecting":"ui-unselecting");b.unselecting=!g;b.selecting=g;(b.selected=g)?f._trigger("selecting",c,{selecting:b.element}):f._trigger("unselecting",c,{unselecting:b.element});return false}})}},_mouseDrag:function(c){var f=this;this.dragged=true;if(!this.options.disabled){var d= -this.options,b=this.opos[0],g=this.opos[1],h=c.pageX,i=c.pageY;if(b>h){var j=h;h=b;b=j}if(g>i){j=i;i=g;g=j}this.helper.css({left:b,top:g,width:h-b,height:i-g});this.selectees.each(function(){var a=e.data(this,"selectable-item");if(!(!a||a.element==f.element[0])){var k=false;if(d.tolerance=="touch")k=!(a.left>h||a.righti||a.bottomb&&a.rightg&&a.bottom *",opacity:false,placeholder:false,revert:false,scroll:true,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")):false;this.offset=this.element.offset();this._mouseInit()},destroy:function(){this.element.removeClass("ui-sortable ui-sortable-disabled").removeData("sortable").unbind(".sortable");this._mouseDestroy();for(var a=this.items.length-1;a>=0;a--)this.items[a].item.removeData("sortable-item");return this},_setOption:function(a,b){if(a=== -"disabled"){this.options[a]=b;this.widget()[b?"addClass":"removeClass"]("ui-sortable-disabled")}else d.Widget.prototype._setOption.apply(this,arguments)},_mouseCapture:function(a,b){if(this.reverting)return false;if(this.options.disabled||this.options.type=="static")return false;this._refreshItems(a);var c=null,e=this;d(a.target).parents().each(function(){if(d.data(this,"sortable-item")==e){c=d(this);return false}});if(d.data(a.target,"sortable-item")==e)c=d(a.target);if(!c)return false;if(this.options.handle&& -!b){var f=false;d(this.options.handle,c).find("*").andSelf().each(function(){if(this==a.target)f=true});if(!f)return false}this.currentItem=c;this._removeCurrentsFromItems();return true},_mouseStart:function(a,b,c){b=this.options;var e=this;this.currentContainer=this;this.refreshPositions();this.helper=this._createHelper(a);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");d.extend(this.offset,{click:{left:a.pageX-this.offset.left,top:a.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()});this.originalPosition=this._generatePosition(a);this.originalPageX=a.pageX;this.originalPageY=a.pageY;b.cursorAt&&this._adjustOffsetFromHelper(b.cursorAt);this.domPosition={prev:this.currentItem.prev()[0],parent:this.currentItem.parent()[0]}; -this.helper[0]!=this.currentItem[0]&&this.currentItem.hide();this._createPlaceholder();b.containment&&this._setContainment();if(b.cursor){if(d("body").css("cursor"))this._storedCursor=d("body").css("cursor");d("body").css("cursor",b.cursor)}if(b.opacity){if(this.helper.css("opacity"))this._storedOpacity=this.helper.css("opacity");this.helper.css("opacity",b.opacity)}if(b.zIndex){if(this.helper.css("zIndex"))this._storedZIndex=this.helper.css("zIndex");this.helper.css("zIndex",b.zIndex)}if(this.scrollParent[0]!= -document&&this.scrollParent[0].tagName!="HTML")this.overflowOffset=this.scrollParent.offset();this._trigger("start",a,this._uiHash());this._preserveHelperProportions||this._cacheHelperProportions();if(!c)for(c=this.containers.length-1;c>=0;c--)this.containers[c]._trigger("activate",a,e._uiHash(this));if(d.ui.ddmanager)d.ui.ddmanager.current=this;d.ui.ddmanager&&!b.dropBehaviour&&d.ui.ddmanager.prepareOffsets(this,a);this.dragging=true;this.helper.addClass("ui-sortable-helper");this._mouseDrag(a); -return true},_mouseDrag:function(a){this.position=this._generatePosition(a);this.positionAbs=this._convertPositionTo("absolute");if(!this.lastPositionAbs)this.lastPositionAbs=this.positionAbs;if(this.options.scroll){var b=this.options,c=false;if(this.scrollParent[0]!=document&&this.scrollParent[0].tagName!="HTML"){if(this.overflowOffset.top+this.scrollParent[0].offsetHeight-a.pageY=0;b--){c=this.items[b];var e=c.item[0],f=this._intersectsWithPointer(c);if(f)if(e!=this.currentItem[0]&&this.placeholder[f==1?"next":"prev"]()[0]!=e&&!d.ui.contains(this.placeholder[0],e)&&(this.options.type=="semi-dynamic"?!d.ui.contains(this.element[0], -e):true)){this.direction=f==1?"down":"up";if(this.options.tolerance=="pointer"||this._intersectsWithSides(c))this._rearrange(a,c);else break;this._trigger("change",a,this._uiHash());break}}this._contactContainers(a);d.ui.ddmanager&&d.ui.ddmanager.drag(this,a);this._trigger("sort",a,this._uiHash());this.lastPositionAbs=this.positionAbs;return false},_mouseStop:function(a,b){if(a){d.ui.ddmanager&&!this.options.dropBehaviour&&d.ui.ddmanager.drop(this,a);if(this.options.revert){var c=this;b=c.placeholder.offset(); -c.reverting=true;d(this.helper).animate({left:b.left-this.offset.parent.left-c.margins.left+(this.offsetParent[0]==document.body?0:this.offsetParent[0].scrollLeft),top:b.top-this.offset.parent.top-c.margins.top+(this.offsetParent[0]==document.body?0:this.offsetParent[0].scrollTop)},parseInt(this.options.revert,10)||500,function(){c._clear(a)})}else this._clear(a,b);return false}},cancel:function(){var a=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 b=this.containers.length-1;b>=0;b--){this.containers[b]._trigger("deactivate",null,a._uiHash(this));if(this.containers[b].containerCache.over){this.containers[b]._trigger("out",null,a._uiHash(this));this.containers[b].containerCache.over=0}}}if(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();d.extend(this,{helper:null, -dragging:false,reverting:false,_noFinalSort:null});this.domPosition.prev?d(this.domPosition.prev).after(this.currentItem):d(this.domPosition.parent).prepend(this.currentItem)}return this},serialize:function(a){var b=this._getItemsAsjQuery(a&&a.connected),c=[];a=a||{};d(b).each(function(){var e=(d(a.item||this).attr(a.attribute||"id")||"").match(a.expression||/(.+)[-=_](.+)/);if(e)c.push((a.key||e[1]+"[]")+"="+(a.key&&a.expression?e[1]:e[2]))});!c.length&&a.key&&c.push(a.key+"=");return c.join("&")}, -toArray:function(a){var b=this._getItemsAsjQuery(a&&a.connected),c=[];a=a||{};b.each(function(){c.push(d(a.item||this).attr(a.attribute||"id")||"")});return c},_intersectsWith:function(a){var b=this.positionAbs.left,c=b+this.helperProportions.width,e=this.positionAbs.top,f=e+this.helperProportions.height,g=a.left,h=g+a.width,i=a.top,k=i+a.height,j=this.offset.click.top,l=this.offset.click.left;j=e+j>i&&e+jg&&b+la[this.floating?"width":"height"]?j:g0?"down":"up")},_getDragHorizontalDirection:function(){var a=this.positionAbs.left-this.lastPositionAbs.left;return a!=0&&(a>0?"right":"left")},refresh:function(a){this._refreshItems(a);this.refreshPositions();return this},_connectWith:function(){var a=this.options;return a.connectWith.constructor==String?[a.connectWith]:a.connectWith},_getItemsAsjQuery:function(a){var b=[],c=[],e=this._connectWith(); -if(e&&a)for(a=e.length-1;a>=0;a--)for(var f=d(e[a]),g=f.length-1;g>=0;g--){var h=d.data(f[g],"sortable");if(h&&h!=this&&!h.options.disabled)c.push([d.isFunction(h.options.items)?h.options.items.call(h.element):d(h.options.items,h.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),h])}c.push([d.isFunction(this.options.items)?this.options.items.call(this.element,null,{options:this.options,item:this.currentItem}):d(this.options.items,this.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"), -this]);for(a=c.length-1;a>=0;a--)c[a][0].each(function(){b.push(this)});return d(b)},_removeCurrentsFromItems:function(){for(var a=this.currentItem.find(":data(sortable-item)"),b=0;b=0;f--)for(var g=d(e[f]),h=g.length-1;h>=0;h--){var i=d.data(g[h],"sortable");if(i&&i!=this&&!i.options.disabled){c.push([d.isFunction(i.options.items)?i.options.items.call(i.element[0],a,{item:this.currentItem}):d(i.options.items,i.element),i]);this.containers.push(i)}}for(f=c.length-1;f>=0;f--){a=c[f][1];e=c[f][0];h=0;for(g=e.length;h=0;b--){var c=this.items[b];if(!(c.instance!=this.currentContainer&&this.currentContainer&&c.item[0]!=this.currentItem[0])){var e=this.options.toleranceElement?d(this.options.toleranceElement,c.item):c.item;if(!a){c.width=e.outerWidth();c.height=e.outerHeight()}e=e.offset();c.left=e.left;c.top=e.top}}if(this.options.custom&&this.options.custom.refreshContainers)this.options.custom.refreshContainers.call(this);else for(b= -this.containers.length-1;b>=0;b--){e=this.containers[b].element.offset();this.containers[b].containerCache.left=e.left;this.containers[b].containerCache.top=e.top;this.containers[b].containerCache.width=this.containers[b].element.outerWidth();this.containers[b].containerCache.height=this.containers[b].element.outerHeight()}return this},_createPlaceholder:function(a){var b=a||this,c=b.options;if(!c.placeholder||c.placeholder.constructor==String){var e=c.placeholder;c.placeholder={element:function(){var f= -d(document.createElement(b.currentItem[0].nodeName)).addClass(e||b.currentItem[0].className+" ui-sortable-placeholder").removeClass("ui-sortable-helper")[0];if(!e)f.style.visibility="hidden";return f},update:function(f,g){if(!(e&&!c.forcePlaceholderSize)){g.height()||g.height(b.currentItem.innerHeight()-parseInt(b.currentItem.css("paddingTop")||0,10)-parseInt(b.currentItem.css("paddingBottom")||0,10));g.width()||g.width(b.currentItem.innerWidth()-parseInt(b.currentItem.css("paddingLeft")||0,10)-parseInt(b.currentItem.css("paddingRight")|| -0,10))}}}}b.placeholder=d(c.placeholder.element.call(b.element,b.currentItem));b.currentItem.after(b.placeholder);c.placeholder.update(b,b.placeholder)},_contactContainers:function(a){for(var b=null,c=null,e=this.containers.length-1;e>=0;e--)if(!d.ui.contains(this.currentItem[0],this.containers[e].element[0]))if(this._intersectsWith(this.containers[e].containerCache)){if(!(b&&d.ui.contains(this.containers[e].element[0],b.element[0]))){b=this.containers[e];c=e}}else if(this.containers[e].containerCache.over){this.containers[e]._trigger("out", -a,this._uiHash(this));this.containers[e].containerCache.over=0}if(b)if(this.containers.length===1){this.containers[c]._trigger("over",a,this._uiHash(this));this.containers[c].containerCache.over=1}else if(this.currentContainer!=this.containers[c]){b=1E4;e=null;for(var f=this.positionAbs[this.containers[c].floating?"left":"top"],g=this.items.length-1;g>=0;g--)if(d.ui.contains(this.containers[c].element[0],this.items[g].item[0])){var h=this.items[g][this.containers[c].floating?"left":"top"];if(Math.abs(h- -f)this.containment[2])f=this.containment[2]+this.offset.click.left;if(a.pageY-this.offset.click.top>this.containment[3])g=this.containment[3]+this.offset.click.top}if(b.grid){g=this.originalPageY+Math.round((g- -this.originalPageY)/b.grid[1])*b.grid[1];g=this.containment?!(g-this.offset.click.topthis.containment[3])?g:!(g-this.offset.click.topthis.containment[2])?f:!(f-this.offset.click.left=0;e--)if(d.ui.contains(this.containers[e].element[0],this.currentItem[0])&&!b){c.push(function(f){return function(g){f._trigger("receive",g,this._uiHash(this))}}.call(this,this.containers[e]));c.push(function(f){return function(g){f._trigger("update",g,this._uiHash(this))}}.call(this,this.containers[e]))}}for(e=this.containers.length-1;e>=0;e--){b||c.push(function(f){return function(g){f._trigger("deactivate",g,this._uiHash(this))}}.call(this, -this.containers[e]));if(this.containers[e].containerCache.over){c.push(function(f){return function(g){f._trigger("out",g,this._uiHash(this))}}.call(this,this.containers[e]));this.containers[e].containerCache.over=0}}this._storedCursor&&d("body").css("cursor",this._storedCursor);this._storedOpacity&&this.helper.css("opacity",this._storedOpacity);if(this._storedZIndex)this.helper.css("zIndex",this._storedZIndex=="auto"?"":this._storedZIndex);this.dragging=false;if(this.cancelHelperRemoval){if(!b){this._trigger("beforeStop", -a,this._uiHash());for(e=0;e li > :first-child,> :not(li):even",icons:{header:"ui-icon-triangle-1-e",headerSelected:"ui-icon-triangle-1-s"},navigation:false,navigationFilter:function(){return this.href.toLowerCase()===location.href.toLowerCase()}},_create:function(){var a=this,b=a.options;a.running=0;a.element.addClass("ui-accordion ui-widget ui-helper-reset").children("li").addClass("ui-accordion-li-fix"); -a.headers=a.element.find(b.header).addClass("ui-accordion-header ui-helper-reset ui-state-default ui-corner-all").bind("mouseenter.accordion",function(){b.disabled||c(this).addClass("ui-state-hover")}).bind("mouseleave.accordion",function(){b.disabled||c(this).removeClass("ui-state-hover")}).bind("focus.accordion",function(){b.disabled||c(this).addClass("ui-state-focus")}).bind("blur.accordion",function(){b.disabled||c(this).removeClass("ui-state-focus")});a.headers.next().addClass("ui-accordion-content ui-helper-reset ui-widget-content ui-corner-bottom"); -if(b.navigation){var d=a.element.find("a").filter(b.navigationFilter).eq(0);if(d.length){var h=d.closest(".ui-accordion-header");a.active=h.length?h:d.closest(".ui-accordion-content").prev()}}a.active=a._findActive(a.active||b.active).addClass("ui-state-default ui-state-active").toggleClass("ui-corner-all").toggleClass("ui-corner-top");a.active.next().addClass("ui-accordion-content-active");a._createIcons();a.resize();a.element.attr("role","tablist");a.headers.attr("role","tab").bind("keydown.accordion", -function(f){return a._keydown(f)}).next().attr("role","tabpanel");a.headers.not(a.active||"").attr({"aria-expanded":"false","aria-selected":"false",tabIndex:-1}).next().hide();a.active.length?a.active.attr({"aria-expanded":"true","aria-selected":"true",tabIndex:0}):a.headers.eq(0).attr("tabIndex",0);c.browser.safari||a.headers.find("a").attr("tabIndex",-1);b.event&&a.headers.bind(b.event.split(" ").join(".accordion ")+".accordion",function(f){a._clickHandler.call(a,f,this);f.preventDefault()})},_createIcons:function(){var a= -this.options;if(a.icons){c("").addClass("ui-icon "+a.icons.header).prependTo(this.headers);this.active.children(".ui-icon").toggleClass(a.icons.header).toggleClass(a.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 a=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 b=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");if(a.autoHeight||a.fillHeight)b.css("height","");return c.Widget.prototype.destroy.call(this)},_setOption:function(a,b){c.Widget.prototype._setOption.apply(this,arguments);a=="active"&&this.activate(b);if(a=="icons"){this._destroyIcons(); -b&&this._createIcons()}if(a=="disabled")this.headers.add(this.headers.next())[b?"addClass":"removeClass"]("ui-accordion-disabled ui-state-disabled")},_keydown:function(a){if(!(this.options.disabled||a.altKey||a.ctrlKey)){var b=c.ui.keyCode,d=this.headers.length,h=this.headers.index(a.target),f=false;switch(a.keyCode){case b.RIGHT:case b.DOWN:f=this.headers[(h+1)%d];break;case b.LEFT:case b.UP:f=this.headers[(h-1+d)%d];break;case b.SPACE:case b.ENTER:this._clickHandler({target:a.target},a.target); -a.preventDefault()}if(f){c(a.target).attr("tabIndex",-1);c(f).attr("tabIndex",0);f.focus();return false}return true}},resize:function(){var a=this.options,b;if(a.fillSpace){if(c.browser.msie){var d=this.element.parent().css("overflow");this.element.parent().css("overflow","hidden")}b=this.element.parent().height();c.browser.msie&&this.element.parent().css("overflow",d);this.headers.each(function(){b-=c(this).outerHeight(true)});this.headers.next().each(function(){c(this).height(Math.max(0,b-c(this).innerHeight()+ -c(this).height()))}).css("overflow","auto")}else if(a.autoHeight){b=0;this.headers.next().each(function(){b=Math.max(b,c(this).height("").height())}).height(b)}return this},activate:function(a){this.options.active=a;a=this._findActive(a)[0];this._clickHandler({target:a},a);return this},_findActive:function(a){return a?typeof a==="number"?this.headers.filter(":eq("+a+")"):this.headers.not(this.headers.not(a)):a===false?c([]):this.headers.filter(":eq(0)")},_clickHandler:function(a,b){var d=this.options; -if(!d.disabled)if(a.target){a=c(a.currentTarget||b);b=a[0]===this.active[0];d.active=d.collapsible&&b?false:this.headers.index(a);if(!(this.running||!d.collapsible&&b)){var h=this.active;j=a.next();g=this.active.next();e={options:d,newHeader:b&&d.collapsible?c([]):a,oldHeader:this.active,newContent:b&&d.collapsible?c([]):j,oldContent:g};var f=this.headers.index(this.active[0])>this.headers.index(a[0]);this.active=b?c([]):a;this._toggle(j,g,e,b,f);h.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); -if(!b){a.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);a.next().addClass("ui-accordion-content-active")}}}else if(d.collapsible){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 g=this.active.next(), -e={options:d,newHeader:c([]),oldHeader:d.active,newContent:c([]),oldContent:g},j=this.active=c([]);this._toggle(j,g,e)}},_toggle:function(a,b,d,h,f){var g=this,e=g.options;g.toShow=a;g.toHide=b;g.data=d;var j=function(){if(g)return g._completed.apply(g,arguments)};g._trigger("changestart",null,g.data);g.running=b.size()===0?a.size():b.size();if(e.animated){d={};d=e.collapsible&&h?{toShow:c([]),toHide:b,complete:j,down:f,autoHeight:e.autoHeight||e.fillSpace}:{toShow:a,toHide:b,complete:j,down:f,autoHeight:e.autoHeight|| -e.fillSpace};if(!e.proxied)e.proxied=e.animated;if(!e.proxiedDuration)e.proxiedDuration=e.duration;e.animated=c.isFunction(e.proxied)?e.proxied(d):e.proxied;e.duration=c.isFunction(e.proxiedDuration)?e.proxiedDuration(d):e.proxiedDuration;h=c.ui.accordion.animations;var i=e.duration,k=e.animated;if(k&&!h[k]&&!c.easing[k])k="slide";h[k]||(h[k]=function(l){this.slide(l,{easing:k,duration:i||700})});h[k](d)}else{if(e.collapsible&&h)a.toggle();else{b.hide();a.show()}j(true)}b.prev().attr({"aria-expanded":"false", -"aria-selected":"false",tabIndex:-1}).blur();a.prev().attr({"aria-expanded":"true","aria-selected":"true",tabIndex:0}).focus()},_completed:function(a){this.running=a?0:--this.running;if(!this.running){this.options.clearStyle&&this.toShow.add(this.toHide).css({height:"",overflow:""});this.toHide.removeClass("ui-accordion-content-active");if(this.toHide.length)this.toHide.parent()[0].className=this.toHide.parent()[0].className;this._trigger("change",null,this.data)}}});c.extend(c.ui.accordion,{version:"1.8.16", -animations:{slide:function(a,b){a=c.extend({easing:"swing",duration:300},a,b);if(a.toHide.size())if(a.toShow.size()){var d=a.toShow.css("overflow"),h=0,f={},g={},e;b=a.toShow;e=b[0].style.width;b.width(parseInt(b.parent().width(),10)-parseInt(b.css("paddingLeft"),10)-parseInt(b.css("paddingRight"),10)-(parseInt(b.css("borderLeftWidth"),10)||0)-(parseInt(b.css("borderRightWidth"),10)||0));c.each(["height","paddingTop","paddingBottom"],function(j,i){g[i]="hide";j=(""+c.css(a.toShow[0],i)).match(/^([\d+-.]+)(.*)$/); -f[i]={value:j[1],unit:j[2]||"px"}});a.toShow.css({height:0,overflow:"hidden"}).show();a.toHide.filter(":hidden").each(a.complete).end().filter(":visible").animate(g,{step:function(j,i){if(i.prop=="height")h=i.end-i.start===0?0:(i.now-i.start)/(i.end-i.start);a.toShow[0].style[i.prop]=h*f[i.prop].value+f[i.prop].unit},duration:a.duration,easing:a.easing,complete:function(){a.autoHeight||a.toShow.css("height","");a.toShow.css({width:e,overflow:d});a.complete()}})}else a.toHide.animate({height:"hide", -paddingTop:"hide",paddingBottom:"hide"},a);else a.toShow.animate({height:"show",paddingTop:"show",paddingBottom:"show"},a)},bounceslide:function(a){this.slide(a,{easing:a.down?"easeOutBounce":"swing",duration:a.down?1E3:200})}}})})(jQuery); -;/* - * jQuery UI Autocomplete 1.8.16 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Autocomplete - * - * Depends: - * jquery.ui.core.js - * jquery.ui.widget.js - * jquery.ui.position.js - */ -(function(d){var e=0;d.widget("ui.autocomplete",{options:{appendTo:"body",autoFocus:false,delay:300,minLength:1,position:{my:"left top",at:"left bottom",collision:"none"},source:null},pending:0,_create:function(){var a=this,b=this.element[0].ownerDocument,g;this.element.addClass("ui-autocomplete-input").attr("autocomplete","off").attr({role:"textbox","aria-autocomplete":"list","aria-haspopup":"true"}).bind("keydown.autocomplete",function(c){if(!(a.options.disabled||a.element.propAttr("readOnly"))){g= -false;var f=d.ui.keyCode;switch(c.keyCode){case f.PAGE_UP:a._move("previousPage",c);break;case f.PAGE_DOWN:a._move("nextPage",c);break;case f.UP:a._move("previous",c);c.preventDefault();break;case f.DOWN:a._move("next",c);c.preventDefault();break;case f.ENTER:case f.NUMPAD_ENTER:if(a.menu.active){g=true;c.preventDefault()}case f.TAB:if(!a.menu.active)return;a.menu.select(c);break;case f.ESCAPE:a.element.val(a.term);a.close(c);break;default:clearTimeout(a.searching);a.searching=setTimeout(function(){if(a.term!= -a.element.val()){a.selectedItem=null;a.search(null,c)}},a.options.delay);break}}}).bind("keypress.autocomplete",function(c){if(g){g=false;c.preventDefault()}}).bind("focus.autocomplete",function(){if(!a.options.disabled){a.selectedItem=null;a.previous=a.element.val()}}).bind("blur.autocomplete",function(c){if(!a.options.disabled){clearTimeout(a.searching);a.closing=setTimeout(function(){a.close(c);a._change(c)},150)}});this._initSource();this.response=function(){return a._response.apply(a,arguments)}; -this.menu=d("
      ").addClass("ui-autocomplete").appendTo(d(this.options.appendTo||"body",b)[0]).mousedown(function(c){var f=a.menu.element[0];d(c.target).closest(".ui-menu-item").length||setTimeout(function(){d(document).one("mousedown",function(h){h.target!==a.element[0]&&h.target!==f&&!d.ui.contains(f,h.target)&&a.close()})},1);setTimeout(function(){clearTimeout(a.closing)},13)}).menu({focus:function(c,f){f=f.item.data("item.autocomplete");false!==a._trigger("focus",c,{item:f})&&/^key/.test(c.originalEvent.type)&& -a.element.val(f.value)},selected:function(c,f){var h=f.item.data("item.autocomplete"),i=a.previous;if(a.element[0]!==b.activeElement){a.element.focus();a.previous=i;setTimeout(function(){a.previous=i;a.selectedItem=h},1)}false!==a._trigger("select",c,{item:h})&&a.element.val(h.value);a.term=a.element.val();a.close(c);a.selectedItem=h},blur:function(){a.menu.element.is(":visible")&&a.element.val()!==a.term&&a.element.val(a.term)}}).zIndex(this.element.zIndex()+1).css({top:0,left:0}).hide().data("menu"); -d.fn.bgiframe&&this.menu.element.bgiframe()},destroy:function(){this.element.removeClass("ui-autocomplete-input").removeAttr("autocomplete").removeAttr("role").removeAttr("aria-autocomplete").removeAttr("aria-haspopup");this.menu.element.remove();d.Widget.prototype.destroy.call(this)},_setOption:function(a,b){d.Widget.prototype._setOption.apply(this,arguments);a==="source"&&this._initSource();if(a==="appendTo")this.menu.element.appendTo(d(b||"body",this.element[0].ownerDocument)[0]);a==="disabled"&& -b&&this.xhr&&this.xhr.abort()},_initSource:function(){var a=this,b,g;if(d.isArray(this.options.source)){b=this.options.source;this.source=function(c,f){f(d.ui.autocomplete.filter(b,c.term))}}else if(typeof this.options.source==="string"){g=this.options.source;this.source=function(c,f){a.xhr&&a.xhr.abort();a.xhr=d.ajax({url:g,data:c,dataType:"json",autocompleteRequest:++e,success:function(h){this.autocompleteRequest===e&&f(h)},error:function(){this.autocompleteRequest===e&&f([])}})}}else this.source= -this.options.source},search:function(a,b){a=a!=null?a:this.element.val();this.term=this.element.val();if(a.length").data("item.autocomplete",b).append(d("").text(b.label)).appendTo(a)},_move:function(a,b){if(this.menu.element.is(":visible"))if(this.menu.first()&&/^previous/.test(a)||this.menu.last()&&/^next/.test(a)){this.element.val(this.term);this.menu.deactivate()}else this.menu[a](b);else this.search(null,b)},widget:function(){return this.menu.element}});d.extend(d.ui.autocomplete,{escapeRegex:function(a){return a.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, -"\\$&")},filter:function(a,b){var g=new RegExp(d.ui.autocomplete.escapeRegex(b),"i");return d.grep(a,function(c){return g.test(c.label||c.value||c)})}})})(jQuery); -(function(d){d.widget("ui.menu",{_create:function(){var e=this;this.element.addClass("ui-menu ui-widget ui-widget-content ui-corner-all").attr({role:"listbox","aria-activedescendant":"ui-active-menuitem"}).click(function(a){if(d(a.target).closest(".ui-menu-item a").length){a.preventDefault();e.select(a)}});this.refresh()},refresh:function(){var e=this;this.element.children("li:not(.ui-menu-item):has(a)").addClass("ui-menu-item").attr("role","menuitem").children("a").addClass("ui-corner-all").attr("tabindex", --1).mouseenter(function(a){e.activate(a,d(this).parent())}).mouseleave(function(){e.deactivate()})},activate:function(e,a){this.deactivate();if(this.hasScroll()){var b=a.offset().top-this.element.offset().top,g=this.element.scrollTop(),c=this.element.height();if(b<0)this.element.scrollTop(g+b);else b>=c&&this.element.scrollTop(g+b-c+a.height())}this.active=a.eq(0).children("a").addClass("ui-state-hover").attr("id","ui-active-menuitem").end();this._trigger("focus",e,{item:a})},deactivate:function(){if(this.active){this.active.children("a").removeClass("ui-state-hover").removeAttr("id"); -this._trigger("blur");this.active=null}},next:function(e){this.move("next",".ui-menu-item:first",e)},previous:function(e){this.move("prev",".ui-menu-item:last",e)},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(e,a,b){if(this.active){e=this.active[e+"All"](".ui-menu-item").eq(0);e.length?this.activate(b,e):this.activate(b,this.element.children(a))}else this.activate(b, -this.element.children(a))},nextPage:function(e){if(this.hasScroll())if(!this.active||this.last())this.activate(e,this.element.children(".ui-menu-item:first"));else{var a=this.active.offset().top,b=this.element.height(),g=this.element.children(".ui-menu-item").filter(function(){var c=d(this).offset().top-a-b+d(this).height();return c<10&&c>-10});g.length||(g=this.element.children(".ui-menu-item:last"));this.activate(e,g)}else this.activate(e,this.element.children(".ui-menu-item").filter(!this.active|| -this.last()?":first":":last"))},previousPage:function(e){if(this.hasScroll())if(!this.active||this.first())this.activate(e,this.element.children(".ui-menu-item:last"));else{var a=this.active.offset().top,b=this.element.height();result=this.element.children(".ui-menu-item").filter(function(){var g=d(this).offset().top-a+b-d(this).height();return g<10&&g>-10});result.length||(result=this.element.children(".ui-menu-item:first"));this.activate(e,result)}else this.activate(e,this.element.children(".ui-menu-item").filter(!this.active|| -this.first()?":last":":first"))},hasScroll:function(){return this.element.height()").addClass("ui-button-text").html(this.options.label).appendTo(a.empty()).text(),e=this.options.icons,f=e.primary&&e.secondary,d=[];if(e.primary||e.secondary){if(this.options.text)d.push("ui-button-text-icon"+(f?"s":e.primary?"-primary":"-secondary"));e.primary&&a.prepend("");e.secondary&&a.append("");if(!this.options.text){d.push(f?"ui-button-icons-only": -"ui-button-icon-only");this.hasTitle||a.attr("title",c)}}else d.push("ui-button-text-only");a.addClass(d.join(" "))}}});b.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(a,c){a==="disabled"&&this.buttons.button("option",a,c);b.Widget.prototype._setOption.apply(this,arguments)},refresh:function(){var a=this.element.css("direction")=== -"ltr";this.buttons=this.element.find(this.options.items).filter(":ui-button").button("refresh").end().not(":ui-button").button().end().map(function(){return b(this).button("widget")[0]}).removeClass("ui-corner-all ui-corner-left ui-corner-right").filter(":first").addClass(a?"ui-corner-left":"ui-corner-right").end().filter(":last").addClass(a?"ui-corner-right":"ui-corner-left").end().end()},destroy:function(){this.element.removeClass("ui-buttonset");this.buttons.map(function(){return b(this).button("widget")[0]}).removeClass("ui-corner-left ui-corner-right").end().button("destroy"); -b.Widget.prototype.destroy.call(this)}})})(jQuery); -;/* - * jQuery UI Dialog 1.8.16 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Dialog - * - * Depends: - * jquery.ui.core.js - * jquery.ui.widget.js - * jquery.ui.button.js - * jquery.ui.draggable.js - * jquery.ui.mouse.js - * jquery.ui.position.js - * jquery.ui.resizable.js - */ -(function(c,l){var m={buttons:true,height:true,maxHeight:true,maxWidth:true,minHeight:true,minWidth:true,width:true},n={maxHeight:true,maxWidth:true,minHeight:true,minWidth:true},o=c.attrFn||{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true,click:true};c.widget("ui.dialog",{options:{autoOpen:true,buttons:{},closeOnEscape:true,closeText:"close",dialogClass:"",draggable:true,hide:null,height:"auto",maxHeight:false,maxWidth:false,minHeight:150,minWidth:150,modal:false, -position:{my:"center",at:"center",collision:"fit",using:function(a){var b=c(this).css(a).offset().top;b<0&&c(this).css("top",a.top-b)}},resizable:true,show:null,stack:true,title:"",width:300,zIndex:1E3},_create:function(){this.originalTitle=this.element.attr("title");if(typeof this.originalTitle!=="string")this.originalTitle="";this.options.title=this.options.title||this.originalTitle;var a=this,b=a.options,d=b.title||" ",e=c.ui.dialog.getTitleId(a.element),g=(a.uiDialog=c("
      ")).appendTo(document.body).hide().addClass("ui-dialog ui-widget ui-widget-content ui-corner-all "+ -b.dialogClass).css({zIndex:b.zIndex}).attr("tabIndex",-1).css("outline",0).keydown(function(i){if(b.closeOnEscape&&!i.isDefaultPrevented()&&i.keyCode&&i.keyCode===c.ui.keyCode.ESCAPE){a.close(i);i.preventDefault()}}).attr({role:"dialog","aria-labelledby":e}).mousedown(function(i){a.moveToTop(false,i)});a.element.show().removeAttr("title").addClass("ui-dialog-content ui-widget-content").appendTo(g);var f=(a.uiDialogTitlebar=c("
      ")).addClass("ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix").prependTo(g), -h=c('').addClass("ui-dialog-titlebar-close ui-corner-all").attr("role","button").hover(function(){h.addClass("ui-state-hover")},function(){h.removeClass("ui-state-hover")}).focus(function(){h.addClass("ui-state-focus")}).blur(function(){h.removeClass("ui-state-focus")}).click(function(i){a.close(i);return false}).appendTo(f);(a.uiDialogTitlebarCloseText=c("")).addClass("ui-icon ui-icon-closethick").text(b.closeText).appendTo(h);c("").addClass("ui-dialog-title").attr("id", -e).html(d).prependTo(f);if(c.isFunction(b.beforeclose)&&!c.isFunction(b.beforeClose))b.beforeClose=b.beforeclose;f.find("*").add(f).disableSelection();b.draggable&&c.fn.draggable&&a._makeDraggable();b.resizable&&c.fn.resizable&&a._makeResizable();a._createButtons(b.buttons);a._isOpen=false;c.fn.bgiframe&&g.bgiframe()},_init:function(){this.options.autoOpen&&this.open()},destroy:function(){var a=this;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);return a},widget:function(){return this.uiDialog},close:function(a){var b=this,d,e;if(false!==b._trigger("beforeClose",a)){b.overlay&&b.overlay.destroy();b.uiDialog.unbind("keypress.ui-dialog");b._isOpen=false;if(b.options.hide)b.uiDialog.hide(b.options.hide,function(){b._trigger("close",a)});else{b.uiDialog.hide();b._trigger("close",a)}c.ui.dialog.overlay.resize();if(b.options.modal){d=0;c(".ui-dialog").each(function(){if(this!== -b.uiDialog[0]){e=c(this).css("z-index");isNaN(e)||(d=Math.max(d,e))}});c.ui.dialog.maxZ=d}return b}},isOpen:function(){return this._isOpen},moveToTop:function(a,b){var d=this,e=d.options;if(e.modal&&!a||!e.stack&&!e.modal)return d._trigger("focus",b);if(e.zIndex>c.ui.dialog.maxZ)c.ui.dialog.maxZ=e.zIndex;if(d.overlay){c.ui.dialog.maxZ+=1;d.overlay.$el.css("z-index",c.ui.dialog.overlay.maxZ=c.ui.dialog.maxZ)}a={scrollTop:d.element.scrollTop(),scrollLeft:d.element.scrollLeft()};c.ui.dialog.maxZ+=1; -d.uiDialog.css("z-index",c.ui.dialog.maxZ);d.element.attr(a);d._trigger("focus",b);return d},open:function(){if(!this._isOpen){var a=this,b=a.options,d=a.uiDialog;a.overlay=b.modal?new c.ui.dialog.overlay(a):null;a._size();a._position(b.position);d.show(b.show);a.moveToTop(true);b.modal&&d.bind("keypress.ui-dialog",function(e){if(e.keyCode===c.ui.keyCode.TAB){var g=c(":tabbable",this),f=g.filter(":first");g=g.filter(":last");if(e.target===g[0]&&!e.shiftKey){f.focus(1);return false}else if(e.target=== -f[0]&&e.shiftKey){g.focus(1);return false}}});c(a.element.find(":tabbable").get().concat(d.find(".ui-dialog-buttonpane :tabbable").get().concat(d.get()))).eq(0).focus();a._isOpen=true;a._trigger("open");return a}},_createButtons:function(a){var b=this,d=false,e=c("
      ").addClass("ui-dialog-buttonpane ui-widget-content ui-helper-clearfix"),g=c("
      ").addClass("ui-dialog-buttonset").appendTo(e);b.uiDialog.find(".ui-dialog-buttonpane").remove();typeof a==="object"&&a!==null&&c.each(a, -function(){return!(d=true)});if(d){c.each(a,function(f,h){h=c.isFunction(h)?{click:h,text:f}:h;var i=c('').click(function(){h.click.apply(b.element[0],arguments)}).appendTo(g);c.each(h,function(j,k){if(j!=="click")j in o?i[j](k):i.attr(j,k)});c.fn.button&&i.button()});e.appendTo(b.uiDialog)}},_makeDraggable:function(){function a(f){return{position:f.position,offset:f.offset}}var b=this,d=b.options,e=c(document),g;b.uiDialog.draggable({cancel:".ui-dialog-content, .ui-dialog-titlebar-close", -handle:".ui-dialog-titlebar",containment:"document",start:function(f,h){g=d.height==="auto"?"auto":c(this).height();c(this).height(c(this).height()).addClass("ui-dialog-dragging");b._trigger("dragStart",f,a(h))},drag:function(f,h){b._trigger("drag",f,a(h))},stop:function(f,h){d.position=[h.position.left-e.scrollLeft(),h.position.top-e.scrollTop()];c(this).removeClass("ui-dialog-dragging").height(g);b._trigger("dragStop",f,a(h));c.ui.dialog.overlay.resize()}})},_makeResizable:function(a){function b(f){return{originalPosition:f.originalPosition, -originalSize:f.originalSize,position:f.position,size:f.size}}a=a===l?this.options.resizable:a;var d=this,e=d.options,g=d.uiDialog.css("position");a=typeof a==="string"?a:"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:a,start:function(f,h){c(this).addClass("ui-dialog-resizing");d._trigger("resizeStart",f,b(h))},resize:function(f,h){d._trigger("resize", -f,b(h))},stop:function(f,h){c(this).removeClass("ui-dialog-resizing");e.height=c(this).height();e.width=c(this).width();d._trigger("resizeStop",f,b(h));c.ui.dialog.overlay.resize()}}).css("position",g).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(a){var b=[],d=[0,0],e;if(a){if(typeof a==="string"||typeof a==="object"&&"0"in a){b=a.split?a.split(" "): -[a[0],a[1]];if(b.length===1)b[1]=b[0];c.each(["left","top"],function(g,f){if(+b[g]===b[g]){d[g]=b[g];b[g]=f}});a={my:b.join(" "),at:b.join(" "),offset:d.join(" ")}}a=c.extend({},c.ui.dialog.prototype.options.position,a)}else a=c.ui.dialog.prototype.options.position;(e=this.uiDialog.is(":visible"))||this.uiDialog.show();this.uiDialog.css({top:0,left:0}).position(c.extend({of:window},a));e||this.uiDialog.hide()},_setOptions:function(a){var b=this,d={},e=false;c.each(a,function(g,f){b._setOption(g,f); -if(g in m)e=true;if(g in n)d[g]=f});e&&this._size();this.uiDialog.is(":data(resizable)")&&this.uiDialog.resizable("option",d)},_setOption:function(a,b){var d=this,e=d.uiDialog;switch(a){case "beforeclose":a="beforeClose";break;case "buttons":d._createButtons(b);break;case "closeText":d.uiDialogTitlebarCloseText.text(""+b);break;case "dialogClass":e.removeClass(d.options.dialogClass).addClass("ui-dialog ui-widget ui-widget-content ui-corner-all "+b);break;case "disabled":b?e.addClass("ui-dialog-disabled"): -e.removeClass("ui-dialog-disabled");break;case "draggable":var g=e.is(":data(draggable)");g&&!b&&e.draggable("destroy");!g&&b&&d._makeDraggable();break;case "position":d._position(b);break;case "resizable":(g=e.is(":data(resizable)"))&&!b&&e.resizable("destroy");g&&typeof b==="string"&&e.resizable("option","handles",b);!g&&b!==false&&d._makeResizable(b);break;case "title":c(".ui-dialog-title",d.uiDialogTitlebar).html(""+(b||" "));break}c.Widget.prototype._setOption.apply(d,arguments)},_size:function(){var a= -this.options,b,d,e=this.uiDialog.is(":visible");this.element.show().css({width:"auto",minHeight:0,height:0});if(a.minWidth>a.width)a.width=a.minWidth;b=this.uiDialog.css({height:"auto",width:a.width}).height();d=Math.max(0,a.minHeight-b);if(a.height==="auto")if(c.support.minHeight)this.element.css({minHeight:d,height:"auto"});else{this.uiDialog.show();a=this.element.css("height","auto").height();e||this.uiDialog.hide();this.element.height(Math.max(a,d))}else this.element.height(Math.max(a.height- -b,0));this.uiDialog.is(":data(resizable)")&&this.uiDialog.resizable("option","minHeight",this._minHeight())}});c.extend(c.ui.dialog,{version:"1.8.16",uuid:0,maxZ:0,getTitleId:function(a){a=a.attr("id");if(!a){this.uuid+=1;a=this.uuid}return"ui-dialog-title-"+a},overlay:function(a){this.$el=c.ui.dialog.overlay.create(a)}});c.extend(c.ui.dialog.overlay,{instances:[],oldInstances:[],maxZ:0,events:c.map("focus,mousedown,mouseup,keydown,keypress,click".split(","),function(a){return a+".dialog-overlay"}).join(" "), -create:function(a){if(this.instances.length===0){setTimeout(function(){c.ui.dialog.overlay.instances.length&&c(document).bind(c.ui.dialog.overlay.events,function(d){if(c(d.target).zIndex()").addClass("ui-widget-overlay")).appendTo(document.body).css({width:this.width(),height:this.height()});c.fn.bgiframe&&b.bgiframe();this.instances.push(b);return b},destroy:function(a){var b=c.inArray(a,this.instances);b!=-1&&this.oldInstances.push(this.instances.splice(b,1)[0]);this.instances.length===0&&c([document,window]).unbind(".dialog-overlay");a.remove();var d=0;c.each(this.instances,function(){d=Math.max(d,this.css("z-index"))});this.maxZ=d},height:function(){var a,b;if(c.browser.msie&& -c.browser.version<7){a=Math.max(document.documentElement.scrollHeight,document.body.scrollHeight);b=Math.max(document.documentElement.offsetHeight,document.body.offsetHeight);return a").appendTo(this.element).addClass("ui-slider-range ui-widget-header"+(b.range==="min"||b.range==="max"?" ui-slider-range-"+b.range:""))}for(var j=c.length;j"); -this.handles=c.add(d(e.join("")).appendTo(a.element));this.handle=this.handles.eq(0);this.handles.add(this.range).filter("a").click(function(g){g.preventDefault()}).hover(function(){b.disabled||d(this).addClass("ui-state-hover")},function(){d(this).removeClass("ui-state-hover")}).focus(function(){if(b.disabled)d(this).blur();else{d(".ui-slider .ui-state-focus").removeClass("ui-state-focus");d(this).addClass("ui-state-focus")}}).blur(function(){d(this).removeClass("ui-state-focus")});this.handles.each(function(g){d(this).data("index.ui-slider-handle", -g)});this.handles.keydown(function(g){var k=true,l=d(this).data("index.ui-slider-handle"),i,h,m;if(!a.options.disabled){switch(g.keyCode){case d.ui.keyCode.HOME:case d.ui.keyCode.END:case d.ui.keyCode.PAGE_UP:case d.ui.keyCode.PAGE_DOWN:case d.ui.keyCode.UP:case d.ui.keyCode.RIGHT:case d.ui.keyCode.DOWN:case d.ui.keyCode.LEFT:k=false;if(!a._keySliding){a._keySliding=true;d(this).addClass("ui-state-active");i=a._start(g,l);if(i===false)return}break}m=a.options.step;i=a.options.values&&a.options.values.length? -(h=a.values(l)):(h=a.value());switch(g.keyCode){case d.ui.keyCode.HOME:h=a._valueMin();break;case d.ui.keyCode.END:h=a._valueMax();break;case d.ui.keyCode.PAGE_UP:h=a._trimAlignValue(i+(a._valueMax()-a._valueMin())/5);break;case d.ui.keyCode.PAGE_DOWN:h=a._trimAlignValue(i-(a._valueMax()-a._valueMin())/5);break;case d.ui.keyCode.UP:case d.ui.keyCode.RIGHT:if(i===a._valueMax())return;h=a._trimAlignValue(i+m);break;case d.ui.keyCode.DOWN:case d.ui.keyCode.LEFT:if(i===a._valueMin())return;h=a._trimAlignValue(i- -m);break}a._slide(g,l,h);return k}}).keyup(function(g){var k=d(this).data("index.ui-slider-handle");if(a._keySliding){a._keySliding=false;a._stop(g,k);a._change(g,k);d(this).removeClass("ui-state-active")}});this._refreshValue();this._animateOff=false},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").removeData("slider").unbind(".slider");this._mouseDestroy(); -return this},_mouseCapture:function(a){var b=this.options,c,f,e,j,g;if(b.disabled)return false;this.elementSize={width:this.element.outerWidth(),height:this.element.outerHeight()};this.elementOffset=this.element.offset();c=this._normValueFromMouse({x:a.pageX,y:a.pageY});f=this._valueMax()-this._valueMin()+1;j=this;this.handles.each(function(k){var l=Math.abs(c-j.values(k));if(f>l){f=l;e=d(this);g=k}});if(b.range===true&&this.values(1)===b.min){g+=1;e=d(this.handles[g])}if(this._start(a,g)===false)return false; -this._mouseSliding=true;j._handleIndex=g;e.addClass("ui-state-active").focus();b=e.offset();this._clickOffset=!d(a.target).parents().andSelf().is(".ui-slider-handle")?{left:0,top:0}:{left:a.pageX-b.left-e.width()/2,top:a.pageY-b.top-e.height()/2-(parseInt(e.css("borderTopWidth"),10)||0)-(parseInt(e.css("borderBottomWidth"),10)||0)+(parseInt(e.css("marginTop"),10)||0)};this.handles.hasClass("ui-state-hover")||this._slide(a,g,c);return this._animateOff=true},_mouseStart:function(){return true},_mouseDrag:function(a){var b= -this._normValueFromMouse({x:a.pageX,y:a.pageY});this._slide(a,this._handleIndex,b);return false},_mouseStop:function(a){this.handles.removeClass("ui-state-active");this._mouseSliding=false;this._stop(a,this._handleIndex);this._change(a,this._handleIndex);this._clickOffset=this._handleIndex=null;return this._animateOff=false},_detectOrientation:function(){this.orientation=this.options.orientation==="vertical"?"vertical":"horizontal"},_normValueFromMouse:function(a){var b;if(this.orientation==="horizontal"){b= -this.elementSize.width;a=a.x-this.elementOffset.left-(this._clickOffset?this._clickOffset.left:0)}else{b=this.elementSize.height;a=a.y-this.elementOffset.top-(this._clickOffset?this._clickOffset.top:0)}b=a/b;if(b>1)b=1;if(b<0)b=0;if(this.orientation==="vertical")b=1-b;a=this._valueMax()-this._valueMin();return this._trimAlignValue(this._valueMin()+b*a)},_start:function(a,b){var c={handle:this.handles[b],value:this.value()};if(this.options.values&&this.options.values.length){c.value=this.values(b); -c.values=this.values()}return this._trigger("start",a,c)},_slide:function(a,b,c){var f;if(this.options.values&&this.options.values.length){f=this.values(b?0:1);if(this.options.values.length===2&&this.options.range===true&&(b===0&&c>f||b===1&&c1){this.options.values[a]=this._trimAlignValue(b);this._refreshValue();this._change(null,a)}else if(arguments.length)if(d.isArray(arguments[0])){c=this.options.values;f=arguments[0];for(e=0;e=this._valueMax())return this._valueMax();var b=this.options.step>0?this.options.step:1,c=(a-this._valueMin())%b;a=a-c;if(Math.abs(c)*2>=b)a+=c>0?b:-b;return parseFloat(a.toFixed(5))},_valueMin:function(){return this.options.min},_valueMax:function(){return this.options.max},_refreshValue:function(){var a= -this.options.range,b=this.options,c=this,f=!this._animateOff?b.animate:false,e,j={},g,k,l,i;if(this.options.values&&this.options.values.length)this.handles.each(function(h){e=(c.values(h)-c._valueMin())/(c._valueMax()-c._valueMin())*100;j[c.orientation==="horizontal"?"left":"bottom"]=e+"%";d(this).stop(1,1)[f?"animate":"css"](j,b.animate);if(c.options.range===true)if(c.orientation==="horizontal"){if(h===0)c.range.stop(1,1)[f?"animate":"css"]({left:e+"%"},b.animate);if(h===1)c.range[f?"animate":"css"]({width:e- -g+"%"},{queue:false,duration:b.animate})}else{if(h===0)c.range.stop(1,1)[f?"animate":"css"]({bottom:e+"%"},b.animate);if(h===1)c.range[f?"animate":"css"]({height:e-g+"%"},{queue:false,duration:b.animate})}g=e});else{k=this.value();l=this._valueMin();i=this._valueMax();e=i!==l?(k-l)/(i-l)*100:0;j[c.orientation==="horizontal"?"left":"bottom"]=e+"%";this.handle.stop(1,1)[f?"animate":"css"](j,b.animate);if(a==="min"&&this.orientation==="horizontal")this.range.stop(1,1)[f?"animate":"css"]({width:e+"%"}, -b.animate);if(a==="max"&&this.orientation==="horizontal")this.range[f?"animate":"css"]({width:100-e+"%"},{queue:false,duration:b.animate});if(a==="min"&&this.orientation==="vertical")this.range.stop(1,1)[f?"animate":"css"]({height:e+"%"},b.animate);if(a==="max"&&this.orientation==="vertical")this.range[f?"animate":"css"]({height:100-e+"%"},{queue:false,duration:b.animate})}}});d.extend(d.ui.slider,{version:"1.8.16"})})(jQuery); -;/* - * jQuery UI Tabs 1.8.16 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Tabs - * - * Depends: - * jquery.ui.core.js - * jquery.ui.widget.js - */ -(function(d,p){function u(){return++v}function w(){return++x}var v=0,x=0;d.widget("ui.tabs",{options:{add:null,ajaxOptions:null,cache:false,cookie:null,collapsible:false,disable:null,disabled:[],enable:null,event:"click",fx:null,idPrefix:"ui-tabs-",load:null,panelTemplate:"
      ",remove:null,select:null,show:null,spinner:"Loading…",tabTemplate:"
    • #{label}
    • "},_create:function(){this._tabify(true)},_setOption:function(b,e){if(b=="selected")this.options.collapsible&& -e==this.options.selected||this.select(e);else{this.options[b]=e;this._tabify()}},_tabId:function(b){return b.title&&b.title.replace(/\s/g,"_").replace(/[^\w\u00c0-\uFFFF-]/g,"")||this.options.idPrefix+u()},_sanitizeSelector:function(b){return b.replace(/:/g,"\\:")},_cookie:function(){var b=this.cookie||(this.cookie=this.options.cookie.name||"ui-tabs-"+w());return d.cookie.apply(null,[b].concat(d.makeArray(arguments)))},_ui:function(b,e){return{tab:b,panel:e,index:this.anchors.index(b)}},_cleanup:function(){this.lis.filter(".ui-state-processing").removeClass("ui-state-processing").find("span:data(label.tabs)").each(function(){var b= -d(this);b.html(b.data("label.tabs")).removeData("label.tabs")})},_tabify:function(b){function e(g,f){g.css("display","");!d.support.opacity&&f.opacity&&g[0].style.removeAttribute("filter")}var a=this,c=this.options,h=/^#.+/;this.list=this.element.find("ol,ul").eq(0);this.lis=d(" > li:has(a[href])",this.list);this.anchors=this.lis.map(function(){return d("a",this)[0]});this.panels=d([]);this.anchors.each(function(g,f){var i=d(f).attr("href"),l=i.split("#")[0],q;if(l&&(l===location.toString().split("#")[0]|| -(q=d("base")[0])&&l===q.href)){i=f.hash;f.href=i}if(h.test(i))a.panels=a.panels.add(a.element.find(a._sanitizeSelector(i)));else if(i&&i!=="#"){d.data(f,"href.tabs",i);d.data(f,"load.tabs",i.replace(/#.*$/,""));i=a._tabId(f);f.href="#"+i;f=a.element.find("#"+i);if(!f.length){f=d(c.panelTemplate).attr("id",i).addClass("ui-tabs-panel ui-widget-content ui-corner-bottom").insertAfter(a.panels[g-1]||a.list);f.data("destroy.tabs",true)}a.panels=a.panels.add(f)}else c.disabled.push(g)});if(b){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");if(c.selected===p){location.hash&&this.anchors.each(function(g,f){if(f.hash==location.hash){c.selected=g;return false}});if(typeof c.selected!=="number"&&c.cookie)c.selected=parseInt(a._cookie(),10);if(typeof c.selected!=="number"&&this.lis.filter(".ui-tabs-selected").length)c.selected= -this.lis.index(this.lis.filter(".ui-tabs-selected"));c.selected=c.selected||(this.lis.length?0:-1)}else if(c.selected===null)c.selected=-1;c.selected=c.selected>=0&&this.anchors[c.selected]||c.selected<0?c.selected:0;c.disabled=d.unique(c.disabled.concat(d.map(this.lis.filter(".ui-state-disabled"),function(g){return a.lis.index(g)}))).sort();d.inArray(c.selected,c.disabled)!=-1&&c.disabled.splice(d.inArray(c.selected,c.disabled),1);this.panels.addClass("ui-tabs-hide");this.lis.removeClass("ui-tabs-selected ui-state-active"); -if(c.selected>=0&&this.anchors.length){a.element.find(a._sanitizeSelector(a.anchors[c.selected].hash)).removeClass("ui-tabs-hide");this.lis.eq(c.selected).addClass("ui-tabs-selected ui-state-active");a.element.queue("tabs",function(){a._trigger("show",null,a._ui(a.anchors[c.selected],a.element.find(a._sanitizeSelector(a.anchors[c.selected].hash))[0]))});this.load(c.selected)}d(window).bind("unload",function(){a.lis.add(a.anchors).unbind(".tabs");a.lis=a.anchors=a.panels=null})}else c.selected=this.lis.index(this.lis.filter(".ui-tabs-selected")); -this.element[c.collapsible?"addClass":"removeClass"]("ui-tabs-collapsible");c.cookie&&this._cookie(c.selected,c.cookie);b=0;for(var j;j=this.lis[b];b++)d(j)[d.inArray(b,c.disabled)!=-1&&!d(j).hasClass("ui-tabs-selected")?"addClass":"removeClass"]("ui-state-disabled");c.cache===false&&this.anchors.removeData("cache.tabs");this.lis.add(this.anchors).unbind(".tabs");if(c.event!=="mouseover"){var k=function(g,f){f.is(":not(.ui-state-disabled)")&&f.addClass("ui-state-"+g)},n=function(g,f){f.removeClass("ui-state-"+ -g)};this.lis.bind("mouseover.tabs",function(){k("hover",d(this))});this.lis.bind("mouseout.tabs",function(){n("hover",d(this))});this.anchors.bind("focus.tabs",function(){k("focus",d(this).closest("li"))});this.anchors.bind("blur.tabs",function(){n("focus",d(this).closest("li"))})}var m,o;if(c.fx)if(d.isArray(c.fx)){m=c.fx[0];o=c.fx[1]}else m=o=c.fx;var r=o?function(g,f){d(g).closest("li").addClass("ui-tabs-selected ui-state-active");f.hide().removeClass("ui-tabs-hide").animate(o,o.duration||"normal", -function(){e(f,o);a._trigger("show",null,a._ui(g,f[0]))})}:function(g,f){d(g).closest("li").addClass("ui-tabs-selected ui-state-active");f.removeClass("ui-tabs-hide");a._trigger("show",null,a._ui(g,f[0]))},s=m?function(g,f){f.animate(m,m.duration||"normal",function(){a.lis.removeClass("ui-tabs-selected ui-state-active");f.addClass("ui-tabs-hide");e(f,m);a.element.dequeue("tabs")})}:function(g,f){a.lis.removeClass("ui-tabs-selected ui-state-active");f.addClass("ui-tabs-hide");a.element.dequeue("tabs")}; -this.anchors.bind(c.event+".tabs",function(){var g=this,f=d(g).closest("li"),i=a.panels.filter(":not(.ui-tabs-hide)"),l=a.element.find(a._sanitizeSelector(g.hash));if(f.hasClass("ui-tabs-selected")&&!c.collapsible||f.hasClass("ui-state-disabled")||f.hasClass("ui-state-processing")||a.panels.filter(":animated").length||a._trigger("select",null,a._ui(this,l[0]))===false){this.blur();return false}c.selected=a.anchors.index(this);a.abort();if(c.collapsible)if(f.hasClass("ui-tabs-selected")){c.selected= --1;c.cookie&&a._cookie(c.selected,c.cookie);a.element.queue("tabs",function(){s(g,i)}).dequeue("tabs");this.blur();return false}else if(!i.length){c.cookie&&a._cookie(c.selected,c.cookie);a.element.queue("tabs",function(){r(g,l)});a.load(a.anchors.index(this));this.blur();return false}c.cookie&&a._cookie(c.selected,c.cookie);if(l.length){i.length&&a.element.queue("tabs",function(){s(g,i)});a.element.queue("tabs",function(){r(g,l)});a.load(a.anchors.index(this))}else throw"jQuery UI Tabs: Mismatching fragment identifier."; -d.browser.msie&&this.blur()});this.anchors.bind("click.tabs",function(){return false})},_getIndex:function(b){if(typeof b=="string")b=this.anchors.index(this.anchors.filter("[href$="+b+"]"));return b},destroy:function(){var b=this.options;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 e= -d.data(this,"href.tabs");if(e)this.href=e;var a=d(this).unbind(".tabs");d.each(["href","load","cache"],function(c,h){a.removeData(h+".tabs")})});this.lis.unbind(".tabs").add(this.panels).each(function(){d.data(this,"destroy.tabs")?d(this).remove():d(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")});b.cookie&&this._cookie(null,b.cookie);return this},add:function(b, -e,a){if(a===p)a=this.anchors.length;var c=this,h=this.options;e=d(h.tabTemplate.replace(/#\{href\}/g,b).replace(/#\{label\}/g,e));b=!b.indexOf("#")?b.replace("#",""):this._tabId(d("a",e)[0]);e.addClass("ui-state-default ui-corner-top").data("destroy.tabs",true);var j=c.element.find("#"+b);j.length||(j=d(h.panelTemplate).attr("id",b).data("destroy.tabs",true));j.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide");if(a>=this.lis.length){e.appendTo(this.list);j.appendTo(this.list[0].parentNode)}else{e.insertBefore(this.lis[a]); -j.insertBefore(this.panels[a])}h.disabled=d.map(h.disabled,function(k){return k>=a?++k:k});this._tabify();if(this.anchors.length==1){h.selected=0;e.addClass("ui-tabs-selected ui-state-active");j.removeClass("ui-tabs-hide");this.element.queue("tabs",function(){c._trigger("show",null,c._ui(c.anchors[0],c.panels[0]))});this.load(0)}this._trigger("add",null,this._ui(this.anchors[a],this.panels[a]));return this},remove:function(b){b=this._getIndex(b);var e=this.options,a=this.lis.eq(b).remove(),c=this.panels.eq(b).remove(); -if(a.hasClass("ui-tabs-selected")&&this.anchors.length>1)this.select(b+(b+1=b?--h:h});this._tabify();this._trigger("remove",null,this._ui(a.find("a")[0],c[0]));return this},enable:function(b){b=this._getIndex(b);var e=this.options;if(d.inArray(b,e.disabled)!=-1){this.lis.eq(b).removeClass("ui-state-disabled");e.disabled=d.grep(e.disabled,function(a){return a!=b});this._trigger("enable",null, -this._ui(this.anchors[b],this.panels[b]));return this}},disable:function(b){b=this._getIndex(b);var e=this.options;if(b!=e.selected){this.lis.eq(b).addClass("ui-state-disabled");e.disabled.push(b);e.disabled.sort();this._trigger("disable",null,this._ui(this.anchors[b],this.panels[b]))}return this},select:function(b){b=this._getIndex(b);if(b==-1)if(this.options.collapsible&&this.options.selected!=-1)b=this.options.selected;else return this;this.anchors.eq(b).trigger(this.options.event+".tabs");return this}, -load:function(b){b=this._getIndex(b);var e=this,a=this.options,c=this.anchors.eq(b)[0],h=d.data(c,"load.tabs");this.abort();if(!h||this.element.queue("tabs").length!==0&&d.data(c,"cache.tabs"))this.element.dequeue("tabs");else{this.lis.eq(b).addClass("ui-state-processing");if(a.spinner){var j=d("span",c);j.data("label.tabs",j.html()).html(a.spinner)}this.xhr=d.ajax(d.extend({},a.ajaxOptions,{url:h,success:function(k,n){e.element.find(e._sanitizeSelector(c.hash)).html(k);e._cleanup();a.cache&&d.data(c, -"cache.tabs",true);e._trigger("load",null,e._ui(e.anchors[b],e.panels[b]));try{a.ajaxOptions.success(k,n)}catch(m){}},error:function(k,n){e._cleanup();e._trigger("load",null,e._ui(e.anchors[b],e.panels[b]));try{a.ajaxOptions.error(k,n,b,c)}catch(m){}}}));e.element.dequeue("tabs");return this}},abort:function(){this.element.queue([]);this.panels.stop(false,true);this.element.queue("tabs",this.element.queue("tabs").splice(-2,2));if(this.xhr){this.xhr.abort();delete this.xhr}this._cleanup();return this}, -url:function(b,e){this.anchors.eq(b).removeData("cache.tabs").data("load.tabs",e);return this},length:function(){return this.anchors.length}});d.extend(d.ui.tabs,{version:"1.8.16"});d.extend(d.ui.tabs.prototype,{rotation:null,rotate:function(b,e){var a=this,c=this.options,h=a._rotate||(a._rotate=function(j){clearTimeout(a.rotation);a.rotation=setTimeout(function(){var k=c.selected;a.select(++k'))}function N(a){return a.bind("mouseout", -function(b){b=d(b.target).closest("button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a");b.length&&b.removeClass("ui-state-hover ui-datepicker-prev-hover ui-datepicker-next-hover")}).bind("mouseover",function(b){b=d(b.target).closest("button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a");if(!(d.datepicker._isDisabledDatepicker(J.inline?a.parent()[0]:J.input[0])||!b.length)){b.parents(".ui-datepicker-calendar").find("a").removeClass("ui-state-hover"); -b.addClass("ui-state-hover");b.hasClass("ui-datepicker-prev")&&b.addClass("ui-datepicker-prev-hover");b.hasClass("ui-datepicker-next")&&b.addClass("ui-datepicker-next-hover")}})}function H(a,b){d.extend(a,b);for(var c in b)if(b[c]==null||b[c]==C)a[c]=b[c];return a}d.extend(d.ui,{datepicker:{version:"1.8.16"}});var B=(new Date).getTime(),J;d.extend(M.prototype,{markerClassName:"hasDatepicker",maxRows:4,log:function(){this.debug&&console.log.apply("",arguments)},_widgetDatepicker:function(){return this.dpDiv}, -setDefaults:function(a){H(this._defaults,a||{});return this},_attachDatepicker:function(a,b){var c=null;for(var e in this._defaults){var f=a.getAttribute("date:"+e);if(f){c=c||{};try{c[e]=eval(f)}catch(h){c[e]=f}}}e=a.nodeName.toLowerCase();f=e=="div"||e=="span";if(!a.id){this.uuid+=1;a.id="dp"+this.uuid}var i=this._newInst(d(a),f);i.settings=d.extend({},b||{},c||{});if(e=="input")this._connectDatepicker(a,i);else f&&this._inlineDatepicker(a,i)},_newInst:function(a,b){return{id:a[0].id.replace(/([^A-Za-z0-9_-])/g, -"\\\\$1"),input:a,selectedDay:0,selectedMonth:0,selectedYear:0,drawMonth:0,drawYear:0,inline:b,dpDiv:!b?this.dpDiv:N(d('
      '))}},_connectDatepicker:function(a,b){var c=d(a);b.append=d([]);b.trigger=d([]);if(!c.hasClass(this.markerClassName)){this._attachments(c,b);c.addClass(this.markerClassName).keydown(this._doKeyDown).keypress(this._doKeyPress).keyup(this._doKeyUp).bind("setData.datepicker", -function(e,f,h){b.settings[f]=h}).bind("getData.datepicker",function(e,f){return this._get(b,f)});this._autoSize(b);d.data(a,"datepicker",b);b.settings.disabled&&this._disableDatepicker(a)}},_attachments:function(a,b){var c=this._get(b,"appendText"),e=this._get(b,"isRTL");b.append&&b.append.remove();if(c){b.append=d(''+c+"");a[e?"before":"after"](b.append)}a.unbind("focus",this._showDatepicker);b.trigger&&b.trigger.remove();c=this._get(b,"showOn");if(c== -"focus"||c=="both")a.focus(this._showDatepicker);if(c=="button"||c=="both"){c=this._get(b,"buttonText");var f=this._get(b,"buttonImage");b.trigger=d(this._get(b,"buttonImageOnly")?d("").addClass(this._triggerClass).attr({src:f,alt:c,title:c}):d('').addClass(this._triggerClass).html(f==""?c:d("").attr({src:f,alt:c,title:c})));a[e?"before":"after"](b.trigger);b.trigger.click(function(){d.datepicker._datepickerShowing&&d.datepicker._lastInput==a[0]?d.datepicker._hideDatepicker(): -d.datepicker._showDatepicker(a[0]);return false})}},_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 e=function(f){for(var h=0,i=0,g=0;gh){h=f[g].length;i=g}return i};b.setMonth(e(this._get(a,c.match(/MM/)?"monthNames":"monthNamesShort")));b.setDate(e(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=d(a);if(!c.hasClass(this.markerClassName)){c.addClass(this.markerClassName).append(b.dpDiv).bind("setData.datepicker",function(e,f,h){b.settings[f]=h}).bind("getData.datepicker",function(e,f){return this._get(b,f)});d.data(a,"datepicker",b);this._setDate(b,this._getDefaultDate(b),true);this._updateDatepicker(b);this._updateAlternate(b);b.settings.disabled&&this._disableDatepicker(a);b.dpDiv.css("display","block")}},_dialogDatepicker:function(a,b,c,e,f){a=this._dialogInst;if(!a){this.uuid+= -1;this._dialogInput=d('');this._dialogInput.keydown(this._doKeyDown);d("body").append(this._dialogInput);a=this._dialogInst=this._newInst(this._dialogInput,false);a.settings={};d.data(this._dialogInput[0],"datepicker",a)}H(a.settings,e||{});b=b&&b.constructor==Date?this._formatDate(a,b):b;this._dialogInput.val(b);this._pos=f?f.length?f:[f.pageX,f.pageY]:null;if(!this._pos)this._pos=[document.documentElement.clientWidth/ -2-100+(document.documentElement.scrollLeft||document.body.scrollLeft),document.documentElement.clientHeight/2-150+(document.documentElement.scrollTop||document.body.scrollTop)];this._dialogInput.css("left",this._pos[0]+20+"px").css("top",this._pos[1]+"px");a.settings.onSelect=c;this._inDialog=true;this.dpDiv.addClass(this._dialogClass);this._showDatepicker(this._dialogInput[0]);d.blockUI&&d.blockUI(this.dpDiv);d.data(this._dialogInput[0],"datepicker",a);return this},_destroyDatepicker:function(a){var b= -d(a),c=d.data(a,"datepicker");if(b.hasClass(this.markerClassName)){var e=a.nodeName.toLowerCase();d.removeData(a,"datepicker");if(e=="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)}else if(e=="div"||e=="span")b.removeClass(this.markerClassName).empty()}},_enableDatepicker:function(a){var b=d(a),c=d.data(a,"datepicker");if(b.hasClass(this.markerClassName)){var e= -a.nodeName.toLowerCase();if(e=="input"){a.disabled=false;c.trigger.filter("button").each(function(){this.disabled=false}).end().filter("img").css({opacity:"1.0",cursor:""})}else if(e=="div"||e=="span"){b=b.children("."+this._inlineClass);b.children().removeClass("ui-state-disabled");b.find("select.ui-datepicker-month, select.ui-datepicker-year").removeAttr("disabled")}this._disabledInputs=d.map(this._disabledInputs,function(f){return f==a?null:f})}},_disableDatepicker:function(a){var b=d(a),c=d.data(a, -"datepicker");if(b.hasClass(this.markerClassName)){var e=a.nodeName.toLowerCase();if(e=="input"){a.disabled=true;c.trigger.filter("button").each(function(){this.disabled=true}).end().filter("img").css({opacity:"0.5",cursor:"default"})}else if(e=="div"||e=="span"){b=b.children("."+this._inlineClass);b.children().addClass("ui-state-disabled");b.find("select.ui-datepicker-month, select.ui-datepicker-year").attr("disabled","disabled")}this._disabledInputs=d.map(this._disabledInputs,function(f){return f== -a?null:f});this._disabledInputs[this._disabledInputs.length]=a}},_isDisabledDatepicker:function(a){if(!a)return false;for(var b=0;b-1}},_doKeyUp:function(a){a=d.datepicker._getInst(a.target);if(a.input.val()!=a.lastVal)try{if(d.datepicker.parseDate(d.datepicker._get(a,"dateFormat"),a.input?a.input.val():null,d.datepicker._getFormatConfig(a))){d.datepicker._setDateFromField(a);d.datepicker._updateAlternate(a);d.datepicker._updateDatepicker(a)}}catch(b){d.datepicker.log(b)}return true},_showDatepicker:function(a){a=a.target||a;if(a.nodeName.toLowerCase()!="input")a=d("input", -a.parentNode)[0];if(!(d.datepicker._isDisabledDatepicker(a)||d.datepicker._lastInput==a)){var b=d.datepicker._getInst(a);if(d.datepicker._curInst&&d.datepicker._curInst!=b){d.datepicker._datepickerShowing&&d.datepicker._triggerOnClose(d.datepicker._curInst);d.datepicker._curInst.dpDiv.stop(true,true)}var c=d.datepicker._get(b,"beforeShow");c=c?c.apply(a,[a,b]):{};if(c!==false){H(b.settings,c);b.lastVal=null;d.datepicker._lastInput=a;d.datepicker._setDateFromField(b);if(d.datepicker._inDialog)a.value= -"";if(!d.datepicker._pos){d.datepicker._pos=d.datepicker._findPos(a);d.datepicker._pos[1]+=a.offsetHeight}var e=false;d(a).parents().each(function(){e|=d(this).css("position")=="fixed";return!e});if(e&&d.browser.opera){d.datepicker._pos[0]-=document.documentElement.scrollLeft;d.datepicker._pos[1]-=document.documentElement.scrollTop}c={left:d.datepicker._pos[0],top:d.datepicker._pos[1]};d.datepicker._pos=null;b.dpDiv.empty();b.dpDiv.css({position:"absolute",display:"block",top:"-1000px"});d.datepicker._updateDatepicker(b); -c=d.datepicker._checkOffset(b,c,e);b.dpDiv.css({position:d.datepicker._inDialog&&d.blockUI?"static":e?"fixed":"absolute",display:"none",left:c.left+"px",top:c.top+"px"});if(!b.inline){c=d.datepicker._get(b,"showAnim");var f=d.datepicker._get(b,"duration"),h=function(){var i=b.dpDiv.find("iframe.ui-datepicker-cover");if(i.length){var g=d.datepicker._getBorders(b.dpDiv);i.css({left:-g[0],top:-g[1],width:b.dpDiv.outerWidth(),height:b.dpDiv.outerHeight()})}};b.dpDiv.zIndex(d(a).zIndex()+1);d.datepicker._datepickerShowing= -true;d.effects&&d.effects[c]?b.dpDiv.show(c,d.datepicker._get(b,"showOptions"),f,h):b.dpDiv[c||"show"](c?f:null,h);if(!c||!f)h();b.input.is(":visible")&&!b.input.is(":disabled")&&b.input.focus();d.datepicker._curInst=b}}}},_updateDatepicker:function(a){this.maxRows=4;var b=d.datepicker._getBorders(a.dpDiv);J=a;a.dpDiv.empty().append(this._generateHTML(a));var c=a.dpDiv.find("iframe.ui-datepicker-cover");c.length&&c.css({left:-b[0],top:-b[1],width:a.dpDiv.outerWidth(),height:a.dpDiv.outerHeight()}); -a.dpDiv.find("."+this._dayOverClass+" a").mouseover();b=this._getNumberOfMonths(a);c=b[1];a.dpDiv.removeClass("ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4").width("");c>1&&a.dpDiv.addClass("ui-datepicker-multi-"+c).css("width",17*c+"em");a.dpDiv[(b[0]!=1||b[1]!=1?"add":"remove")+"Class"]("ui-datepicker-multi");a.dpDiv[(this._get(a,"isRTL")?"add":"remove")+"Class"]("ui-datepicker-rtl");a==d.datepicker._curInst&&d.datepicker._datepickerShowing&&a.input&&a.input.is(":visible")&& -!a.input.is(":disabled")&&a.input[0]!=document.activeElement&&a.input.focus();if(a.yearshtml){var e=a.yearshtml;setTimeout(function(){e===a.yearshtml&&a.yearshtml&&a.dpDiv.find("select.ui-datepicker-year:first").replaceWith(a.yearshtml);e=a.yearshtml=null},0)}},_getBorders:function(a){var b=function(c){return{thin:1,medium:2,thick:3}[c]||c};return[parseFloat(b(a.css("border-left-width"))),parseFloat(b(a.css("border-top-width")))]},_checkOffset:function(a,b,c){var e=a.dpDiv.outerWidth(),f=a.dpDiv.outerHeight(), -h=a.input?a.input.outerWidth():0,i=a.input?a.input.outerHeight():0,g=document.documentElement.clientWidth+d(document).scrollLeft(),j=document.documentElement.clientHeight+d(document).scrollTop();b.left-=this._get(a,"isRTL")?e-h:0;b.left-=c&&b.left==a.input.offset().left?d(document).scrollLeft():0;b.top-=c&&b.top==a.input.offset().top+i?d(document).scrollTop():0;b.left-=Math.min(b.left,b.left+e>g&&g>e?Math.abs(b.left+e-g):0);b.top-=Math.min(b.top,b.top+f>j&&j>f?Math.abs(f+i):0);return b},_findPos:function(a){for(var b= -this._get(this._getInst(a),"isRTL");a&&(a.type=="hidden"||a.nodeType!=1||d.expr.filters.hidden(a));)a=a[b?"previousSibling":"nextSibling"];a=d(a).offset();return[a.left,a.top]},_triggerOnClose:function(a){var b=this._get(a,"onClose");if(b)b.apply(a.input?a.input[0]:null,[a.input?a.input.val():"",a])},_hideDatepicker:function(a){var b=this._curInst;if(!(!b||a&&b!=d.data(a,"datepicker")))if(this._datepickerShowing){a=this._get(b,"showAnim");var c=this._get(b,"duration"),e=function(){d.datepicker._tidyDialog(b); -this._curInst=null};d.effects&&d.effects[a]?b.dpDiv.hide(a,d.datepicker._get(b,"showOptions"),c,e):b.dpDiv[a=="slideDown"?"slideUp":a=="fadeIn"?"fadeOut":"hide"](a?c:null,e);a||e();d.datepicker._triggerOnClose(b);this._datepickerShowing=false;this._lastInput=null;if(this._inDialog){this._dialogInput.css({position:"absolute",left:"0",top:"-100px"});if(d.blockUI){d.unblockUI();d("body").append(this.dpDiv)}}this._inDialog=false}},_tidyDialog:function(a){a.dpDiv.removeClass(this._dialogClass).unbind(".ui-datepicker-calendar")}, -_checkExternalClick:function(a){if(d.datepicker._curInst){a=d(a.target);a[0].id!=d.datepicker._mainDivId&&a.parents("#"+d.datepicker._mainDivId).length==0&&!a.hasClass(d.datepicker.markerClassName)&&!a.hasClass(d.datepicker._triggerClass)&&d.datepicker._datepickerShowing&&!(d.datepicker._inDialog&&d.blockUI)&&d.datepicker._hideDatepicker()}},_adjustDate:function(a,b,c){a=d(a);var e=this._getInst(a[0]);if(!this._isDisabledDatepicker(a[0])){this._adjustInstDate(e,b+(c=="M"?this._get(e,"showCurrentAtPos"): -0),c);this._updateDatepicker(e)}},_gotoToday:function(a){a=d(a);var b=this._getInst(a[0]);if(this._get(b,"gotoCurrent")&&b.currentDay){b.selectedDay=b.currentDay;b.drawMonth=b.selectedMonth=b.currentMonth;b.drawYear=b.selectedYear=b.currentYear}else{var c=new Date;b.selectedDay=c.getDate();b.drawMonth=b.selectedMonth=c.getMonth();b.drawYear=b.selectedYear=c.getFullYear()}this._notifyChange(b);this._adjustDate(a)},_selectMonthYear:function(a,b,c){a=d(a);var e=this._getInst(a[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(a)},_selectDay:function(a,b,c,e){var f=d(a);if(!(d(e).hasClass(this._unselectableClass)||this._isDisabledDatepicker(f[0]))){f=this._getInst(f[0]);f.selectedDay=f.currentDay=d("a",e).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){a=d(a); -this._getInst(a[0]);this._selectDate(a,"")},_selectDate:function(a,b){a=this._getInst(d(a)[0]);b=b!=null?b:this._formatDate(a);a.input&&a.input.val(b);this._updateAlternate(a);var c=this._get(a,"onSelect");if(c)c.apply(a.input?a.input[0]:null,[b,a]);else a.input&&a.input.trigger("change");if(a.inline)this._updateDatepicker(a);else{this._hideDatepicker();this._lastInput=a.input[0];typeof a.input[0]!="object"&&a.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"),e=this._getDate(a),f=this.formatDate(c,e,this._getFormatConfig(a));d(b).each(function(){d(this).val(f)})}},noWeekends:function(a){a=a.getDay();return[a>0&&a<6,""]},iso8601Week:function(a){a=new Date(a.getTime());a.setDate(a.getDate()+4-(a.getDay()||7));var b=a.getTime();a.setMonth(0);a.setDate(1);return Math.floor(Math.round((b-a)/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 e=(c?c.shortYearCutoff:null)||this._defaults.shortYearCutoff;e=typeof e!="string"?e:(new Date).getFullYear()%100+parseInt(e,10);for(var f=(c?c.dayNamesShort:null)||this._defaults.dayNamesShort,h=(c?c.dayNames:null)||this._defaults.dayNames,i=(c?c.monthNamesShort:null)||this._defaults.monthNamesShort,g=(c?c.monthNames:null)||this._defaults.monthNames,j=c=-1,l=-1,u=-1,k=false,o=function(p){(p=A+1-1){j=1;l=u;do{e=this._getDaysInMonth(c,j-1);if(l<=e)break;j++;l-=e}while(1)}v=this._daylightSavingAdjust(new Date(c,j-1,l));if(v.getFullYear()!=c||v.getMonth()+1!=j||v.getDate()!=l)throw"Invalid date";return v},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 e=(c?c.dayNamesShort:null)||this._defaults.dayNamesShort,f=(c?c.dayNames:null)||this._defaults.dayNames,h=(c?c.monthNamesShort:null)||this._defaults.monthNamesShort;c=(c?c.monthNames: -null)||this._defaults.monthNames;var i=function(o){(o=k+1 -12?a.getHours()+2:0);return a},_setDate:function(a,b,c){var e=!b,f=a.selectedMonth,h=a.selectedYear;b=this._restrictMinMax(a,this._determineDate(a,b,new Date));a.selectedDay=a.currentDay=b.getDate();a.drawMonth=a.selectedMonth=a.currentMonth=b.getMonth();a.drawYear=a.selectedYear=a.currentYear=b.getFullYear();if((f!=a.selectedMonth||h!=a.selectedYear)&&!c)this._notifyChange(a);this._adjustInstDate(a);if(a.input)a.input.val(e?"":this._formatDate(a))},_getDate:function(a){return!a.currentYear||a.input&& -a.input.val()==""?null:this._daylightSavingAdjust(new Date(a.currentYear,a.currentMonth,a.currentDay))},_generateHTML:function(a){var b=new Date;b=this._daylightSavingAdjust(new Date(b.getFullYear(),b.getMonth(),b.getDate()));var c=this._get(a,"isRTL"),e=this._get(a,"showButtonPanel"),f=this._get(a,"hideIfNoPrevNext"),h=this._get(a,"navigationAsDateFormat"),i=this._getNumberOfMonths(a),g=this._get(a,"showCurrentAtPos"),j=this._get(a,"stepMonths"),l=i[0]!=1||i[1]!=1,u=this._daylightSavingAdjust(!a.currentDay? -new Date(9999,9,9):new Date(a.currentYear,a.currentMonth,a.currentDay)),k=this._getMinMaxDate(a,"min"),o=this._getMinMaxDate(a,"max");g=a.drawMonth-g;var m=a.drawYear;if(g<0){g+=12;m--}if(o){var n=this._daylightSavingAdjust(new Date(o.getFullYear(),o.getMonth()-i[0]*i[1]+1,o.getDate()));for(n=k&&nn;){g--;if(g<0){g=11;m--}}}a.drawMonth=g;a.drawYear=m;n=this._get(a,"prevText");n=!h?n:this.formatDate(n,this._daylightSavingAdjust(new Date(m,g-j,1)),this._getFormatConfig(a)); -n=this._canAdjustMonth(a,-1,m,g)?''+n+"":f?"":''+n+"";var s=this._get(a,"nextText");s=!h?s:this.formatDate(s,this._daylightSavingAdjust(new Date(m, -g+j,1)),this._getFormatConfig(a));f=this._canAdjustMonth(a,+1,m,g)?''+s+"":f?"":''+s+"";j=this._get(a,"currentText");s=this._get(a,"gotoCurrent")&& -a.currentDay?u:b;j=!h?j:this.formatDate(j,s,this._getFormatConfig(a));h=!a.inline?'":"";e=e?'
      '+(c?h:"")+(this._isInRange(a,s)?'":"")+(c?"":h)+"
      ":"";h=parseInt(this._get(a,"firstDay"),10);h=isNaN(h)?0:h;j=this._get(a,"showWeek");s=this._get(a,"dayNames");this._get(a,"dayNamesShort");var q=this._get(a,"dayNamesMin"),A=this._get(a,"monthNames"),v=this._get(a,"monthNamesShort"),p=this._get(a,"beforeShowDay"),D=this._get(a,"showOtherMonths"),K=this._get(a,"selectOtherMonths");this._get(a,"calculateWeek");for(var E=this._getDefaultDate(a),w="",x=0;x1)switch(G){case 0:y+=" ui-datepicker-group-first";t=" ui-corner-"+(c?"right":"left");break;case i[1]-1:y+=" ui-datepicker-group-last";t=" ui-corner-"+(c?"left":"right");break;default:y+=" ui-datepicker-group-middle";t="";break}y+='">'}y+='
      '+(/all|left/.test(t)&& -x==0?c?f:n:"")+(/all|right/.test(t)&&x==0?c?n:f:"")+this._generateMonthYearHeader(a,g,m,k,o,x>0||G>0,A,v)+'
      ';var z=j?'":"";for(t=0;t<7;t++){var r=(t+h)%7;z+="=5?' class="ui-datepicker-week-end"':"")+'>'+q[r]+""}y+=z+"";z=this._getDaysInMonth(m,g);if(m==a.selectedYear&&g==a.selectedMonth)a.selectedDay=Math.min(a.selectedDay, -z);t=(this._getFirstDayOfMonth(m,g)-h+7)%7;z=Math.ceil((t+z)/7);this.maxRows=z=l?this.maxRows>z?this.maxRows:z:z;r=this._daylightSavingAdjust(new Date(m,g,1-t));for(var Q=0;Q";var R=!j?"":'";for(t=0;t<7;t++){var I=p?p.apply(a.input?a.input[0]:null,[r]):[true,""],F=r.getMonth()!=g,L=F&&!K||!I[0]||k&&ro;R+='";r.setDate(r.getDate()+1);r=this._daylightSavingAdjust(r)}y+=R+""}g++;if(g>11){g=0;m++}y+="
      '+this._get(a,"weekHeader")+"
      '+this._get(a,"calculateWeek")(r)+""+(F&&!D?" ":L?''+ -r.getDate()+"":''+r.getDate()+"")+"
      "+(l?""+(i[0]>0&&G==i[1]-1?'
      ':""):"");O+=y}w+=O}w+=e+(d.browser.msie&&parseInt(d.browser.version,10)<7&&!a.inline?'': -"");a._keyEvent=false;return w},_generateMonthYearHeader:function(a,b,c,e,f,h,i,g){var j=this._get(a,"changeMonth"),l=this._get(a,"changeYear"),u=this._get(a,"showMonthAfterYear"),k='
      ',o="";if(h||!j)o+=''+i[b]+"";else{i=e&&e.getFullYear()==c;var m=f&&f.getFullYear()==c;o+='"}u||(k+=o+(h||!(j&&l)?" ":""));if(!a.yearshtml){a.yearshtml="";if(h||!l)k+=''+c+"";else{g=this._get(a,"yearRange").split(":");var s=(new Date).getFullYear();i=function(q){q=q.match(/c[+-].*/)?c+parseInt(q.substring(1),10):q.match(/[+-].*/)?s+parseInt(q,10):parseInt(q,10);return isNaN(q)?s:q};b=i(g[0]);g=Math.max(b,i(g[1]||""));b=e?Math.max(b, -e.getFullYear()):b;g=f?Math.min(g,f.getFullYear()):g;for(a.yearshtml+='";k+=a.yearshtml;a.yearshtml=null}}k+=this._get(a,"yearSuffix");if(u)k+=(h||!(j&&l)?" ":"")+o;k+="
      ";return k},_adjustInstDate:function(a,b,c){var e=a.drawYear+(c=="Y"?b:0),f=a.drawMonth+ -(c=="M"?b:0);b=Math.min(a.selectedDay,this._getDaysInMonth(e,f))+(c=="D"?b:0);e=this._restrictMinMax(a,this._daylightSavingAdjust(new Date(e,f,b)));a.selectedDay=e.getDate();a.drawMonth=a.selectedMonth=e.getMonth();a.drawYear=a.selectedYear=e.getFullYear();if(c=="M"||c=="Y")this._notifyChange(a)},_restrictMinMax:function(a,b){var c=this._getMinMaxDate(a,"min");a=this._getMinMaxDate(a,"max");b=c&&ba?a:b},_notifyChange:function(a){var b=this._get(a,"onChangeMonthYear");if(b)b.apply(a.input? -a.input[0]:null,[a.selectedYear,a.selectedMonth+1,a])},_getNumberOfMonths:function(a){a=this._get(a,"numberOfMonths");return a==null?[1,1]:typeof a=="number"?[1,a]:a},_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,e){var f=this._getNumberOfMonths(a);c=this._daylightSavingAdjust(new Date(c, -e+(b<0?b:f[0]*f[1]),1));b<0&&c.setDate(this._getDaysInMonth(c.getFullYear(),c.getMonth()));return this._isInRange(a,c)},_isInRange:function(a,b){var c=this._getMinMaxDate(a,"min");a=this._getMinMaxDate(a,"max");return(!c||b.getTime()>=c.getTime())&&(!a||b.getTime()<=a.getTime())},_getFormatConfig:function(a){var b=this._get(a,"shortYearCutoff");b=typeof b!="string"?b:(new Date).getFullYear()%100+parseInt(b,10);return{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,e){if(!b){a.currentDay=a.selectedDay;a.currentMonth=a.selectedMonth;a.currentYear=a.selectedYear}b=b?typeof b=="object"?b:this._daylightSavingAdjust(new Date(e,c,b)):this._daylightSavingAdjust(new Date(a.currentYear,a.currentMonth,a.currentDay));return this.formatDate(this._get(a,"dateFormat"),b,this._getFormatConfig(a))}});d.fn.datepicker=function(a){if(!this.length)return this; -if(!d.datepicker.initialized){d(document).mousedown(d.datepicker._checkExternalClick).find("body").append(d.datepicker.dpDiv);d.datepicker.initialized=true}var b=Array.prototype.slice.call(arguments,1);if(typeof a=="string"&&(a=="isDisabled"||a=="getDate"||a=="widget"))return d.datepicker["_"+a+"Datepicker"].apply(d.datepicker,[this[0]].concat(b));if(a=="option"&&arguments.length==2&&typeof arguments[1]=="string")return d.datepicker["_"+a+"Datepicker"].apply(d.datepicker,[this[0]].concat(b));return this.each(function(){typeof a== -"string"?d.datepicker["_"+a+"Datepicker"].apply(d.datepicker,[this].concat(b)):d.datepicker._attachDatepicker(this,a)})};d.datepicker=new M;d.datepicker.initialized=false;d.datepicker.uuid=(new Date).getTime();d.datepicker.version="1.8.16";window["DP_jQuery_"+B]=d})(jQuery); -;/* - * jQuery UI Progressbar 1.8.16 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Progressbar - * - * Depends: - * jquery.ui.core.js - * jquery.ui.widget.js - */ -(function(b,d){b.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=b("
      ").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();b.Widget.prototype.destroy.apply(this,arguments)},value:function(a){if(a===d)return this._value();this._setOption("value",a);return this},_setOption:function(a,c){if(a==="value"){this.options.value=c;this._refreshValue();this._value()===this.options.max&&this._trigger("complete")}b.Widget.prototype._setOption.apply(this,arguments)},_value:function(){var a=this.options.value;if(typeof a!=="number")a=0;return 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(),c=this._percentage();if(this.oldValue!==a){this.oldValue=a;this._trigger("change")}this.valueDiv.toggle(a>this.min).toggleClass("ui-corner-right",a===this.options.max).width(c.toFixed(0)+"%");this.element.attr("aria-valuenow",a)}});b.extend(b.ui.progressbar,{version:"1.8.16"})})(jQuery); -;/* - * jQuery UI Effects 1.8.16 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Effects/ - */ -jQuery.effects||function(f,j){function m(c){var a;if(c&&c.constructor==Array&&c.length==3)return c;if(a=/rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/.exec(c))return[parseInt(a[1],10),parseInt(a[2],10),parseInt(a[3],10)];if(a=/rgb\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*\)/.exec(c))return[parseFloat(a[1])*2.55,parseFloat(a[2])*2.55,parseFloat(a[3])*2.55];if(a=/#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(c))return[parseInt(a[1], -16),parseInt(a[2],16),parseInt(a[3],16)];if(a=/#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(c))return[parseInt(a[1]+a[1],16),parseInt(a[2]+a[2],16),parseInt(a[3]+a[3],16)];if(/rgba\(0, 0, 0, 0\)/.exec(c))return n.transparent;return n[f.trim(c).toLowerCase()]}function s(c,a){var b;do{b=f.curCSS(c,a);if(b!=""&&b!="transparent"||f.nodeName(c,"body"))break;a="backgroundColor"}while(c=c.parentNode);return m(b)}function o(){var c=document.defaultView?document.defaultView.getComputedStyle(this,null):this.currentStyle, -a={},b,d;if(c&&c.length&&c[0]&&c[c[0]])for(var e=c.length;e--;){b=c[e];if(typeof c[b]=="string"){d=b.replace(/\-(\w)/g,function(g,h){return h.toUpperCase()});a[d]=c[b]}}else for(b in c)if(typeof c[b]==="string")a[b]=c[b];return a}function p(c){var a,b;for(a in c){b=c[a];if(b==null||f.isFunction(b)||a in t||/scrollbar/.test(a)||!/color/i.test(a)&&isNaN(parseFloat(b)))delete c[a]}return c}function u(c,a){var b={_:0},d;for(d in a)if(c[d]!=a[d])b[d]=a[d];return b}function k(c,a,b,d){if(typeof c=="object"){d= -a;b=null;a=c;c=a.effect}if(f.isFunction(a)){d=a;b=null;a={}}if(typeof a=="number"||f.fx.speeds[a]){d=b;b=a;a={}}if(f.isFunction(b)){d=b;b=null}a=a||{};b=b||a.duration;b=f.fx.off?0:typeof b=="number"?b:b in f.fx.speeds?f.fx.speeds[b]:f.fx.speeds._default;d=d||a.complete;return[c,a,b,d]}function l(c){if(!c||typeof c==="number"||f.fx.speeds[c])return true;if(typeof c==="string"&&!f.effects[c])return true;return false}f.effects={};f.each(["backgroundColor","borderBottomColor","borderLeftColor","borderRightColor", -"borderTopColor","borderColor","color","outlineColor"],function(c,a){f.fx.step[a]=function(b){if(!b.colorInit){b.start=s(b.elem,a);b.end=m(b.end);b.colorInit=true}b.elem.style[a]="rgb("+Math.max(Math.min(parseInt(b.pos*(b.end[0]-b.start[0])+b.start[0],10),255),0)+","+Math.max(Math.min(parseInt(b.pos*(b.end[1]-b.start[1])+b.start[1],10),255),0)+","+Math.max(Math.min(parseInt(b.pos*(b.end[2]-b.start[2])+b.start[2],10),255),0)+")"}});var n={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]},q=["add","remove","toggle"],t={border:1,borderBottom:1,borderColor:1,borderLeft:1,borderRight:1,borderTop:1,borderWidth:1,margin:1,padding:1};f.effects.animateClass=function(c,a,b, -d){if(f.isFunction(b)){d=b;b=null}return this.queue(function(){var e=f(this),g=e.attr("style")||" ",h=p(o.call(this)),r,v=e.attr("class");f.each(q,function(w,i){c[i]&&e[i+"Class"](c[i])});r=p(o.call(this));e.attr("class",v);e.animate(u(h,r),{queue:false,duration:a,easing:b,complete:function(){f.each(q,function(w,i){c[i]&&e[i+"Class"](c[i])});if(typeof e.attr("style")=="object"){e.attr("style").cssText="";e.attr("style").cssText=g}else e.attr("style",g);d&&d.apply(this,arguments);f.dequeue(this)}})})}; -f.fn.extend({_addClass:f.fn.addClass,addClass:function(c,a,b,d){return a?f.effects.animateClass.apply(this,[{add:c},a,b,d]):this._addClass(c)},_removeClass:f.fn.removeClass,removeClass:function(c,a,b,d){return a?f.effects.animateClass.apply(this,[{remove:c},a,b,d]):this._removeClass(c)},_toggleClass:f.fn.toggleClass,toggleClass:function(c,a,b,d,e){return typeof a=="boolean"||a===j?b?f.effects.animateClass.apply(this,[a?{add:c}:{remove:c},b,d,e]):this._toggleClass(c,a):f.effects.animateClass.apply(this, -[{toggle:c},a,b,d])},switchClass:function(c,a,b,d,e){return f.effects.animateClass.apply(this,[{add:a,remove:c},b,d,e])}});f.extend(f.effects,{version:"1.8.16",save:function(c,a){for(var b=0;b").addClass("ui-effects-wrapper").css({fontSize:"100%",background:"transparent",border:"none",margin:0,padding:0}), -d=document.activeElement;c.wrap(b);if(c[0]===d||f.contains(c[0],d))f(d).focus();b=c.parent();if(c.css("position")=="static"){b.css({position:"relative"});c.css({position:"relative"})}else{f.extend(a,{position:c.css("position"),zIndex:c.css("z-index")});f.each(["top","left","bottom","right"],function(e,g){a[g]=c.css(g);if(isNaN(parseInt(a[g],10)))a[g]="auto"});c.css({position:"relative",top:0,left:0,right:"auto",bottom:"auto"})}return b.css(a).show()},removeWrapper:function(c){var a,b=document.activeElement; -if(c.parent().is(".ui-effects-wrapper")){a=c.parent().replaceWith(c);if(c[0]===b||f.contains(c[0],b))f(b).focus();return a}return c},setTransition:function(c,a,b,d){d=d||{};f.each(a,function(e,g){unit=c.cssUnit(g);if(unit[0]>0)d[g]=unit[0]*b+unit[1]});return d}});f.fn.extend({effect:function(c){var a=k.apply(this,arguments),b={options:a[1],duration:a[2],callback:a[3]};a=b.options.mode;var d=f.effects[c];if(f.fx.off||!d)return a?this[a](b.duration,b.callback):this.each(function(){b.callback&&b.callback.call(this)}); -return d.call(this,b)},_show:f.fn.show,show:function(c){if(l(c))return this._show.apply(this,arguments);else{var a=k.apply(this,arguments);a[1].mode="show";return this.effect.apply(this,a)}},_hide:f.fn.hide,hide:function(c){if(l(c))return this._hide.apply(this,arguments);else{var a=k.apply(this,arguments);a[1].mode="hide";return this.effect.apply(this,a)}},__toggle:f.fn.toggle,toggle:function(c){if(l(c)||typeof c==="boolean"||f.isFunction(c))return this.__toggle.apply(this,arguments);else{var a=k.apply(this, -arguments);a[1].mode="toggle";return this.effect.apply(this,a)}},cssUnit:function(c){var a=this.css(c),b=[];f.each(["em","px","%","pt"],function(d,e){if(a.indexOf(e)>0)b=[parseFloat(a),e]});return b}});f.easing.jswing=f.easing.swing;f.extend(f.easing,{def:"easeOutQuad",swing:function(c,a,b,d,e){return f.easing[f.easing.def](c,a,b,d,e)},easeInQuad:function(c,a,b,d,e){return d*(a/=e)*a+b},easeOutQuad:function(c,a,b,d,e){return-d*(a/=e)*(a-2)+b},easeInOutQuad:function(c,a,b,d,e){if((a/=e/2)<1)return d/ -2*a*a+b;return-d/2*(--a*(a-2)-1)+b},easeInCubic:function(c,a,b,d,e){return d*(a/=e)*a*a+b},easeOutCubic:function(c,a,b,d,e){return d*((a=a/e-1)*a*a+1)+b},easeInOutCubic:function(c,a,b,d,e){if((a/=e/2)<1)return d/2*a*a*a+b;return d/2*((a-=2)*a*a+2)+b},easeInQuart:function(c,a,b,d,e){return d*(a/=e)*a*a*a+b},easeOutQuart:function(c,a,b,d,e){return-d*((a=a/e-1)*a*a*a-1)+b},easeInOutQuart:function(c,a,b,d,e){if((a/=e/2)<1)return d/2*a*a*a*a+b;return-d/2*((a-=2)*a*a*a-2)+b},easeInQuint:function(c,a,b, -d,e){return d*(a/=e)*a*a*a*a+b},easeOutQuint:function(c,a,b,d,e){return d*((a=a/e-1)*a*a*a*a+1)+b},easeInOutQuint:function(c,a,b,d,e){if((a/=e/2)<1)return d/2*a*a*a*a*a+b;return d/2*((a-=2)*a*a*a*a+2)+b},easeInSine:function(c,a,b,d,e){return-d*Math.cos(a/e*(Math.PI/2))+d+b},easeOutSine:function(c,a,b,d,e){return d*Math.sin(a/e*(Math.PI/2))+b},easeInOutSine:function(c,a,b,d,e){return-d/2*(Math.cos(Math.PI*a/e)-1)+b},easeInExpo:function(c,a,b,d,e){return a==0?b:d*Math.pow(2,10*(a/e-1))+b},easeOutExpo:function(c, -a,b,d,e){return a==e?b+d:d*(-Math.pow(2,-10*a/e)+1)+b},easeInOutExpo:function(c,a,b,d,e){if(a==0)return b;if(a==e)return b+d;if((a/=e/2)<1)return d/2*Math.pow(2,10*(a-1))+b;return d/2*(-Math.pow(2,-10*--a)+2)+b},easeInCirc:function(c,a,b,d,e){return-d*(Math.sqrt(1-(a/=e)*a)-1)+b},easeOutCirc:function(c,a,b,d,e){return d*Math.sqrt(1-(a=a/e-1)*a)+b},easeInOutCirc:function(c,a,b,d,e){if((a/=e/2)<1)return-d/2*(Math.sqrt(1-a*a)-1)+b;return d/2*(Math.sqrt(1-(a-=2)*a)+1)+b},easeInElastic:function(c,a,b, -d,e){c=1.70158;var g=0,h=d;if(a==0)return b;if((a/=e)==1)return b+d;g||(g=e*0.3);if(h").css({position:"absolute",visibility:"visible",left:-f*(h/d),top:-e*(i/c)}).parent().addClass("ui-effects-explode").css({position:"absolute",overflow:"hidden",width:h/d,height:i/c,left:g.left+f*(h/d)+(a.options.mode=="show"?(f-Math.floor(d/2))*(h/d):0),top:g.top+e*(i/c)+(a.options.mode=="show"?(e-Math.floor(c/2))*(i/c):0),opacity:a.options.mode=="show"?0:1}).animate({left:g.left+f*(h/d)+(a.options.mode=="show"?0:(f-Math.floor(d/2))*(h/d)),top:g.top+ -e*(i/c)+(a.options.mode=="show"?0:(e-Math.floor(c/2))*(i/c)),opacity:a.options.mode=="show"?1:0},a.duration||500);setTimeout(function(){a.options.mode=="show"?b.css({visibility:"visible"}):b.css({visibility:"visible"}).hide();a.callback&&a.callback.apply(b[0]);b.dequeue();j("div.ui-effects-explode").remove()},a.duration||500)})}})(jQuery); -;/* - * jQuery UI Effects Fade 1.8.16 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Effects/Fade - * - * Depends: - * jquery.effects.core.js - */ -(function(b){b.effects.fade=function(a){return this.queue(function(){var c=b(this),d=b.effects.setMode(c,a.options.mode||"hide");c.animate({opacity:d},{queue:false,duration:a.duration,easing:a.options.easing,complete:function(){a.callback&&a.callback.apply(this,arguments);c.dequeue()}})})}})(jQuery); -;/* - * jQuery UI Effects Fold 1.8.16 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Effects/Fold - * - * Depends: - * jquery.effects.core.js - */ -(function(c){c.effects.fold=function(a){return this.queue(function(){var b=c(this),j=["position","top","bottom","left","right"],d=c.effects.setMode(b,a.options.mode||"hide"),g=a.options.size||15,h=!!a.options.horizFirst,k=a.duration?a.duration/2:c.fx.speeds._default/2;c.effects.save(b,j);b.show();var e=c.effects.createWrapper(b).css({overflow:"hidden"}),f=d=="show"!=h,l=f?["width","height"]:["height","width"];f=f?[e.width(),e.height()]:[e.height(),e.width()];var i=/([0-9]+)%/.exec(g);if(i)g=parseInt(i[1], -10)/100*f[d=="hide"?0:1];if(d=="show")e.css(h?{height:0,width:g}:{height:g,width:0});h={};i={};h[l[0]]=d=="show"?f[0]:g;i[l[1]]=d=="show"?f[1]:0;e.animate(h,k,a.options.easing).animate(i,k,a.options.easing,function(){d=="hide"&&b.hide();c.effects.restore(b,j);c.effects.removeWrapper(b);a.callback&&a.callback.apply(b[0],arguments);b.dequeue()})})}})(jQuery); -;/* - * jQuery UI Effects Highlight 1.8.16 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Effects/Highlight - * - * Depends: - * jquery.effects.core.js - */ -(function(b){b.effects.highlight=function(c){return this.queue(function(){var a=b(this),e=["backgroundImage","backgroundColor","opacity"],d=b.effects.setMode(a,c.options.mode||"show"),f={backgroundColor:a.css("backgroundColor")};if(d=="hide")f.opacity=0;b.effects.save(a,e);a.show().css({backgroundImage:"none",backgroundColor:c.options.color||"#ffff99"}).animate(f,{queue:false,duration:c.duration,easing:c.options.easing,complete:function(){d=="hide"&&a.hide();b.effects.restore(a,e);d=="show"&&!b.support.opacity&& -this.style.removeAttribute("filter");c.callback&&c.callback.apply(this,arguments);a.dequeue()}})})}})(jQuery); -;/* - * jQuery UI Effects Pulsate 1.8.16 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Effects/Pulsate - * - * Depends: - * jquery.effects.core.js - */ -(function(d){d.effects.pulsate=function(a){return this.queue(function(){var b=d(this),c=d.effects.setMode(b,a.options.mode||"show");times=(a.options.times||5)*2-1;duration=a.duration?a.duration/2:d.fx.speeds._default/2;isVisible=b.is(":visible");animateTo=0;if(!isVisible){b.css("opacity",0).show();animateTo=1}if(c=="hide"&&isVisible||c=="show"&&!isVisible)times--;for(c=0;c').appendTo(document.body).addClass(a.options.className).css({top:d.top,left:d.left,height:b.innerHeight(),width:b.innerWidth(),position:"absolute"}).animate(c,a.duration,a.options.easing,function(){f.remove();a.callback&&a.callback.apply(b[0],arguments); -b.dequeue()})})}})(jQuery); -; \ No newline at end of file diff --git a/app/assets/javascripts/shared/jquery.cycle.js b/app/assets/javascripts/shared/jquery.cycle.js deleted file mode 100644 index f24a74d..0000000 --- a/app/assets/javascripts/shared/jquery.cycle.js +++ /dev/null @@ -1,27 +0,0 @@ -/* - * jQuery Cycle Plugin (with Transition Definitions) - * Examples and documentation at: http://jquery.malsup.com/cycle/ - * Copyright (c) 2007-2009 M. Alsup - * Version: 2.72 (09-SEP-2009) - * Dual licensed under the MIT and GPL licenses: - * http://www.opensource.org/licenses/mit-license.php - * http://www.gnu.org/licenses/gpl.html - * Requires: jQuery v1.2.6 or later - * - * Originally based on the work of: - * 1) Matt Oakes - * 2) Torsten Baldes (http://medienfreunde.com/lab/innerfade/) - * 3) Benjamin Sterling (http://www.benjaminsterling.com/experiments/jqShuffle/) - */ -(function($){var ver="2.72";if($.support==undefined){$.support={opacity:!($.browser.msie)};}function debug(s){if($.fn.cycle.debug){log(s);}}function log(){if(window.console&&window.console.log){window.console.log("[cycle] "+Array.prototype.join.call(arguments," "));}}$.fn.cycle=function(options,arg2){var o={s:this.selector,c:this.context};if(this.length===0&&options!="stop"){if(!$.isReady&&o.s){log("DOM not ready, queuing slideshow");$(function(){$(o.s,o.c).cycle(options,arg2);});return this;}log("terminating; zero elements found by selector"+($.isReady?"":" (DOM not ready)"));return this;}return this.each(function(){var opts=handleArguments(this,options,arg2);if(opts===false){return;}if(this.cycleTimeout){clearTimeout(this.cycleTimeout);}this.cycleTimeout=this.cyclePause=0;var $cont=$(this);var $slides=opts.slideExpr?$(opts.slideExpr,this):$cont.children();var els=$slides.get();if(els.length<2){log("terminating; too few slides: "+els.length);return;}var opts2=buildOptions($cont,$slides,els,opts,o);if(opts2===false){return;}var startTime=opts2.continuous?10:getTimeout(opts2.currSlide,opts2.nextSlide,opts2,!opts2.rev);if(startTime){startTime+=(opts2.delay||0);if(startTime<10){startTime=10;}debug("first timeout: "+startTime);this.cycleTimeout=setTimeout(function(){go(els,opts2,0,!opts2.rev);},startTime);}});};function handleArguments(cont,options,arg2){if(cont.cycleStop==undefined){cont.cycleStop=0;}if(options===undefined||options===null){options={};}if(options.constructor==String){switch(options){case"stop":cont.cycleStop++;if(cont.cycleTimeout){clearTimeout(cont.cycleTimeout);}cont.cycleTimeout=0;$(cont).removeData("cycle.opts");return false;case"pause":cont.cyclePause=1;return false;case"resume":cont.cyclePause=0;if(arg2===true){options=$(cont).data("cycle.opts");if(!options){log("options not found, can not resume");return false;}if(cont.cycleTimeout){clearTimeout(cont.cycleTimeout);cont.cycleTimeout=0;}go(options.elements,options,1,1);}return false;case"prev":case"next":var opts=$(cont).data("cycle.opts");if(!opts){log('options not found, "prev/next" ignored');return false;}$.fn.cycle[options](opts);return false;default:options={fx:options};}return options;}else{if(options.constructor==Number){var num=options;options=$(cont).data("cycle.opts");if(!options){log("options not found, can not advance slide");return false;}if(num<0||num>=options.elements.length){log("invalid slide index: "+num);return false;}options.nextSlide=num;if(cont.cycleTimeout){clearTimeout(cont.cycleTimeout);cont.cycleTimeout=0;}if(typeof arg2=="string"){options.oneTimeFx=arg2;}go(options.elements,options,1,num>=options.currSlide);return false;}}return options;}function removeFilter(el,opts){if(!$.support.opacity&&opts.cleartype&&el.style.filter){try{el.style.removeAttribute("filter");}catch(smother){}}}function buildOptions($cont,$slides,els,options,o){var opts=$.extend({},$.fn.cycle.defaults,options||{},$.metadata?$cont.metadata():$.meta?$cont.data():{});if(opts.autostop){opts.countdown=opts.autostopCount||els.length;}var cont=$cont[0];$cont.data("cycle.opts",opts);opts.$cont=$cont;opts.stopCount=cont.cycleStop;opts.elements=els;opts.before=opts.before?[opts.before]:[];opts.after=opts.after?[opts.after]:[];opts.after.unshift(function(){opts.busy=0;});if(!$.support.opacity&&opts.cleartype){opts.after.push(function(){removeFilter(this,opts);});}if(opts.continuous){opts.after.push(function(){go(els,opts,0,!opts.rev);});}saveOriginalOpts(opts);if(!$.support.opacity&&opts.cleartype&&!opts.cleartypeNoBg){clearTypeFix($slides);}if($cont.css("position")=="static"){$cont.css("position","relative");}if(opts.width){$cont.width(opts.width);}if(opts.height&&opts.height!="auto"){$cont.height(opts.height);}if(opts.startingSlide){opts.startingSlide=parseInt(opts.startingSlide);}if(opts.random){opts.randomMap=[];for(var i=0;i=els.length){opts.startingSlide=0;}}opts.currSlide=opts.startingSlide=opts.startingSlide||0;var first=opts.startingSlide;$slides.css({position:"absolute",top:0,left:0}).hide().each(function(i){var z=first?i>=first?els.length-(i-first):first-i:els.length-i;$(this).css("z-index",z);});$(els[first]).css("opacity",1).show();removeFilter(els[first],opts);if(opts.fit&&opts.width){$slides.width(opts.width);}if(opts.fit&&opts.height&&opts.height!="auto"){$slides.height(opts.height);}var reshape=opts.containerResize&&!$cont.innerHeight();if(reshape){var maxw=0,maxh=0;for(var j=0;jmaxw?w:maxw;maxh=h>maxh?h:maxh;}if(maxw>0&&maxh>0){$cont.css({width:maxw+"px",height:maxh+"px"});}}if(opts.pause){$cont.hover(function(){this.cyclePause++;},function(){this.cyclePause--;});}if(supportMultiTransitions(opts)===false){return false;}var requeue=false;options.requeueAttempts=options.requeueAttempts||0;$slides.each(function(){var $el=$(this);this.cycleH=(opts.fit&&opts.height)?opts.height:$el.height();this.cycleW=(opts.fit&&opts.width)?opts.width:$el.width();if($el.is("img")){var loadingIE=($.browser.msie&&this.cycleW==28&&this.cycleH==30&&!this.complete);var loadingFF=($.browser.mozilla&&this.cycleW==34&&this.cycleH==19&&!this.complete);var loadingOp=($.browser.opera&&((this.cycleW==42&&this.cycleH==19)||(this.cycleW==37&&this.cycleH==17))&&!this.complete);var loadingOther=(this.cycleH==0&&this.cycleW==0&&!this.complete);if(loadingIE||loadingFF||loadingOp||loadingOther){if(o.s&&opts.requeueOnImageNotLoaded&&++options.requeueAttempts<100){log(options.requeueAttempts," - img slide not loaded, requeuing slideshow: ",this.src,this.cycleW,this.cycleH);setTimeout(function(){$(o.s,o.c).cycle(options);},opts.requeueTimeout);requeue=true;return false;}else{log("could not determine size of image: "+this.src,this.cycleW,this.cycleH);}}}return true;});if(requeue){return false;}opts.cssBefore=opts.cssBefore||{};opts.animIn=opts.animIn||{};opts.animOut=opts.animOut||{};$slides.not(":eq("+first+")").css(opts.cssBefore);if(opts.cssFirst){$($slides[first]).css(opts.cssFirst);}if(opts.timeout){opts.timeout=parseInt(opts.timeout);if(opts.speed.constructor==String){opts.speed=$.fx.speeds[opts.speed]||parseInt(opts.speed);}if(!opts.sync){opts.speed=opts.speed/2;}while((opts.timeout-opts.speed)<250){opts.timeout+=opts.speed;}}if(opts.easing){opts.easeIn=opts.easeOut=opts.easing;}if(!opts.speedIn){opts.speedIn=opts.speed;}if(!opts.speedOut){opts.speedOut=opts.speed;}opts.slideCount=els.length;opts.currSlide=opts.lastSlide=first;if(opts.random){opts.nextSlide=opts.currSlide;if(++opts.randomIndex==els.length){opts.randomIndex=0;}opts.nextSlide=opts.randomMap[opts.randomIndex];}else{opts.nextSlide=opts.startingSlide>=(els.length-1)?0:opts.startingSlide+1;}if(!opts.multiFx){var init=$.fn.cycle.transitions[opts.fx];if($.isFunction(init)){init($cont,$slides,opts);}else{if(opts.fx!="custom"&&!opts.multiFx){log("unknown transition: "+opts.fx,"; slideshow terminating");return false;}}}var e0=$slides[first];if(opts.before.length){opts.before[0].apply(e0,[e0,e0,opts,true]);}if(opts.after.length>1){opts.after[1].apply(e0,[e0,e0,opts,true]);}if(opts.next){$(opts.next).bind(opts.prevNextEvent,function(){return advance(opts,opts.rev?-1:1);});}if(opts.prev){$(opts.prev).bind(opts.prevNextEvent,function(){return advance(opts,opts.rev?1:-1);});}if(opts.pager){buildPager(els,opts);}exposeAddSlide(opts,els);return opts;}function saveOriginalOpts(opts){opts.original={before:[],after:[]};opts.original.cssBefore=$.extend({},opts.cssBefore);opts.original.cssAfter=$.extend({},opts.cssAfter);opts.original.animIn=$.extend({},opts.animIn);opts.original.animOut=$.extend({},opts.animOut);$.each(opts.before,function(){opts.original.before.push(this);});$.each(opts.after,function(){opts.original.after.push(this);});}function supportMultiTransitions(opts){var i,tx,txs=$.fn.cycle.transitions;if(opts.fx.indexOf(",")>0){opts.multiFx=true;opts.fxs=opts.fx.replace(/\s*/g,"").split(",");for(i=0;i=opts.fxs.length){opts.lastFx=0;}fx=opts.fxs[opts.lastFx];opts.currFx=fx;}if(opts.oneTimeFx){fx=opts.oneTimeFx;opts.oneTimeFx=null;}$.fn.cycle.resetState(opts,fx);if(opts.before.length){$.each(opts.before,function(i,o){if(p.cycleStop!=opts.stopCount){return;}o.apply(next,[curr,next,opts,fwd]);});}var after=function(){$.each(opts.after,function(i,o){if(p.cycleStop!=opts.stopCount){return;}o.apply(next,[curr,next,opts,fwd]);});};if(opts.nextSlide!=opts.currSlide){opts.busy=1;if(opts.fxFn){opts.fxFn(curr,next,opts,after,fwd);}else{if($.isFunction($.fn.cycle[opts.fx])){$.fn.cycle[opts.fx](curr,next,opts,after);}else{$.fn.cycle.custom(curr,next,opts,after,manual&&opts.fastOnEvent);}}}opts.lastSlide=opts.currSlide;if(opts.random){opts.currSlide=opts.nextSlide;if(++opts.randomIndex==els.length){opts.randomIndex=0;}opts.nextSlide=opts.randomMap[opts.randomIndex];}else{var roll=(opts.nextSlide+1)==els.length;opts.nextSlide=roll?0:opts.nextSlide+1;opts.currSlide=roll?els.length-1:opts.nextSlide-1;}if(opts.pager){$.fn.cycle.updateActivePagerLink(opts.pager,opts.currSlide);}}var ms=0;if(opts.timeout&&!opts.continuous){ms=getTimeout(curr,next,opts,fwd);}else{if(opts.continuous&&p.cyclePause){ms=10;}}if(ms>0){p.cycleTimeout=setTimeout(function(){go(els,opts,0,!opts.rev);},ms);}}$.fn.cycle.updateActivePagerLink=function(pager,currSlide){$(pager).find("a").removeClass("activeSlide").filter("a:eq("+currSlide+")").addClass("activeSlide");};function getTimeout(curr,next,opts,fwd){if(opts.timeoutFn){var t=opts.timeoutFn(curr,next,opts,fwd);while((t-opts.speed)<250){t+=opts.speed;}debug("calculated timeout: "+t+"; speed: "+opts.speed);if(t!==false){return t;}}return opts.timeout;}$.fn.cycle.next=function(opts){advance(opts,opts.rev?-1:1);};$.fn.cycle.prev=function(opts){advance(opts,opts.rev?1:-1);};function advance(opts,val){var els=opts.elements;var p=opts.$cont[0],timeout=p.cycleTimeout;if(timeout){clearTimeout(timeout);p.cycleTimeout=0;}if(opts.random&&val<0){opts.randomIndex--;if(--opts.randomIndex==-2){opts.randomIndex=els.length-2;}else{if(opts.randomIndex==-1){opts.randomIndex=els.length-1;}}opts.nextSlide=opts.randomMap[opts.randomIndex];}else{if(opts.random){if(++opts.randomIndex==els.length){opts.randomIndex=0;}opts.nextSlide=opts.randomMap[opts.randomIndex];}else{opts.nextSlide=opts.currSlide+val;if(opts.nextSlide<0){if(opts.nowrap){return false;}opts.nextSlide=els.length-1;}else{if(opts.nextSlide>=els.length){if(opts.nowrap){return false;}opts.nextSlide=0;}}}}if($.isFunction(opts.prevNextClick)){opts.prevNextClick(val>0,opts.nextSlide,els[opts.nextSlide]);}go(els,opts,1,val>=0);return false;}function buildPager(els,opts){var $p=$(opts.pager);$.each(els,function(i,o){$.fn.cycle.createPagerAnchor(i,o,$p,els,opts);});$.fn.cycle.updateActivePagerLink(opts.pager,opts.startingSlide);}$.fn.cycle.createPagerAnchor=function(i,el,$p,els,opts){var a;if($.isFunction(opts.pagerAnchorBuilder)){a=opts.pagerAnchorBuilder(i,el);}else{a=''+(i+1)+"";}if(!a){return;}var $a=$(a);if($a.parents("body").length===0){var arr=[];if($p.length>1){$p.each(function(){var $clone=$a.clone(true);$(this).append($clone);arr.push($clone);});$a=$(arr);}else{$a.appendTo($p);}}$a.bind(opts.pagerEvent,function(e){e.preventDefault();opts.nextSlide=i;var p=opts.$cont[0],timeout=p.cycleTimeout;if(timeout){clearTimeout(timeout);p.cycleTimeout=0;}if($.isFunction(opts.pagerClick)){opts.pagerClick(opts.nextSlide,els[opts.nextSlide]);}go(els,opts,1,opts.currSlidel?c-l:opts.slideCount-l;}else{hops=c=0){var rgb=v.match(/\d+/g);return"#"+hex(rgb[0])+hex(rgb[1])+hex(rgb[2]);}if(v&&v!="transparent"){return v;}}return"#ffffff";}$slides.each(function(){$(this).css("background-color",getBg(this));});}$.fn.cycle.commonReset=function(curr,next,opts,w,h,rev){$(opts.elements).not(curr).hide();opts.cssBefore.opacity=1;opts.cssBefore.display="block";if(w!==false&&next.cycleW>0){opts.cssBefore.width=next.cycleW;}if(h!==false&&next.cycleH>0){opts.cssBefore.height=next.cycleH;}opts.cssAfter=opts.cssAfter||{};opts.cssAfter.display="none";$(curr).css("zIndex",opts.slideCount+(rev===true?1:0));$(next).css("zIndex",opts.slideCount+(rev===true?0:1));};$.fn.cycle.custom=function(curr,next,opts,cb,speedOverride){var $l=$(curr),$n=$(next);var speedIn=opts.speedIn,speedOut=opts.speedOut,easeIn=opts.easeIn,easeOut=opts.easeOut;$n.css(opts.cssBefore);if(speedOverride){if(typeof speedOverride=="number"){speedIn=speedOut=speedOverride;}else{speedIn=speedOut=1;}easeIn=easeOut=null;}var fn=function(){$n.animate(opts.animIn,speedIn,easeIn,cb);};$l.animate(opts.animOut,speedOut,easeOut,function(){if(opts.cssAfter){$l.css(opts.cssAfter);}if(!opts.sync){fn();}});if(opts.sync){fn();}};$.fn.cycle.transitions={fade:function($cont,$slides,opts){$slides.not(":eq("+opts.currSlide+")").css("opacity",0);opts.before.push(function(curr,next,opts){$.fn.cycle.commonReset(curr,next,opts);opts.cssBefore.opacity=0;});opts.animIn={opacity:1};opts.animOut={opacity:0};opts.cssBefore={top:0,left:0};}};$.fn.cycle.ver=function(){return ver;};$.fn.cycle.defaults={fx:"fade",timeout:4000,timeoutFn:null,continuous:0,speed:1000,speedIn:null,speedOut:null,next:null,prev:null,prevNextClick:null,prevNextEvent:"click",pager:null,pagerClick:null,pagerEvent:"click",pagerAnchorBuilder:null,before:null,after:null,end:null,easing:null,easeIn:null,easeOut:null,shuffle:null,animIn:null,animOut:null,cssBefore:null,cssAfter:null,fxFn:null,height:"auto",startingSlide:0,sync:1,random:0,fit:0,containerResize:1,pause:0,pauseOnPagerHover:0,autostop:0,autostopCount:0,delay:0,slideExpr:null,cleartype:!$.support.opacity,cleartypeNoBg:false,nowrap:0,fastOnEvent:0,randomizeEffects:1,rev:0,manualTrump:true,requeueOnImageNotLoaded:true,requeueTimeout:250};})(jQuery); -/* - * jQuery Cycle Plugin Transition Definitions - * This script is a plugin for the jQuery Cycle Plugin - * Examples and documentation at: http://malsup.com/jquery/cycle/ - * Copyright (c) 2007-2008 M. Alsup - * Version: 2.72 - * Dual licensed under the MIT and GPL licenses: - * http://www.opensource.org/licenses/mit-license.php - * http://www.gnu.org/licenses/gpl.html - */ -(function($){$.fn.cycle.transitions.none=function($cont,$slides,opts){opts.fxFn=function(curr,next,opts,after){$(next).show();$(curr).hide();after();};};$.fn.cycle.transitions.scrollUp=function($cont,$slides,opts){$cont.css("overflow","hidden");opts.before.push($.fn.cycle.commonReset);var h=$cont.height();opts.cssBefore={top:h,left:0};opts.cssFirst={top:0};opts.animIn={top:0};opts.animOut={top:-h};};$.fn.cycle.transitions.scrollDown=function($cont,$slides,opts){$cont.css("overflow","hidden");opts.before.push($.fn.cycle.commonReset);var h=$cont.height();opts.cssFirst={top:0};opts.cssBefore={top:-h,left:0};opts.animIn={top:0};opts.animOut={top:h};};$.fn.cycle.transitions.scrollLeft=function($cont,$slides,opts){$cont.css("overflow","hidden");opts.before.push($.fn.cycle.commonReset);var w=$cont.width();opts.cssFirst={left:0};opts.cssBefore={left:w,top:0};opts.animIn={left:0};opts.animOut={left:0-w};};$.fn.cycle.transitions.scrollRight=function($cont,$slides,opts){$cont.css("overflow","hidden");opts.before.push($.fn.cycle.commonReset);var w=$cont.width();opts.cssFirst={left:0};opts.cssBefore={left:-w,top:0};opts.animIn={left:0};opts.animOut={left:w};};$.fn.cycle.transitions.scrollHorz=function($cont,$slides,opts){$cont.css("overflow","hidden").width();opts.before.push(function(curr,next,opts,fwd){$.fn.cycle.commonReset(curr,next,opts);opts.cssBefore.left=fwd?(next.cycleW-1):(1-next.cycleW);opts.animOut.left=fwd?-curr.cycleW:curr.cycleW;});opts.cssFirst={left:0};opts.cssBefore={top:0};opts.animIn={left:0};opts.animOut={top:0};};$.fn.cycle.transitions.scrollVert=function($cont,$slides,opts){$cont.css("overflow","hidden");opts.before.push(function(curr,next,opts,fwd){$.fn.cycle.commonReset(curr,next,opts);opts.cssBefore.top=fwd?(1-next.cycleH):(next.cycleH-1);opts.animOut.top=fwd?curr.cycleH:-curr.cycleH;});opts.cssFirst={top:0};opts.cssBefore={left:0};opts.animIn={top:0};opts.animOut={left:0};};$.fn.cycle.transitions.slideX=function($cont,$slides,opts){opts.before.push(function(curr,next,opts){$(opts.elements).not(curr).hide();$.fn.cycle.commonReset(curr,next,opts,false,true);opts.animIn.width=next.cycleW;});opts.cssBefore={left:0,top:0,width:0};opts.animIn={width:"show"};opts.animOut={width:0};};$.fn.cycle.transitions.slideY=function($cont,$slides,opts){opts.before.push(function(curr,next,opts){$(opts.elements).not(curr).hide();$.fn.cycle.commonReset(curr,next,opts,true,false);opts.animIn.height=next.cycleH;});opts.cssBefore={left:0,top:0,height:0};opts.animIn={height:"show"};opts.animOut={height:0};};$.fn.cycle.transitions.shuffle=function($cont,$slides,opts){var i,w=$cont.css("overflow","visible").width();$slides.css({left:0,top:0});opts.before.push(function(curr,next,opts){$.fn.cycle.commonReset(curr,next,opts,true,true,true);});if(!opts.speedAdjusted){opts.speed=opts.speed/2;opts.speedAdjusted=true;}opts.random=0;opts.shuffle=opts.shuffle||{left:-w,top:15};opts.els=[];for(i=0;i<$slides.length;i++){opts.els.push($slides[i]);}for(i=0;i")[0],{prop:0}),M=b.browser.msie&&b.browser.version<7&&!window.XMLHttpRequest,N=function(){t.hide();v.onerror=v.onload=null;G&&G.abort();m.empty()},O=function(){if(false===e.onError(o,q,e)){t.hide();h=false}else{e.titleShow=false;e.width="auto";e.height="auto";m.html('

      The requested content cannot be loaded.
      Please try again later.

      '); -F()}},I=function(){var a=o[q],c,g,k,C,P,w;N();e=b.extend({},b.fn.fancybox.defaults,typeof b(a).data("fancybox")=="undefined"?e:b(a).data("fancybox"));w=e.onStart(o,q,e);if(w===false)h=false;else{if(typeof w=="object")e=b.extend(e,w);k=e.title||(a.nodeName?b(a).attr("title"):a.title)||"";if(a.nodeName&&!e.orig)e.orig=b(a).children("img:first").length?b(a).children("img:first"):b(a);if(k===""&&e.orig&&e.titleFromAlt)k=e.orig.attr("alt");c=e.href||(a.nodeName?b(a).attr("href"):a.href)||null;if(/^(?:javascript)/i.test(c)|| -c=="#")c=null;if(e.type){g=e.type;if(!c)c=e.content}else if(e.content)g="html";else if(c)g=c.match(J)?"image":c.match(W)?"swf":b(a).hasClass("iframe")?"iframe":c.indexOf("#")===0?"inline":"ajax";if(g){if(g=="inline"){a=c.substr(c.indexOf("#"));g=b(a).length>0?"inline":"ajax"}e.type=g;e.href=c;e.title=k;if(e.autoDimensions)if(e.type=="html"||e.type=="inline"||e.type=="ajax"){e.width="auto";e.height="auto"}else e.autoDimensions=false;if(e.modal){e.overlayShow=true;e.hideOnOverlayClick=false;e.hideOnContentClick= -false;e.enableEscapeButton=false;e.showCloseButton=false}e.padding=parseInt(e.padding,10);e.margin=parseInt(e.margin,10);m.css("padding",e.padding+e.margin);b(".fancybox-inline-tmp").unbind("fancybox-cancel").bind("fancybox-change",function(){b(this).replaceWith(j.children())});switch(g){case "html":m.html(e.content);F();break;case "inline":if(b(a).parent().is("#fancybox-content")===true){h=false;break}b('
      ').hide().insertBefore(b(a)).bind("fancybox-cleanup",function(){b(this).replaceWith(j.children())}).bind("fancybox-cancel", -function(){b(this).replaceWith(m.children())});b(a).appendTo(m);F();break;case "image":h=false;b.fancybox.showActivity();v=new Image;v.onerror=function(){O()};v.onload=function(){h=true;v.onerror=v.onload=null;e.width=v.width;e.height=v.height;b("").attr({id:"fancybox-img",src:v.src,alt:e.title}).appendTo(m);Q()};v.src=c;break;case "swf":e.scrolling="no";C='';P="";b.each(e.swf,function(x,H){C+='';P+=" "+x+'="'+H+'"'});C+='";m.html(C);F();break;case "ajax":h=false;b.fancybox.showActivity();e.ajax.win=e.ajax.success;G=b.ajax(b.extend({},e.ajax,{url:c,data:e.ajax.data||{},error:function(x){x.status>0&&O()},success:function(x,H,R){if((typeof R=="object"?R:G).status==200){if(typeof e.ajax.win== -"function"){w=e.ajax.win(c,x,H,R);if(w===false){t.hide();return}else if(typeof w=="string"||typeof w=="object")x=w}m.html(x);F()}}}));break;case "iframe":Q()}}else O()}},F=function(){var a=e.width,c=e.height;a=a.toString().indexOf("%")>-1?parseInt((b(window).width()-e.margin*2)*parseFloat(a)/100,10)+"px":a=="auto"?"auto":a+"px";c=c.toString().indexOf("%")>-1?parseInt((b(window).height()-e.margin*2)*parseFloat(c)/100,10)+"px":c=="auto"?"auto":c+"px";m.wrapInner('
      ');e.width=m.width();e.height=m.height();Q()},Q=function(){var a,c;t.hide();if(f.is(":visible")&&false===d.onCleanup(l,p,d)){b.event.trigger("fancybox-cancel");h=false}else{h=true;b(j.add(u)).unbind();b(window).unbind("resize.fb scroll.fb");b(document).unbind("keydown.fb");f.is(":visible")&&d.titlePosition!=="outside"&&f.css("height",f.height());l=o;p=q;d=e;if(d.overlayShow){u.css({"background-color":d.overlayColor, -opacity:d.overlayOpacity,cursor:d.hideOnOverlayClick?"pointer":"auto",height:b(document).height()});if(!u.is(":visible")){M&&b("select:not(#fancybox-tmp select)").filter(function(){return this.style.visibility!=="hidden"}).css({visibility:"hidden"}).one("fancybox-cleanup",function(){this.style.visibility="inherit"});u.show()}}else u.hide();i=X();s=d.title||"";y=0;n.empty().removeAttr("style").removeClass();if(d.titleShow!==false){if(b.isFunction(d.titleFormat))a=d.titleFormat(s,l,p,d);else a=s&&s.length? -d.titlePosition=="float"?'
      '+s+'
      ':'
      '+s+"
      ":false;s=a;if(!(!s||s==="")){n.addClass("fancybox-title-"+d.titlePosition).html(s).appendTo("body").show();switch(d.titlePosition){case "inside":n.css({width:i.width-d.padding*2,marginLeft:d.padding,marginRight:d.padding}); -y=n.outerHeight(true);n.appendTo(D);i.height+=y;break;case "over":n.css({marginLeft:d.padding,width:i.width-d.padding*2,bottom:d.padding}).appendTo(D);break;case "float":n.css("left",parseInt((n.width()-i.width-40)/2,10)*-1).appendTo(f);break;default:n.css({width:i.width-d.padding*2,paddingLeft:d.padding,paddingRight:d.padding}).appendTo(f)}}}n.hide();if(f.is(":visible")){b(E.add(z).add(A)).hide();a=f.position();r={top:a.top,left:a.left,width:f.width(),height:f.height()};c=r.width==i.width&&r.height== -i.height;j.fadeTo(d.changeFade,0.3,function(){var g=function(){j.html(m.contents()).fadeTo(d.changeFade,1,S)};b.event.trigger("fancybox-change");j.empty().removeAttr("filter").css({"border-width":d.padding,width:i.width-d.padding*2,height:e.autoDimensions?"auto":i.height-y-d.padding*2});if(c)g();else{B.prop=0;b(B).animate({prop:1},{duration:d.changeSpeed,easing:d.easingChange,step:T,complete:g})}})}else{f.removeAttr("style");j.css("border-width",d.padding);if(d.transitionIn=="elastic"){r=V();j.html(m.contents()); -f.show();if(d.opacity)i.opacity=0;B.prop=0;b(B).animate({prop:1},{duration:d.speedIn,easing:d.easingIn,step:T,complete:S})}else{d.titlePosition=="inside"&&y>0&&n.show();j.css({width:i.width-d.padding*2,height:e.autoDimensions?"auto":i.height-y-d.padding*2}).html(m.contents());f.css(i).fadeIn(d.transitionIn=="none"?0:d.speedIn,S)}}}},Y=function(){if(d.enableEscapeButton||d.enableKeyboardNav)b(document).bind("keydown.fb",function(a){if(a.keyCode==27&&d.enableEscapeButton){a.preventDefault();b.fancybox.close()}else if((a.keyCode== -37||a.keyCode==39)&&d.enableKeyboardNav&&a.target.tagName!=="INPUT"&&a.target.tagName!=="TEXTAREA"&&a.target.tagName!=="SELECT"){a.preventDefault();b.fancybox[a.keyCode==37?"prev":"next"]()}});if(d.showNavArrows){if(d.cyclic&&l.length>1||p!==0)z.show();if(d.cyclic&&l.length>1||p!=l.length-1)A.show()}else{z.hide();A.hide()}},S=function(){if(!b.support.opacity){j.get(0).style.removeAttribute("filter");f.get(0).style.removeAttribute("filter")}e.autoDimensions&&j.css("height","auto");f.css("height","auto"); -s&&s.length&&n.show();d.showCloseButton&&E.show();Y();d.hideOnContentClick&&j.bind("click",b.fancybox.close);d.hideOnOverlayClick&&u.bind("click",b.fancybox.close);b(window).bind("resize.fb",b.fancybox.resize);d.centerOnScroll&&b(window).bind("scroll.fb",b.fancybox.center);if(d.type=="iframe")b('').appendTo(j); -f.show();h=false;b.fancybox.center();d.onComplete(l,p,d);var a,c;if(l.length-1>p){a=l[p+1].href;if(typeof a!=="undefined"&&a.match(J)){c=new Image;c.src=a}}if(p>0){a=l[p-1].href;if(typeof a!=="undefined"&&a.match(J)){c=new Image;c.src=a}}},T=function(a){var c={width:parseInt(r.width+(i.width-r.width)*a,10),height:parseInt(r.height+(i.height-r.height)*a,10),top:parseInt(r.top+(i.top-r.top)*a,10),left:parseInt(r.left+(i.left-r.left)*a,10)};if(typeof i.opacity!=="undefined")c.opacity=a<0.5?0.5:a;f.css(c); -j.css({width:c.width-d.padding*2,height:c.height-y*a-d.padding*2})},U=function(){return[b(window).width()-d.margin*2,b(window).height()-d.margin*2,b(document).scrollLeft()+d.margin,b(document).scrollTop()+d.margin]},X=function(){var a=U(),c={},g=d.autoScale,k=d.padding*2;c.width=d.width.toString().indexOf("%")>-1?parseInt(a[0]*parseFloat(d.width)/100,10):d.width+k;c.height=d.height.toString().indexOf("%")>-1?parseInt(a[1]*parseFloat(d.height)/100,10):d.height+k;if(g&&(c.width>a[0]||c.height>a[1]))if(e.type== -"image"||e.type=="swf"){g=d.width/d.height;if(c.width>a[0]){c.width=a[0];c.height=parseInt((c.width-k)/g+k,10)}if(c.height>a[1]){c.height=a[1];c.width=parseInt((c.height-k)*g+k,10)}}else{c.width=Math.min(c.width,a[0]);c.height=Math.min(c.height,a[1])}c.top=parseInt(Math.max(a[3]-20,a[3]+(a[1]-c.height-40)*0.5),10);c.left=parseInt(Math.max(a[2]-20,a[2]+(a[0]-c.width-40)*0.5),10);return c},V=function(){var a=e.orig?b(e.orig):false,c={};if(a&&a.length){c=a.offset();c.top+=parseInt(a.css("paddingTop"), -10)||0;c.left+=parseInt(a.css("paddingLeft"),10)||0;c.top+=parseInt(a.css("border-top-width"),10)||0;c.left+=parseInt(a.css("border-left-width"),10)||0;c.width=a.width();c.height=a.height();c={width:c.width+d.padding*2,height:c.height+d.padding*2,top:c.top-d.padding-20,left:c.left-d.padding-20}}else{a=U();c={width:d.padding*2,height:d.padding*2,top:parseInt(a[3]+a[1]*0.5,10),left:parseInt(a[2]+a[0]*0.5,10)}}return c},Z=function(){if(t.is(":visible")){b("div",t).css("top",L*-40+"px");L=(L+1)%12}else clearInterval(K)}; -b.fn.fancybox=function(a){if(!b(this).length)return this;b(this).data("fancybox",b.extend({},a,b.metadata?b(this).metadata():{})).unbind("click.fb").bind("click.fb",function(c){c.preventDefault();if(!h){h=true;b(this).blur();o=[];q=0;c=b(this).attr("rel")||"";if(!c||c==""||c==="nofollow")o.push(this);else{o=b("a[rel="+c+"], area[rel="+c+"]");q=o.index(this)}I()}});return this};b.fancybox=function(a,c){var g;if(!h){h=true;g=typeof c!=="undefined"?c:{};o=[];q=parseInt(g.index,10)||0;if(b.isArray(a)){for(var k= -0,C=a.length;ko.length||q<0)q=0;I()}};b.fancybox.showActivity=function(){clearInterval(K);t.show();K=setInterval(Z,66)};b.fancybox.hideActivity=function(){t.hide()};b.fancybox.next=function(){return b.fancybox.pos(p+ -1)};b.fancybox.prev=function(){return b.fancybox.pos(p-1)};b.fancybox.pos=function(a){if(!h){a=parseInt(a);o=l;if(a>-1&&a1){q=a>=l.length?0:l.length-1;I()}}};b.fancybox.cancel=function(){if(!h){h=true;b.event.trigger("fancybox-cancel");N();e.onCancel(o,q,e);h=false}};b.fancybox.close=function(){function a(){u.fadeOut("fast");n.empty().hide();f.hide();b.event.trigger("fancybox-cleanup");j.empty();d.onClosed(l,p,d);l=e=[];p=q=0;d=e={};h=false}if(!(h||f.is(":hidden"))){h= -true;if(d&&false===d.onCleanup(l,p,d))h=false;else{N();b(E.add(z).add(A)).hide();b(j.add(u)).unbind();b(window).unbind("resize.fb scroll.fb");b(document).unbind("keydown.fb");j.find("iframe").attr("src",M&&/^https/i.test(window.location.href||"")?"javascript:void(false)":"about:blank");d.titlePosition!=="inside"&&n.empty();f.stop();if(d.transitionOut=="elastic"){r=V();var c=f.position();i={top:c.top,left:c.left,width:f.width(),height:f.height()};if(d.opacity)i.opacity=1;n.empty().hide();B.prop=1; -b(B).animate({prop:0},{duration:d.speedOut,easing:d.easingOut,step:T,complete:a})}else f.fadeOut(d.transitionOut=="none"?0:d.speedOut,a)}}};b.fancybox.resize=function(){u.is(":visible")&&u.css("height",b(document).height());b.fancybox.center(true)};b.fancybox.center=function(a){var c,g;if(!h){g=a===true?1:0;c=U();!g&&(f.width()>c[0]||f.height()>c[1])||f.stop().animate({top:parseInt(Math.max(c[3]-20,c[3]+(c[1]-j.height()-40)*0.5-d.padding)),left:parseInt(Math.max(c[2]-20,c[2]+(c[0]-j.width()-40)*0.5- -d.padding))},typeof a=="number"?a:200)}};b.fancybox.init=function(){if(!b("#fancybox-wrap").length){b("body").append(m=b('
      '),t=b('
      '),u=b('
      '),f=b('
      '));D=b('
      ').append('
      ').appendTo(f); -D.append(j=b('
      '),E=b(''),n=b('
      '),z=b(''),A=b(''));E.click(b.fancybox.close);t.click(b.fancybox.cancel);z.click(function(a){a.preventDefault();b.fancybox.prev()});A.click(function(a){a.preventDefault();b.fancybox.next()}); -b.fn.mousewheel&&f.bind("mousewheel.fb",function(a,c){if(h)a.preventDefault();else if(b(a.target).get(0).clientHeight==0||b(a.target).get(0).scrollHeight===b(a.target).get(0).clientHeight){a.preventDefault();b.fancybox[c>0?"prev":"next"]()}});b.support.opacity||f.addClass("fancybox-ie");if(M){t.addClass("fancybox-ie6");f.addClass("fancybox-ie6");b('').prependTo(D)}}}; -b.fn.fancybox.defaults={padding:10,margin:40,opacity:false,modal:false,cyclic:false,scrolling:"auto",width:560,height:340,autoScale:true,autoDimensions:true,centerOnScroll:false,ajax:{},swf:{wmode:"transparent"},hideOnOverlayClick:true,hideOnContentClick:false,overlayShow:true,overlayOpacity:0.7,overlayColor:"#777",titleShow:true,titlePosition:"float",titleFormat:null,titleFromAlt:false,transitionIn:"fade",transitionOut:"fade",speedIn:300,speedOut:300,changeSpeed:300,changeFade:"fast",easingIn:"swing", -easingOut:"swing",showCloseButton:true,showNavArrows:true,enableEscapeButton:true,enableKeyboardNav:true,onStart:function(){},onCancel:function(){},onComplete:function(){},onCleanup:function(){},onClosed:function(){},onError:function(){}};b(document).ready(function(){b.fancybox.init()})})(jQuery); \ No newline at end of file diff --git a/app/assets/javascripts/shared/jquery.fileupload.js b/app/assets/javascripts/shared/jquery.fileupload.js new file mode 100755 index 0000000..bc96a07 --- /dev/null +++ b/app/assets/javascripts/shared/jquery.fileupload.js @@ -0,0 +1,1113 @@ +/* + * jQuery File Upload Plugin 5.19.7 + * https://github.com/blueimp/jQuery-File-Upload + * + * Copyright 2010, Sebastian Tschan + * https://blueimp.net + * + * Licensed under the MIT license: + * http://www.opensource.org/licenses/MIT + */ + +/*jslint nomen: true, unparam: true, regexp: true */ +/*global define, window, document, File, Blob, FormData, location */ + +(function (factory) { + 'use strict'; + if (typeof define === 'function' && define.amd) { + // Register as an anonymous AMD module: + define([ + 'jquery', + 'jquery.ui.widget' + ], factory); + } else { + // Browser globals: + factory(window.jQuery); + } +}(function ($) { + 'use strict'; + + // The FileReader API is not actually used, but works as feature detection, + // as e.g. Safari supports XHR file uploads via the FormData API, + // but not non-multipart XHR file uploads: + $.support.xhrFileUpload = !!(window.XMLHttpRequestUpload && window.FileReader); + $.support.xhrFormDataFileUpload = !!window.FormData; + + // The fileupload widget listens for change events on file input fields defined + // via fileInput setting and paste or drop events of the given dropZone. + // In addition to the default jQuery Widget methods, the fileupload widget + // exposes the "add" and "send" methods, to add or directly send files using + // the fileupload API. + // By default, files added via file input selection, paste, drag & drop or + // "add" method are uploaded immediately, but it is possible to override + // the "add" callback option to queue file uploads. + $.widget('blueimp.fileupload', { + + options: { + // The drop target element(s), by the default the complete document. + // Set to null to disable drag & drop support: + dropZone: $(document), + // The paste target element(s), by the default the complete document. + // Set to null to disable paste support: + pasteZone: $(document), + // The file input field(s), that are listened to for change events. + // If undefined, it is set to the file input fields inside + // of the widget element on plugin initialization. + // Set to null to disable the change listener. + fileInput: undefined, + // By default, the file input field is replaced with a clone after + // each input field change event. This is required for iframe transport + // queues and allows change events to be fired for the same file + // selection, but can be disabled by setting the following option to false: + replaceFileInput: true, + // The parameter name for the file form data (the request argument name). + // If undefined or empty, the name property of the file input field is + // used, or "files[]" if the file input name property is also empty, + // can be a string or an array of strings: + paramName: undefined, + // By default, each file of a selection is uploaded using an individual + // request for XHR type uploads. Set to false to upload file + // selections in one request each: + singleFileUploads: true, + // To limit the number of files uploaded with one XHR request, + // set the following option to an integer greater than 0: + limitMultiFileUploads: undefined, + // Set the following option to true to issue all file upload requests + // in a sequential order: + sequentialUploads: false, + // To limit the number of concurrent uploads, + // set the following option to an integer greater than 0: + limitConcurrentUploads: undefined, + // Set the following option to true to force iframe transport uploads: + forceIframeTransport: false, + // Set the following option to the location of a redirect url on the + // origin server, for cross-domain iframe transport uploads: + redirect: undefined, + // The parameter name for the redirect url, sent as part of the form + // data and set to 'redirect' if this option is empty: + redirectParamName: undefined, + // Set the following option to the location of a postMessage window, + // to enable postMessage transport uploads: + postMessage: undefined, + // By default, XHR file uploads are sent as multipart/form-data. + // The iframe transport is always using multipart/form-data. + // Set to false to enable non-multipart XHR uploads: + multipart: true, + // To upload large files in smaller chunks, set the following option + // to a preferred maximum chunk size. If set to 0, null or undefined, + // or the browser does not support the required Blob API, files will + // be uploaded as a whole. + maxChunkSize: undefined, + // When a non-multipart upload or a chunked multipart upload has been + // aborted, this option can be used to resume the upload by setting + // it to the size of the already uploaded bytes. This option is most + // useful when modifying the options object inside of the "add" or + // "send" callbacks, as the options are cloned for each file upload. + uploadedBytes: undefined, + // By default, failed (abort or error) file uploads are removed from the + // global progress calculation. Set the following option to false to + // prevent recalculating the global progress data: + recalculateProgress: true, + // Interval in milliseconds to calculate and trigger progress events: + progressInterval: 100, + // Interval in milliseconds to calculate progress bitrate: + bitrateInterval: 500, + + // Additional form data to be sent along with the file uploads can be set + // using this option, which accepts an array of objects with name and + // value properties, a function returning such an array, a FormData + // object (for XHR file uploads), or a simple object. + // The form of the first fileInput is given as parameter to the function: + formData: function (form) { + return form.serializeArray(); + }, + + // The add callback is invoked as soon as files are added to the fileupload + // widget (via file input selection, drag & drop, paste or add API call). + // If the singleFileUploads option is enabled, this callback will be + // called once for each file in the selection for XHR file uplaods, else + // once for each file selection. + // The upload starts when the submit method is invoked on the data parameter. + // The data object contains a files property holding the added files + // and allows to override plugin options as well as define ajax settings. + // Listeners for this callback can also be bound the following way: + // .bind('fileuploadadd', func); + // data.submit() returns a Promise object and allows to attach additional + // handlers using jQuery's Deferred callbacks: + // data.submit().done(func).fail(func).always(func); + add: function (e, data) { + data.submit(); + }, + + // Other callbacks: + // Callback for the submit event of each file upload: + // submit: function (e, data) {}, // .bind('fileuploadsubmit', func); + // Callback for the start of each file upload request: + // send: function (e, data) {}, // .bind('fileuploadsend', func); + // Callback for successful uploads: + // done: function (e, data) {}, // .bind('fileuploaddone', func); + // Callback for failed (abort or error) uploads: + // fail: function (e, data) {}, // .bind('fileuploadfail', func); + // Callback for completed (success, abort or error) requests: + // always: function (e, data) {}, // .bind('fileuploadalways', func); + // Callback for upload progress events: + // progress: function (e, data) {}, // .bind('fileuploadprogress', func); + // Callback for global upload progress events: + // progressall: function (e, data) {}, // .bind('fileuploadprogressall', func); + // Callback for uploads start, equivalent to the global ajaxStart event: + // start: function (e) {}, // .bind('fileuploadstart', func); + // Callback for uploads stop, equivalent to the global ajaxStop event: + // stop: function (e) {}, // .bind('fileuploadstop', func); + // Callback for change events of the fileInput(s): + // change: function (e, data) {}, // .bind('fileuploadchange', func); + // Callback for paste events to the pasteZone(s): + // paste: function (e, data) {}, // .bind('fileuploadpaste', func); + // Callback for drop events of the dropZone(s): + // drop: function (e, data) {}, // .bind('fileuploaddrop', func); + // Callback for dragover events of the dropZone(s): + // dragover: function (e) {}, // .bind('fileuploaddragover', func); + + // The plugin options are used as settings object for the ajax calls. + // The following are jQuery ajax settings required for the file uploads: + processData: false, + contentType: false, + cache: false + }, + + // A list of options that require a refresh after assigning a new value: + _refreshOptionsList: [ + 'fileInput', + 'dropZone', + 'pasteZone', + 'multipart', + 'forceIframeTransport' + ], + + _BitrateTimer: function () { + this.timestamp = +(new Date()); + this.loaded = 0; + this.bitrate = 0; + this.getBitrate = function (now, loaded, interval) { + var timeDiff = now - this.timestamp; + if (!this.bitrate || !interval || timeDiff > interval) { + this.bitrate = (loaded - this.loaded) * (1000 / timeDiff) * 8; + this.loaded = loaded; + this.timestamp = now; + } + return this.bitrate; + }; + }, + + _isXHRUpload: function (options) { + return !options.forceIframeTransport && + ((!options.multipart && $.support.xhrFileUpload) || + $.support.xhrFormDataFileUpload); + }, + + _getFormData: function (options) { + var formData; + if (typeof options.formData === 'function') { + return options.formData(options.form); + } + if ($.isArray(options.formData)) { + return options.formData; + } + if (options.formData) { + formData = []; + $.each(options.formData, function (name, value) { + formData.push({name: name, value: value}); + }); + return formData; + } + return []; + }, + + _getTotal: function (files) { + var total = 0; + $.each(files, function (index, file) { + total += file.size || 1; + }); + return total; + }, + + _onProgress: function (e, data) { + if (e.lengthComputable) { + var now = +(new Date()), + total, + loaded; + if (data._time && data.progressInterval && + (now - data._time < data.progressInterval) && + e.loaded !== e.total) { + return; + } + data._time = now; + total = data.total || this._getTotal(data.files); + loaded = parseInt( + e.loaded / e.total * (data.chunkSize || total), + 10 + ) + (data.uploadedBytes || 0); + this._loaded += loaded - (data.loaded || data.uploadedBytes || 0); + data.lengthComputable = true; + data.loaded = loaded; + data.total = total; + data.bitrate = data._bitrateTimer.getBitrate( + now, + loaded, + data.bitrateInterval + ); + // Trigger a custom progress event with a total data property set + // to the file size(s) of the current upload and a loaded data + // property calculated accordingly: + this._trigger('progress', e, data); + // Trigger a global progress event for all current file uploads, + // including ajax calls queued for sequential file uploads: + this._trigger('progressall', e, { + lengthComputable: true, + loaded: this._loaded, + total: this._total, + bitrate: this._bitrateTimer.getBitrate( + now, + this._loaded, + data.bitrateInterval + ) + }); + } + }, + + _initProgressListener: function (options) { + var that = this, + xhr = options.xhr ? options.xhr() : $.ajaxSettings.xhr(); + // Accesss to the native XHR object is required to add event listeners + // for the upload progress event: + if (xhr.upload) { + $(xhr.upload).bind('progress', function (e) { + var oe = e.originalEvent; + // Make sure the progress event properties get copied over: + e.lengthComputable = oe.lengthComputable; + e.loaded = oe.loaded; + e.total = oe.total; + that._onProgress(e, options); + }); + options.xhr = function () { + return xhr; + }; + } + }, + + _initXHRData: function (options) { + var formData, + file = options.files[0], + // Ignore non-multipart setting if not supported: + multipart = options.multipart || !$.support.xhrFileUpload, + paramName = options.paramName[0]; + options.headers = options.headers || {}; + if (options.contentRange) { + options.headers['Content-Range'] = options.contentRange; + } + if (!multipart) { + options.headers['Content-Disposition'] = 'attachment; filename="' + + encodeURI(file.name) + '"'; + options.contentType = file.type; + options.data = options.blob || file; + } else if ($.support.xhrFormDataFileUpload) { + if (options.postMessage) { + // window.postMessage does not allow sending FormData + // objects, so we just add the File/Blob objects to + // the formData array and let the postMessage window + // create the FormData object out of this array: + formData = this._getFormData(options); + if (options.blob) { + formData.push({ + name: paramName, + value: options.blob + }); + } else { + $.each(options.files, function (index, file) { + formData.push({ + name: options.paramName[index] || paramName, + value: file + }); + }); + } + } else { + if (options.formData instanceof FormData) { + formData = options.formData; + } else { + formData = new FormData(); + $.each(this._getFormData(options), function (index, field) { + formData.append(field.name, field.value); + }); + } + if (options.blob) { + options.headers['Content-Disposition'] = 'attachment; filename="' + + encodeURI(file.name) + '"'; + formData.append(paramName, options.blob, file.name); + } else { + $.each(options.files, function (index, file) { + // Files are also Blob instances, but some browsers + // (Firefox 3.6) support the File API but not Blobs. + // This check allows the tests to run with + // dummy objects: + if ((window.Blob && file instanceof Blob) || + (window.File && file instanceof File)) { + formData.append( + options.paramName[index] || paramName, + file, + file.name + ); + } + }); + } + } + options.data = formData; + } + // Blob reference is not needed anymore, free memory: + options.blob = null; + }, + + _initIframeSettings: function (options) { + // Setting the dataType to iframe enables the iframe transport: + options.dataType = 'iframe ' + (options.dataType || ''); + // The iframe transport accepts a serialized array as form data: + options.formData = this._getFormData(options); + // Add redirect url to form data on cross-domain uploads: + if (options.redirect && $('').prop('href', options.url) + .prop('host') !== location.host) { + options.formData.push({ + name: options.redirectParamName || 'redirect', + value: options.redirect + }); + } + }, + + _initDataSettings: function (options) { + if (this._isXHRUpload(options)) { + if (!this._chunkedUpload(options, true)) { + if (!options.data) { + this._initXHRData(options); + } + this._initProgressListener(options); + } + if (options.postMessage) { + // Setting the dataType to postmessage enables the + // postMessage transport: + options.dataType = 'postmessage ' + (options.dataType || ''); + } + } else { + this._initIframeSettings(options, 'iframe'); + } + }, + + _getParamName: function (options) { + var fileInput = $(options.fileInput), + paramName = options.paramName; + if (!paramName) { + paramName = []; + fileInput.each(function () { + var input = $(this), + name = input.prop('name') || 'files[]', + i = (input.prop('files') || [1]).length; + while (i) { + paramName.push(name); + i -= 1; + } + }); + if (!paramName.length) { + paramName = [fileInput.prop('name') || 'files[]']; + } + } else if (!$.isArray(paramName)) { + paramName = [paramName]; + } + return paramName; + }, + + _initFormSettings: function (options) { + // Retrieve missing options from the input field and the + // associated form, if available: + if (!options.form || !options.form.length) { + options.form = $(options.fileInput.prop('form')); + // If the given file input doesn't have an associated form, + // use the default widget file input's form: + if (!options.form.length) { + options.form = $(this.options.fileInput.prop('form')); + } + } + options.paramName = this._getParamName(options); + if (!options.url) { + options.url = options.form.prop('action') || location.href; + } + // The HTTP request method must be "POST" or "PUT": + options.type = (options.type || options.form.prop('method') || '') + .toUpperCase(); + if (options.type !== 'POST' && options.type !== 'PUT') { + options.type = 'POST'; + } + if (!options.formAcceptCharset) { + options.formAcceptCharset = options.form.attr('accept-charset'); + } + }, + + _getAJAXSettings: function (data) { + var options = $.extend({}, this.options, data); + this._initFormSettings(options); + this._initDataSettings(options); + return options; + }, + + // Maps jqXHR callbacks to the equivalent + // methods of the given Promise object: + _enhancePromise: function (promise) { + promise.success = promise.done; + promise.error = promise.fail; + promise.complete = promise.always; + return promise; + }, + + // Creates and returns a Promise object enhanced with + // the jqXHR methods abort, success, error and complete: + _getXHRPromise: function (resolveOrReject, context, args) { + var dfd = $.Deferred(), + promise = dfd.promise(); + context = context || this.options.context || promise; + if (resolveOrReject === true) { + dfd.resolveWith(context, args); + } else if (resolveOrReject === false) { + dfd.rejectWith(context, args); + } + promise.abort = dfd.promise; + return this._enhancePromise(promise); + }, + + // Parses the Range header from the server response + // and returns the uploaded bytes: + _getUploadedBytes: function (jqXHR) { + var range = jqXHR.getResponseHeader('Range'), + parts = range && range.split('-'), + upperBytesPos = parts && parts.length > 1 && + parseInt(parts[1], 10); + return upperBytesPos && upperBytesPos + 1; + }, + + // Uploads a file in multiple, sequential requests + // by splitting the file up in multiple blob chunks. + // If the second parameter is true, only tests if the file + // should be uploaded in chunks, but does not invoke any + // upload requests: + _chunkedUpload: function (options, testOnly) { + var that = this, + file = options.files[0], + fs = file.size, + ub = options.uploadedBytes = options.uploadedBytes || 0, + mcs = options.maxChunkSize || fs, + slice = file.slice || file.webkitSlice || file.mozSlice, + dfd = $.Deferred(), + promise = dfd.promise(), + jqXHR, + upload; + if (!(this._isXHRUpload(options) && slice && (ub || mcs < fs)) || + options.data) { + return false; + } + if (testOnly) { + return true; + } + if (ub >= fs) { + file.error = 'Uploaded bytes exceed file size'; + return this._getXHRPromise( + false, + options.context, + [null, 'error', file.error] + ); + } + // The chunk upload method: + upload = function (i) { + // Clone the options object for each chunk upload: + var o = $.extend({}, options); + o.blob = slice.call( + file, + ub, + ub + mcs, + file.type + ); + // Store the current chunk size, as the blob itself + // will be dereferenced after data processing: + o.chunkSize = o.blob.size; + // Expose the chunk bytes position range: + o.contentRange = 'bytes ' + ub + '-' + + (ub + o.chunkSize - 1) + '/' + fs; + // Process the upload data (the blob and potential form data): + that._initXHRData(o); + // Add progress listeners for this chunk upload: + that._initProgressListener(o); + jqXHR = ($.ajax(o) || that._getXHRPromise(false, o.context)) + .done(function (result, textStatus, jqXHR) { + ub = that._getUploadedBytes(jqXHR) || + (ub + o.chunkSize); + // Create a progress event if upload is done and + // no progress event has been invoked for this chunk: + if (!o.loaded) { + that._onProgress($.Event('progress', { + lengthComputable: true, + loaded: ub - o.uploadedBytes, + total: ub - o.uploadedBytes + }), o); + } + options.uploadedBytes = o.uploadedBytes = ub; + if (ub < fs) { + // File upload not yet complete, + // continue with the next chunk: + upload(); + } else { + dfd.resolveWith( + o.context, + [result, textStatus, jqXHR] + ); + } + }) + .fail(function (jqXHR, textStatus, errorThrown) { + dfd.rejectWith( + o.context, + [jqXHR, textStatus, errorThrown] + ); + }); + }; + this._enhancePromise(promise); + promise.abort = function () { + return jqXHR.abort(); + }; + upload(); + return promise; + }, + + _beforeSend: function (e, data) { + if (this._active === 0) { + // the start callback is triggered when an upload starts + // and no other uploads are currently running, + // equivalent to the global ajaxStart event: + this._trigger('start'); + // Set timer for global bitrate progress calculation: + this._bitrateTimer = new this._BitrateTimer(); + } + this._active += 1; + // Initialize the global progress values: + this._loaded += data.uploadedBytes || 0; + this._total += this._getTotal(data.files); + }, + + _onDone: function (result, textStatus, jqXHR, options) { + if (!this._isXHRUpload(options)) { + // Create a progress event for each iframe load: + this._onProgress($.Event('progress', { + lengthComputable: true, + loaded: 1, + total: 1 + }), options); + } + options.result = result; + options.textStatus = textStatus; + options.jqXHR = jqXHR; + this._trigger('done', null, options); + }, + + _onFail: function (jqXHR, textStatus, errorThrown, options) { + options.jqXHR = jqXHR; + options.textStatus = textStatus; + options.errorThrown = errorThrown; + this._trigger('fail', null, options); + if (options.recalculateProgress) { + // Remove the failed (error or abort) file upload from + // the global progress calculation: + this._loaded -= options.loaded || options.uploadedBytes || 0; + this._total -= options.total || this._getTotal(options.files); + } + }, + + _onAlways: function (jqXHRorResult, textStatus, jqXHRorError, options) { + this._active -= 1; + options.textStatus = textStatus; + if (jqXHRorError && jqXHRorError.always) { + options.jqXHR = jqXHRorError; + options.result = jqXHRorResult; + } else { + options.jqXHR = jqXHRorResult; + options.errorThrown = jqXHRorError; + } + this._trigger('always', null, options); + if (this._active === 0) { + // The stop callback is triggered when all uploads have + // been completed, equivalent to the global ajaxStop event: + this._trigger('stop'); + // Reset the global progress values: + this._loaded = this._total = 0; + this._bitrateTimer = null; + } + }, + + _onSend: function (e, data) { + var that = this, + jqXHR, + aborted, + slot, + pipe, + options = that._getAJAXSettings(data), + send = function () { + that._sending += 1; + // Set timer for bitrate progress calculation: + options._bitrateTimer = new that._BitrateTimer(); + jqXHR = jqXHR || ( + ((aborted || that._trigger('send', e, options) === false) && + that._getXHRPromise(false, options.context, aborted)) || + that._chunkedUpload(options) || $.ajax(options) + ).done(function (result, textStatus, jqXHR) { + that._onDone(result, textStatus, jqXHR, options); + }).fail(function (jqXHR, textStatus, errorThrown) { + that._onFail(jqXHR, textStatus, errorThrown, options); + }).always(function (jqXHRorResult, textStatus, jqXHRorError) { + that._sending -= 1; + that._onAlways( + jqXHRorResult, + textStatus, + jqXHRorError, + options + ); + if (options.limitConcurrentUploads && + options.limitConcurrentUploads > that._sending) { + // Start the next queued upload, + // that has not been aborted: + var nextSlot = that._slots.shift(), + isPending; + while (nextSlot) { + // jQuery 1.6 doesn't provide .state(), + // while jQuery 1.8+ removed .isRejected(): + isPending = nextSlot.state ? + nextSlot.state() === 'pending' : + !nextSlot.isRejected(); + if (isPending) { + nextSlot.resolve(); + break; + } + nextSlot = that._slots.shift(); + } + } + }); + return jqXHR; + }; + this._beforeSend(e, options); + if (this.options.sequentialUploads || + (this.options.limitConcurrentUploads && + this.options.limitConcurrentUploads <= this._sending)) { + if (this.options.limitConcurrentUploads > 1) { + slot = $.Deferred(); + this._slots.push(slot); + pipe = slot.pipe(send); + } else { + pipe = (this._sequence = this._sequence.pipe(send, send)); + } + // Return the piped Promise object, enhanced with an abort method, + // which is delegated to the jqXHR object of the current upload, + // and jqXHR callbacks mapped to the equivalent Promise methods: + pipe.abort = function () { + aborted = [undefined, 'abort', 'abort']; + if (!jqXHR) { + if (slot) { + slot.rejectWith(options.context, aborted); + } + return send(); + } + return jqXHR.abort(); + }; + return this._enhancePromise(pipe); + } + return send(); + }, + + _onAdd: function (e, data) { + var that = this, + result = true, + options = $.extend({}, this.options, data), + limit = options.limitMultiFileUploads, + paramName = this._getParamName(options), + paramNameSet, + paramNameSlice, + fileSet, + i; + if (!(options.singleFileUploads || limit) || + !this._isXHRUpload(options)) { + fileSet = [data.files]; + paramNameSet = [paramName]; + } else if (!options.singleFileUploads && limit) { + fileSet = []; + paramNameSet = []; + for (i = 0; i < data.files.length; i += limit) { + fileSet.push(data.files.slice(i, i + limit)); + paramNameSlice = paramName.slice(i, i + limit); + if (!paramNameSlice.length) { + paramNameSlice = paramName; + } + paramNameSet.push(paramNameSlice); + } + } else { + paramNameSet = paramName; + } + data.originalFiles = data.files; + $.each(fileSet || data.files, function (index, element) { + var newData = $.extend({}, data); + newData.files = fileSet ? element : [element]; + newData.paramName = paramNameSet[index]; + newData.submit = function () { + newData.jqXHR = this.jqXHR = + (that._trigger('submit', e, this) !== false) && + that._onSend(e, this); + return this.jqXHR; + }; + result = that._trigger('add', e, newData); + return result; + }); + return result; + }, + + _replaceFileInput: function (input) { + var inputClone = input.clone(true); + $('').append(inputClone)[0].reset(); + // Detaching allows to insert the fileInput on another form + // without loosing the file input value: + input.after(inputClone).detach(); + // Avoid memory leaks with the detached file input: + $.cleanData(input.unbind('remove')); + // Replace the original file input element in the fileInput + // elements set with the clone, which has been copied including + // event handlers: + this.options.fileInput = this.options.fileInput.map(function (i, el) { + if (el === input[0]) { + return inputClone[0]; + } + return el; + }); + // If the widget has been initialized on the file input itself, + // override this.element with the file input clone: + if (input[0] === this.element[0]) { + this.element = inputClone; + } + }, + + _handleFileTreeEntry: function (entry, path) { + var that = this, + dfd = $.Deferred(), + errorHandler = function (e) { + if (e && !e.entry) { + e.entry = entry; + } + // Since $.when returns immediately if one + // Deferred is rejected, we use resolve instead. + // This allows valid files and invalid items + // to be returned together in one set: + dfd.resolve([e]); + }, + dirReader; + path = path || ''; + if (entry.isFile) { + if (entry._file) { + // Workaround for Chrome bug #149735 + entry._file.relativePath = path; + dfd.resolve(entry._file); + } else { + entry.file(function (file) { + file.relativePath = path; + dfd.resolve(file); + }, errorHandler); + } + } else if (entry.isDirectory) { + dirReader = entry.createReader(); + dirReader.readEntries(function (entries) { + that._handleFileTreeEntries( + entries, + path + entry.name + '/' + ).done(function (files) { + dfd.resolve(files); + }).fail(errorHandler); + }, errorHandler); + } else { + // Return an empy list for file system items + // other than files or directories: + dfd.resolve([]); + } + return dfd.promise(); + }, + + _handleFileTreeEntries: function (entries, path) { + var that = this; + return $.when.apply( + $, + $.map(entries, function (entry) { + return that._handleFileTreeEntry(entry, path); + }) + ).pipe(function () { + return Array.prototype.concat.apply( + [], + arguments + ); + }); + }, + + _getDroppedFiles: function (dataTransfer) { + dataTransfer = dataTransfer || {}; + var items = dataTransfer.items; + if (items && items.length && (items[0].webkitGetAsEntry || + items[0].getAsEntry)) { + return this._handleFileTreeEntries( + $.map(items, function (item) { + var entry; + if (item.webkitGetAsEntry) { + entry = item.webkitGetAsEntry(); + if (entry) { + // Workaround for Chrome bug #149735: + entry._file = item.getAsFile(); + } + return entry; + } + return item.getAsEntry(); + }) + ); + } + return $.Deferred().resolve( + $.makeArray(dataTransfer.files) + ).promise(); + }, + + _getSingleFileInputFiles: function (fileInput) { + fileInput = $(fileInput); + var entries = fileInput.prop('webkitEntries') || + fileInput.prop('entries'), + files, + value; + if (entries && entries.length) { + return this._handleFileTreeEntries(entries); + } + files = $.makeArray(fileInput.prop('files')); + if (!files.length) { + value = fileInput.prop('value'); + if (!value) { + return $.Deferred().resolve([]).promise(); + } + // If the files property is not available, the browser does not + // support the File API and we add a pseudo File object with + // the input value as name with path information removed: + files = [{name: value.replace(/^.*\\/, '')}]; + } else if (files[0].name === undefined && files[0].fileName) { + // File normalization for Safari 4 and Firefox 3: + $.each(files, function (index, file) { + file.name = file.fileName; + file.size = file.fileSize; + }); + } + return $.Deferred().resolve(files).promise(); + }, + + _getFileInputFiles: function (fileInput) { + if (!(fileInput instanceof $) || fileInput.length === 1) { + return this._getSingleFileInputFiles(fileInput); + } + return $.when.apply( + $, + $.map(fileInput, this._getSingleFileInputFiles) + ).pipe(function () { + return Array.prototype.concat.apply( + [], + arguments + ); + }); + }, + + _onChange: function (e) { + var that = this, + data = { + fileInput: $(e.target), + form: $(e.target.form) + }; + this._getFileInputFiles(data.fileInput).always(function (files) { + data.files = files; + if (that.options.replaceFileInput) { + that._replaceFileInput(data.fileInput); + } + if (that._trigger('change', e, data) !== false) { + that._onAdd(e, data); + } + }); + }, + + _onPaste: function (e) { + var cbd = e.originalEvent.clipboardData, + items = (cbd && cbd.items) || [], + data = {files: []}; + $.each(items, function (index, item) { + var file = item.getAsFile && item.getAsFile(); + if (file) { + data.files.push(file); + } + }); + if (this._trigger('paste', e, data) === false || + this._onAdd(e, data) === false) { + return false; + } + }, + + _onDrop: function (e) { + var that = this, + dataTransfer = e.dataTransfer = e.originalEvent.dataTransfer, + data = {}; + if (dataTransfer && dataTransfer.files && dataTransfer.files.length) { + e.preventDefault(); + } + this._getDroppedFiles(dataTransfer).always(function (files) { + data.files = files; + if (that._trigger('drop', e, data) !== false) { + that._onAdd(e, data); + } + }); + }, + + _onDragOver: function (e) { + var dataTransfer = e.dataTransfer = e.originalEvent.dataTransfer; + if (this._trigger('dragover', e) === false) { + return false; + } + if (dataTransfer && $.inArray('Files', dataTransfer.types) !== -1) { + dataTransfer.dropEffect = 'copy'; + e.preventDefault(); + } + }, + + _initEventHandlers: function () { + if (this._isXHRUpload(this.options)) { + this._on(this.options.dropZone, { + dragover: this._onDragOver, + drop: this._onDrop + }); + this._on(this.options.pasteZone, { + paste: this._onPaste + }); + } + this._on(this.options.fileInput, { + change: this._onChange + }); + }, + + _destroyEventHandlers: function () { + this._off(this.options.dropZone, 'dragover drop'); + this._off(this.options.pasteZone, 'paste'); + this._off(this.options.fileInput, 'change'); + }, + + _setOption: function (key, value) { + var refresh = $.inArray(key, this._refreshOptionsList) !== -1; + if (refresh) { + this._destroyEventHandlers(); + } + this._super(key, value); + if (refresh) { + this._initSpecialOptions(); + this._initEventHandlers(); + } + }, + + _initSpecialOptions: function () { + var options = this.options; + if (options.fileInput === undefined) { + options.fileInput = this.element.is('input[type="file"]') ? + this.element : this.element.find('input[type="file"]'); + } else if (!(options.fileInput instanceof $)) { + options.fileInput = $(options.fileInput); + } + if (!(options.dropZone instanceof $)) { + options.dropZone = $(options.dropZone); + } + if (!(options.pasteZone instanceof $)) { + options.pasteZone = $(options.pasteZone); + } + }, + + _create: function () { + var options = this.options; + // Initialize options set via HTML5 data-attributes: + $.extend(options, $(this.element[0].cloneNode(false)).data()); + this._initSpecialOptions(); + this._slots = []; + this._sequence = this._getXHRPromise(true); + this._sending = this._active = this._loaded = this._total = 0; + this._initEventHandlers(); + }, + + _destroy: function () { + this._destroyEventHandlers(); + }, + + // This method is exposed to the widget API and allows adding files + // using the fileupload API. The data parameter accepts an object which + // must have a files property and can contain additional options: + // .fileupload('add', {files: filesList}); + add: function (data) { + var that = this; + if (!data || this.options.disabled) { + return; + } + if (data.fileInput && !data.files) { + this._getFileInputFiles(data.fileInput).always(function (files) { + data.files = files; + that._onAdd(null, data); + }); + } else { + data.files = $.makeArray(data.files); + this._onAdd(null, data); + } + }, + + // This method is exposed to the widget API and allows sending files + // using the fileupload API. The data parameter accepts an object which + // must have a files or fileInput property and can contain additional options: + // .fileupload('send', {files: filesList}); + // The method returns a Promise object for the file upload call. + send: function (data) { + if (data && !this.options.disabled) { + if (data.fileInput && !data.files) { + var that = this, + dfd = $.Deferred(), + promise = dfd.promise(), + jqXHR, + aborted; + promise.abort = function () { + aborted = true; + if (jqXHR) { + return jqXHR.abort(); + } + dfd.reject(null, 'abort', 'abort'); + return promise; + }; + this._getFileInputFiles(data.fileInput).always( + function (files) { + if (aborted) { + return; + } + data.files = files; + jqXHR = that._onSend(null, data).then( + function (result, textStatus, jqXHR) { + dfd.resolve(result, textStatus, jqXHR); + }, + function (jqXHR, textStatus, errorThrown) { + dfd.reject(jqXHR, textStatus, errorThrown); + } + ); + } + ); + return this._enhancePromise(promise); + } + data.files = $.makeArray(data.files); + if (data.files.length) { + return this._onSend(null, data); + } + } + return this._getXHRPromise(false, data && data.context); + } + + }); + +})); diff --git a/app/assets/javascripts/shared/jquery.js b/app/assets/javascripts/shared/jquery.js deleted file mode 100755 index 11e6d06..0000000 --- a/app/assets/javascripts/shared/jquery.js +++ /dev/null @@ -1,9046 +0,0 @@ -/*! - * jQuery JavaScript Library v1.6.4 - * http://jquery.com/ - * - * Copyright 2011, John Resig - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * Includes Sizzle.js - * http://sizzlejs.com/ - * Copyright 2011, The Dojo Foundation - * Released under the MIT, BSD, and GPL Licenses. - * - * Date: Mon Sep 12 18:54:48 2011 -0400 - */ -(function( window, undefined ) { - -// Use the correct document accordingly with window argument (sandbox) -var document = window.document, - navigator = window.navigator, - location = window.location; -var jQuery = (function() { - -// Define a local copy of jQuery -var jQuery = function( selector, context ) { - // The jQuery object is actually just the init constructor 'enhanced' - return new jQuery.fn.init( selector, context, rootjQuery ); - }, - - // Map over jQuery in case of overwrite - _jQuery = window.jQuery, - - // Map over the $ in case of overwrite - _$ = window.$, - - // A central reference to the root jQuery(document) - rootjQuery, - - // A simple way to check for HTML strings or ID strings - // Prioritize #id over to avoid XSS via location.hash (#9521) - quickExpr = /^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/, - - // Check if a string has a non-whitespace character in it - rnotwhite = /\S/, - - // Used for trimming whitespace - trimLeft = /^\s+/, - trimRight = /\s+$/, - - // Check for digits - rdigit = /\d/, - - // Match a standalone tag - rsingleTag = /^<(\w+)\s*\/?>(?:<\/\1>)?$/, - - // JSON RegExp - rvalidchars = /^[\],:{}\s]*$/, - rvalidescape = /\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, - rvalidtokens = /"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, - rvalidbraces = /(?:^|:|,)(?:\s*\[)+/g, - - // Useragent RegExp - rwebkit = /(webkit)[ \/]([\w.]+)/, - ropera = /(opera)(?:.*version)?[ \/]([\w.]+)/, - rmsie = /(msie) ([\w.]+)/, - rmozilla = /(mozilla)(?:.*? rv:([\w.]+))?/, - - // Matches dashed string for camelizing - rdashAlpha = /-([a-z]|[0-9])/ig, - rmsPrefix = /^-ms-/, - - // Used by jQuery.camelCase as callback to replace() - fcamelCase = function( all, letter ) { - return ( letter + "" ).toUpperCase(); - }, - - // Keep a UserAgent string for use with jQuery.browser - userAgent = navigator.userAgent, - - // For matching the engine and version of the browser - browserMatch, - - // The deferred used on DOM ready - readyList, - - // The ready event handler - DOMContentLoaded, - - // Save a reference to some core methods - toString = Object.prototype.toString, - hasOwn = Object.prototype.hasOwnProperty, - push = Array.prototype.push, - slice = Array.prototype.slice, - trim = String.prototype.trim, - indexOf = Array.prototype.indexOf, - - // [[Class]] -> type pairs - class2type = {}; - -jQuery.fn = jQuery.prototype = { - constructor: jQuery, - init: function( selector, context, rootjQuery ) { - var match, elem, ret, doc; - - // Handle $(""), $(null), or $(undefined) - if ( !selector ) { - return this; - } - - // Handle $(DOMElement) - if ( selector.nodeType ) { - this.context = this[0] = selector; - this.length = 1; - return this; - } - - // The body element only exists once, optimize finding it - if ( selector === "body" && !context && document.body ) { - this.context = document; - this[0] = document.body; - this.selector = selector; - this.length = 1; - return this; - } - - // Handle HTML strings - if ( typeof selector === "string" ) { - // Are we dealing with HTML string or an ID? - if ( selector.charAt(0) === "<" && selector.charAt( selector.length - 1 ) === ">" && selector.length >= 3 ) { - // Assume that strings that start and end with <> are HTML and skip the regex check - match = [ null, selector, null ]; - - } else { - match = quickExpr.exec( selector ); - } - - // Verify a match, and that no context was specified for #id - if ( match && (match[1] || !context) ) { - - // HANDLE: $(html) -> $(array) - if ( match[1] ) { - context = context instanceof jQuery ? context[0] : context; - doc = (context ? context.ownerDocument || context : document); - - // If a single string is passed in and it's a single tag - // just do a createElement and skip the rest - ret = rsingleTag.exec( selector ); - - if ( ret ) { - if ( jQuery.isPlainObject( context ) ) { - selector = [ document.createElement( ret[1] ) ]; - jQuery.fn.attr.call( selector, context, true ); - - } else { - selector = [ doc.createElement( ret[1] ) ]; - } - - } else { - ret = jQuery.buildFragment( [ match[1] ], [ doc ] ); - selector = (ret.cacheable ? jQuery.clone(ret.fragment) : ret.fragment).childNodes; - } - - return jQuery.merge( this, selector ); - - // HANDLE: $("#id") - } else { - elem = document.getElementById( match[2] ); - - // Check parentNode to catch when Blackberry 4.6 returns - // nodes that are no longer in the document #6963 - if ( elem && elem.parentNode ) { - // Handle the case where IE and Opera return items - // by name instead of ID - if ( elem.id !== match[2] ) { - return rootjQuery.find( selector ); - } - - // Otherwise, we inject the element directly into the jQuery object - this.length = 1; - this[0] = elem; - } - - this.context = document; - this.selector = selector; - return this; - } - - // HANDLE: $(expr, $(...)) - } else if ( !context || context.jquery ) { - return (context || rootjQuery).find( selector ); - - // HANDLE: $(expr, context) - // (which is just equivalent to: $(context).find(expr) - } else { - return this.constructor( context ).find( selector ); - } - - // HANDLE: $(function) - // Shortcut for document ready - } else if ( jQuery.isFunction( selector ) ) { - return rootjQuery.ready( selector ); - } - - if (selector.selector !== undefined) { - this.selector = selector.selector; - this.context = selector.context; - } - - return jQuery.makeArray( selector, this ); - }, - - // Start with an empty selector - selector: "", - - // The current version of jQuery being used - jquery: "1.6.4", - - // The default length of a jQuery object is 0 - length: 0, - - // The number of elements contained in the matched element set - size: function() { - return this.length; - }, - - toArray: function() { - return slice.call( this, 0 ); - }, - - // Get the Nth element in the matched element set OR - // Get the whole matched element set as a clean array - get: function( num ) { - return num == null ? - - // Return a 'clean' array - this.toArray() : - - // Return just the object - ( num < 0 ? this[ this.length + num ] : this[ num ] ); - }, - - // Take an array of elements and push it onto the stack - // (returning the new matched element set) - pushStack: function( elems, name, selector ) { - // Build a new jQuery matched element set - var ret = this.constructor(); - - if ( jQuery.isArray( elems ) ) { - push.apply( ret, elems ); - - } else { - jQuery.merge( ret, elems ); - } - - // Add the old object onto the stack (as a reference) - ret.prevObject = this; - - ret.context = this.context; - - if ( name === "find" ) { - ret.selector = this.selector + (this.selector ? " " : "") + selector; - } else if ( name ) { - ret.selector = this.selector + "." + name + "(" + selector + ")"; - } - - // Return the newly-formed element set - return ret; - }, - - // Execute a callback for every element in the matched set. - // (You can seed the arguments with an array of args, but this is - // only used internally.) - each: function( callback, args ) { - return jQuery.each( this, callback, args ); - }, - - ready: function( fn ) { - // Attach the listeners - jQuery.bindReady(); - - // Add the callback - readyList.done( fn ); - - return this; - }, - - eq: function( i ) { - return i === -1 ? - this.slice( i ) : - this.slice( i, +i + 1 ); - }, - - first: function() { - return this.eq( 0 ); - }, - - last: function() { - return this.eq( -1 ); - }, - - slice: function() { - return this.pushStack( slice.apply( this, arguments ), - "slice", slice.call(arguments).join(",") ); - }, - - map: function( callback ) { - return this.pushStack( jQuery.map(this, function( elem, i ) { - return callback.call( elem, i, elem ); - })); - }, - - end: function() { - return this.prevObject || this.constructor(null); - }, - - // For internal use only. - // Behaves like an Array's method, not like a jQuery method. - push: push, - sort: [].sort, - splice: [].splice -}; - -// Give the init function the jQuery prototype for later instantiation -jQuery.fn.init.prototype = jQuery.fn; - -jQuery.extend = jQuery.fn.extend = function() { - var options, name, src, copy, copyIsArray, clone, - target = arguments[0] || {}, - i = 1, - length = arguments.length, - deep = false; - - // Handle a deep copy situation - if ( typeof target === "boolean" ) { - deep = target; - target = arguments[1] || {}; - // skip the boolean and the target - i = 2; - } - - // Handle case when target is a string or something (possible in deep copy) - if ( typeof target !== "object" && !jQuery.isFunction(target) ) { - target = {}; - } - - // extend jQuery itself if only one argument is passed - if ( length === i ) { - target = this; - --i; - } - - for ( ; i < length; i++ ) { - // Only deal with non-null/undefined values - if ( (options = arguments[ i ]) != null ) { - // Extend the base object - for ( name in options ) { - src = target[ name ]; - copy = options[ name ]; - - // Prevent never-ending loop - if ( target === copy ) { - continue; - } - - // Recurse if we're merging plain objects or arrays - if ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) { - if ( copyIsArray ) { - copyIsArray = false; - clone = src && jQuery.isArray(src) ? src : []; - - } else { - clone = src && jQuery.isPlainObject(src) ? src : {}; - } - - // Never move original objects, clone them - target[ name ] = jQuery.extend( deep, clone, copy ); - - // Don't bring in undefined values - } else if ( copy !== undefined ) { - target[ name ] = copy; - } - } - } - } - - // Return the modified object - return target; -}; - -jQuery.extend({ - noConflict: function( deep ) { - if ( window.$ === jQuery ) { - window.$ = _$; - } - - if ( deep && window.jQuery === jQuery ) { - window.jQuery = _jQuery; - } - - return jQuery; - }, - - // Is the DOM ready to be used? Set to true once it occurs. - isReady: false, - - // A counter to track how many items to wait for before - // the ready event fires. See #6781 - readyWait: 1, - - // Hold (or release) the ready event - holdReady: function( hold ) { - if ( hold ) { - jQuery.readyWait++; - } else { - jQuery.ready( true ); - } - }, - - // Handle when the DOM is ready - ready: function( wait ) { - // Either a released hold or an DOMready/load event and not yet ready - if ( (wait === true && !--jQuery.readyWait) || (wait !== true && !jQuery.isReady) ) { - // Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443). - if ( !document.body ) { - return setTimeout( jQuery.ready, 1 ); - } - - // Remember that the DOM is ready - jQuery.isReady = true; - - // If a normal DOM Ready event fired, decrement, and wait if need be - if ( wait !== true && --jQuery.readyWait > 0 ) { - return; - } - - // If there are functions bound, to execute - readyList.resolveWith( document, [ jQuery ] ); - - // Trigger any bound ready events - if ( jQuery.fn.trigger ) { - jQuery( document ).trigger( "ready" ).unbind( "ready" ); - } - } - }, - - bindReady: function() { - if ( readyList ) { - return; - } - - readyList = jQuery._Deferred(); - - // Catch cases where $(document).ready() is called after the - // browser event has already occurred. - if ( document.readyState === "complete" ) { - // Handle it asynchronously to allow scripts the opportunity to delay ready - return setTimeout( jQuery.ready, 1 ); - } - - // Mozilla, Opera and webkit nightlies currently support this event - if ( document.addEventListener ) { - // Use the handy event callback - document.addEventListener( "DOMContentLoaded", DOMContentLoaded, false ); - - // A fallback to window.onload, that will always work - window.addEventListener( "load", jQuery.ready, false ); - - // If IE event model is used - } else if ( document.attachEvent ) { - // ensure firing before onload, - // maybe late but safe also for iframes - document.attachEvent( "onreadystatechange", DOMContentLoaded ); - - // A fallback to window.onload, that will always work - window.attachEvent( "onload", jQuery.ready ); - - // If IE and not a frame - // continually check to see if the document is ready - var toplevel = false; - - try { - toplevel = window.frameElement == null; - } catch(e) {} - - if ( document.documentElement.doScroll && toplevel ) { - doScrollCheck(); - } - } - }, - - // See test/unit/core.js for details concerning isFunction. - // Since version 1.3, DOM methods and functions like alert - // aren't supported. They return false on IE (#2968). - isFunction: function( obj ) { - return jQuery.type(obj) === "function"; - }, - - isArray: Array.isArray || function( obj ) { - return jQuery.type(obj) === "array"; - }, - - // A crude way of determining if an object is a window - isWindow: function( obj ) { - return obj && typeof obj === "object" && "setInterval" in obj; - }, - - isNaN: function( obj ) { - return obj == null || !rdigit.test( obj ) || isNaN( obj ); - }, - - type: function( obj ) { - return obj == null ? - String( obj ) : - class2type[ toString.call(obj) ] || "object"; - }, - - isPlainObject: function( obj ) { - // Must be an Object. - // Because of IE, we also have to check the presence of the constructor property. - // Make sure that DOM nodes and window objects don't pass through, as well - if ( !obj || jQuery.type(obj) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) { - return false; - } - - try { - // Not own constructor property must be Object - if ( obj.constructor && - !hasOwn.call(obj, "constructor") && - !hasOwn.call(obj.constructor.prototype, "isPrototypeOf") ) { - return false; - } - } catch ( e ) { - // IE8,9 Will throw exceptions on certain host objects #9897 - return false; - } - - // Own properties are enumerated firstly, so to speed up, - // if last one is own, then all properties are own. - - var key; - for ( key in obj ) {} - - return key === undefined || hasOwn.call( obj, key ); - }, - - isEmptyObject: function( obj ) { - for ( var name in obj ) { - return false; - } - return true; - }, - - error: function( msg ) { - throw msg; - }, - - parseJSON: function( data ) { - if ( typeof data !== "string" || !data ) { - return null; - } - - // Make sure leading/trailing whitespace is removed (IE can't handle it) - data = jQuery.trim( data ); - - // Attempt to parse using the native JSON parser first - if ( window.JSON && window.JSON.parse ) { - return window.JSON.parse( data ); - } - - // Make sure the incoming data is actual JSON - // Logic borrowed from http://json.org/json2.js - if ( rvalidchars.test( data.replace( rvalidescape, "@" ) - .replace( rvalidtokens, "]" ) - .replace( rvalidbraces, "")) ) { - - return (new Function( "return " + data ))(); - - } - jQuery.error( "Invalid JSON: " + data ); - }, - - // Cross-browser xml parsing - parseXML: function( data ) { - var xml, tmp; - try { - if ( window.DOMParser ) { // Standard - tmp = new DOMParser(); - xml = tmp.parseFromString( data , "text/xml" ); - } else { // IE - xml = new ActiveXObject( "Microsoft.XMLDOM" ); - xml.async = "false"; - xml.loadXML( data ); - } - } catch( e ) { - xml = undefined; - } - if ( !xml || !xml.documentElement || xml.getElementsByTagName( "parsererror" ).length ) { - jQuery.error( "Invalid XML: " + data ); - } - return xml; - }, - - noop: function() {}, - - // Evaluates a script in a global context - // Workarounds based on findings by Jim Driscoll - // http://weblogs.java.net/blog/driscoll/archive/2009/09/08/eval-javascript-global-context - globalEval: function( data ) { - if ( data && rnotwhite.test( data ) ) { - // We use execScript on Internet Explorer - // We use an anonymous function so that context is window - // rather than jQuery in Firefox - ( window.execScript || function( data ) { - window[ "eval" ].call( window, data ); - } )( data ); - } - }, - - // Convert dashed to camelCase; used by the css and data modules - // Microsoft forgot to hump their vendor prefix (#9572) - camelCase: function( string ) { - return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase ); - }, - - nodeName: function( elem, name ) { - return elem.nodeName && elem.nodeName.toUpperCase() === name.toUpperCase(); - }, - - // args is for internal usage only - each: function( object, callback, args ) { - var name, i = 0, - length = object.length, - isObj = length === undefined || jQuery.isFunction( object ); - - if ( args ) { - if ( isObj ) { - for ( name in object ) { - if ( callback.apply( object[ name ], args ) === false ) { - break; - } - } - } else { - for ( ; i < length; ) { - if ( callback.apply( object[ i++ ], args ) === false ) { - break; - } - } - } - - // A special, fast, case for the most common use of each - } else { - if ( isObj ) { - for ( name in object ) { - if ( callback.call( object[ name ], name, object[ name ] ) === false ) { - break; - } - } - } else { - for ( ; i < length; ) { - if ( callback.call( object[ i ], i, object[ i++ ] ) === false ) { - break; - } - } - } - } - - return object; - }, - - // Use native String.trim function wherever possible - trim: trim ? - function( text ) { - return text == null ? - "" : - trim.call( text ); - } : - - // Otherwise use our own trimming functionality - function( text ) { - return text == null ? - "" : - text.toString().replace( trimLeft, "" ).replace( trimRight, "" ); - }, - - // results is for internal usage only - makeArray: function( array, results ) { - var ret = results || []; - - if ( array != null ) { - // The window, strings (and functions) also have 'length' - // The extra typeof function check is to prevent crashes - // in Safari 2 (See: #3039) - // Tweaked logic slightly to handle Blackberry 4.7 RegExp issues #6930 - var type = jQuery.type( array ); - - if ( array.length == null || type === "string" || type === "function" || type === "regexp" || jQuery.isWindow( array ) ) { - push.call( ret, array ); - } else { - jQuery.merge( ret, array ); - } - } - - return ret; - }, - - inArray: function( elem, array ) { - if ( !array ) { - return -1; - } - - if ( indexOf ) { - return indexOf.call( array, elem ); - } - - for ( var i = 0, length = array.length; i < length; i++ ) { - if ( array[ i ] === elem ) { - return i; - } - } - - return -1; - }, - - merge: function( first, second ) { - var i = first.length, - j = 0; - - if ( typeof second.length === "number" ) { - for ( var l = second.length; j < l; j++ ) { - first[ i++ ] = second[ j ]; - } - - } else { - while ( second[j] !== undefined ) { - first[ i++ ] = second[ j++ ]; - } - } - - first.length = i; - - return first; - }, - - grep: function( elems, callback, inv ) { - var ret = [], retVal; - inv = !!inv; - - // Go through the array, only saving the items - // that pass the validator function - for ( var i = 0, length = elems.length; i < length; i++ ) { - retVal = !!callback( elems[ i ], i ); - if ( inv !== retVal ) { - ret.push( elems[ i ] ); - } - } - - return ret; - }, - - // arg is for internal usage only - map: function( elems, callback, arg ) { - var value, key, ret = [], - i = 0, - length = elems.length, - // jquery objects are treated as arrays - isArray = elems instanceof jQuery || length !== undefined && typeof length === "number" && ( ( length > 0 && elems[ 0 ] && elems[ length -1 ] ) || length === 0 || jQuery.isArray( elems ) ) ; - - // Go through the array, translating each of the items to their - if ( isArray ) { - for ( ; i < length; i++ ) { - value = callback( elems[ i ], i, arg ); - - if ( value != null ) { - ret[ ret.length ] = value; - } - } - - // Go through every key on the object, - } else { - for ( key in elems ) { - value = callback( elems[ key ], key, arg ); - - if ( value != null ) { - ret[ ret.length ] = value; - } - } - } - - // Flatten any nested arrays - return ret.concat.apply( [], ret ); - }, - - // A global GUID counter for objects - guid: 1, - - // Bind a function to a context, optionally partially applying any - // arguments. - proxy: function( fn, context ) { - if ( typeof context === "string" ) { - var tmp = fn[ context ]; - context = fn; - fn = tmp; - } - - // Quick check to determine if target is callable, in the spec - // this throws a TypeError, but we will just return undefined. - if ( !jQuery.isFunction( fn ) ) { - return undefined; - } - - // Simulated bind - var args = slice.call( arguments, 2 ), - proxy = function() { - return fn.apply( context, args.concat( slice.call( arguments ) ) ); - }; - - // Set the guid of unique handler to the same of original handler, so it can be removed - proxy.guid = fn.guid = fn.guid || proxy.guid || jQuery.guid++; - - return proxy; - }, - - // Mutifunctional method to get and set values to a collection - // The value/s can optionally be executed if it's a function - access: function( elems, key, value, exec, fn, pass ) { - var length = elems.length; - - // Setting many attributes - if ( typeof key === "object" ) { - for ( var k in key ) { - jQuery.access( elems, k, key[k], exec, fn, value ); - } - return elems; - } - - // Setting one attribute - if ( value !== undefined ) { - // Optionally, function values get executed if exec is true - exec = !pass && exec && jQuery.isFunction(value); - - for ( var i = 0; i < length; i++ ) { - fn( elems[i], key, exec ? value.call( elems[i], i, fn( elems[i], key ) ) : value, pass ); - } - - return elems; - } - - // Getting an attribute - return length ? fn( elems[0], key ) : undefined; - }, - - now: function() { - return (new Date()).getTime(); - }, - - // Use of jQuery.browser is frowned upon. - // More details: http://docs.jquery.com/Utilities/jQuery.browser - uaMatch: function( ua ) { - ua = ua.toLowerCase(); - - var match = rwebkit.exec( ua ) || - ropera.exec( ua ) || - rmsie.exec( ua ) || - ua.indexOf("compatible") < 0 && rmozilla.exec( ua ) || - []; - - return { browser: match[1] || "", version: match[2] || "0" }; - }, - - sub: function() { - function jQuerySub( selector, context ) { - return new jQuerySub.fn.init( selector, context ); - } - jQuery.extend( true, jQuerySub, this ); - jQuerySub.superclass = this; - jQuerySub.fn = jQuerySub.prototype = this(); - jQuerySub.fn.constructor = jQuerySub; - jQuerySub.sub = this.sub; - jQuerySub.fn.init = function init( selector, context ) { - if ( context && context instanceof jQuery && !(context instanceof jQuerySub) ) { - context = jQuerySub( context ); - } - - return jQuery.fn.init.call( this, selector, context, rootjQuerySub ); - }; - jQuerySub.fn.init.prototype = jQuerySub.fn; - var rootjQuerySub = jQuerySub(document); - return jQuerySub; - }, - - browser: {} -}); - -// Populate the class2type map -jQuery.each("Boolean Number String Function Array Date RegExp Object".split(" "), function(i, name) { - class2type[ "[object " + name + "]" ] = name.toLowerCase(); -}); - -browserMatch = jQuery.uaMatch( userAgent ); -if ( browserMatch.browser ) { - jQuery.browser[ browserMatch.browser ] = true; - jQuery.browser.version = browserMatch.version; -} - -// Deprecated, use jQuery.browser.webkit instead -if ( jQuery.browser.webkit ) { - jQuery.browser.safari = true; -} - -// IE doesn't match non-breaking spaces with \s -if ( rnotwhite.test( "\xA0" ) ) { - trimLeft = /^[\s\xA0]+/; - trimRight = /[\s\xA0]+$/; -} - -// All jQuery objects should point back to these -rootjQuery = jQuery(document); - -// Cleanup functions for the document ready method -if ( document.addEventListener ) { - DOMContentLoaded = function() { - document.removeEventListener( "DOMContentLoaded", DOMContentLoaded, false ); - jQuery.ready(); - }; - -} else if ( document.attachEvent ) { - DOMContentLoaded = function() { - // Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443). - if ( document.readyState === "complete" ) { - document.detachEvent( "onreadystatechange", DOMContentLoaded ); - jQuery.ready(); - } - }; -} - -// The DOM ready check for Internet Explorer -function doScrollCheck() { - if ( jQuery.isReady ) { - return; - } - - try { - // If IE is used, use the trick by Diego Perini - // http://javascript.nwbox.com/IEContentLoaded/ - document.documentElement.doScroll("left"); - } catch(e) { - setTimeout( doScrollCheck, 1 ); - return; - } - - // and execute any waiting functions - jQuery.ready(); -} - -return jQuery; - -})(); - - -var // Promise methods - promiseMethods = "done fail isResolved isRejected promise then always pipe".split( " " ), - // Static reference to slice - sliceDeferred = [].slice; - -jQuery.extend({ - // Create a simple deferred (one callbacks list) - _Deferred: function() { - var // callbacks list - callbacks = [], - // stored [ context , args ] - fired, - // to avoid firing when already doing so - firing, - // flag to know if the deferred has been cancelled - cancelled, - // the deferred itself - deferred = { - - // done( f1, f2, ...) - done: function() { - if ( !cancelled ) { - var args = arguments, - i, - length, - elem, - type, - _fired; - if ( fired ) { - _fired = fired; - fired = 0; - } - for ( i = 0, length = args.length; i < length; i++ ) { - elem = args[ i ]; - type = jQuery.type( elem ); - if ( type === "array" ) { - deferred.done.apply( deferred, elem ); - } else if ( type === "function" ) { - callbacks.push( elem ); - } - } - if ( _fired ) { - deferred.resolveWith( _fired[ 0 ], _fired[ 1 ] ); - } - } - return this; - }, - - // resolve with given context and args - resolveWith: function( context, args ) { - if ( !cancelled && !fired && !firing ) { - // make sure args are available (#8421) - args = args || []; - firing = 1; - try { - while( callbacks[ 0 ] ) { - callbacks.shift().apply( context, args ); - } - } - finally { - fired = [ context, args ]; - firing = 0; - } - } - return this; - }, - - // resolve with this as context and given arguments - resolve: function() { - deferred.resolveWith( this, arguments ); - return this; - }, - - // Has this deferred been resolved? - isResolved: function() { - return !!( firing || fired ); - }, - - // Cancel - cancel: function() { - cancelled = 1; - callbacks = []; - return this; - } - }; - - return deferred; - }, - - // Full fledged deferred (two callbacks list) - Deferred: function( func ) { - var deferred = jQuery._Deferred(), - failDeferred = jQuery._Deferred(), - promise; - // Add errorDeferred methods, then and promise - jQuery.extend( deferred, { - then: function( doneCallbacks, failCallbacks ) { - deferred.done( doneCallbacks ).fail( failCallbacks ); - return this; - }, - always: function() { - return deferred.done.apply( deferred, arguments ).fail.apply( this, arguments ); - }, - fail: failDeferred.done, - rejectWith: failDeferred.resolveWith, - reject: failDeferred.resolve, - isRejected: failDeferred.isResolved, - pipe: function( fnDone, fnFail ) { - return jQuery.Deferred(function( newDefer ) { - jQuery.each( { - done: [ fnDone, "resolve" ], - fail: [ fnFail, "reject" ] - }, function( handler, data ) { - var fn = data[ 0 ], - action = data[ 1 ], - returned; - if ( jQuery.isFunction( fn ) ) { - deferred[ handler ](function() { - returned = fn.apply( this, arguments ); - if ( returned && jQuery.isFunction( returned.promise ) ) { - returned.promise().then( newDefer.resolve, newDefer.reject ); - } else { - newDefer[ action + "With" ]( this === deferred ? newDefer : this, [ returned ] ); - } - }); - } else { - deferred[ handler ]( newDefer[ action ] ); - } - }); - }).promise(); - }, - // Get a promise for this deferred - // If obj is provided, the promise aspect is added to the object - promise: function( obj ) { - if ( obj == null ) { - if ( promise ) { - return promise; - } - promise = obj = {}; - } - var i = promiseMethods.length; - while( i-- ) { - obj[ promiseMethods[i] ] = deferred[ promiseMethods[i] ]; - } - return obj; - } - }); - // Make sure only one callback list will be used - deferred.done( failDeferred.cancel ).fail( deferred.cancel ); - // Unexpose cancel - delete deferred.cancel; - // Call given func if any - if ( func ) { - func.call( deferred, deferred ); - } - return deferred; - }, - - // Deferred helper - when: function( firstParam ) { - var args = arguments, - i = 0, - length = args.length, - count = length, - deferred = length <= 1 && firstParam && jQuery.isFunction( firstParam.promise ) ? - firstParam : - jQuery.Deferred(); - function resolveFunc( i ) { - return function( value ) { - args[ i ] = arguments.length > 1 ? sliceDeferred.call( arguments, 0 ) : value; - if ( !( --count ) ) { - // Strange bug in FF4: - // Values changed onto the arguments object sometimes end up as undefined values - // outside the $.when method. Cloning the object into a fresh array solves the issue - deferred.resolveWith( deferred, sliceDeferred.call( args, 0 ) ); - } - }; - } - if ( length > 1 ) { - for( ; i < length; i++ ) { - if ( args[ i ] && jQuery.isFunction( args[ i ].promise ) ) { - args[ i ].promise().then( resolveFunc(i), deferred.reject ); - } else { - --count; - } - } - if ( !count ) { - deferred.resolveWith( deferred, args ); - } - } else if ( deferred !== firstParam ) { - deferred.resolveWith( deferred, length ? [ firstParam ] : [] ); - } - return deferred.promise(); - } -}); - - - -jQuery.support = (function() { - - var div = document.createElement( "div" ), - documentElement = document.documentElement, - all, - a, - select, - opt, - input, - marginDiv, - support, - fragment, - body, - testElementParent, - testElement, - testElementStyle, - tds, - events, - eventName, - i, - isSupported; - - // Preliminary tests - div.setAttribute("className", "t"); - div.innerHTML = "
      a"; - - - all = div.getElementsByTagName( "*" ); - a = div.getElementsByTagName( "a" )[ 0 ]; - - // Can't get basic test support - if ( !all || !all.length || !a ) { - return {}; - } - - // First batch of supports tests - select = document.createElement( "select" ); - opt = select.appendChild( document.createElement("option") ); - input = div.getElementsByTagName( "input" )[ 0 ]; - - support = { - // IE strips leading whitespace when .innerHTML is used - leadingWhitespace: ( div.firstChild.nodeType === 3 ), - - // Make sure that tbody elements aren't automatically inserted - // IE will insert them into empty tables - tbody: !div.getElementsByTagName( "tbody" ).length, - - // Make sure that link elements get serialized correctly by innerHTML - // This requires a wrapper element in IE - htmlSerialize: !!div.getElementsByTagName( "link" ).length, - - // Get the style information from getAttribute - // (IE uses .cssText instead) - style: /top/.test( a.getAttribute("style") ), - - // Make sure that URLs aren't manipulated - // (IE normalizes it by default) - hrefNormalized: ( a.getAttribute( "href" ) === "/a" ), - - // Make sure that element opacity exists - // (IE uses filter instead) - // Use a regex to work around a WebKit issue. See #5145 - opacity: /^0.55$/.test( a.style.opacity ), - - // Verify style float existence - // (IE uses styleFloat instead of cssFloat) - cssFloat: !!a.style.cssFloat, - - // Make sure that if no value is specified for a checkbox - // that it defaults to "on". - // (WebKit defaults to "" instead) - checkOn: ( input.value === "on" ), - - // Make sure that a selected-by-default option has a working selected property. - // (WebKit defaults to false instead of true, IE too, if it's in an optgroup) - optSelected: opt.selected, - - // Test setAttribute on camelCase class. If it works, we need attrFixes when doing get/setAttribute (ie6/7) - getSetAttribute: div.className !== "t", - - // Will be defined later - submitBubbles: true, - changeBubbles: true, - focusinBubbles: false, - deleteExpando: true, - noCloneEvent: true, - inlineBlockNeedsLayout: false, - shrinkWrapBlocks: false, - reliableMarginRight: true - }; - - // Make sure checked status is properly cloned - input.checked = true; - support.noCloneChecked = input.cloneNode( true ).checked; - - // Make sure that the options inside disabled selects aren't marked as disabled - // (WebKit marks them as disabled) - select.disabled = true; - support.optDisabled = !opt.disabled; - - // Test to see if it's possible to delete an expando from an element - // Fails in Internet Explorer - try { - delete div.test; - } catch( e ) { - support.deleteExpando = false; - } - - if ( !div.addEventListener && div.attachEvent && div.fireEvent ) { - div.attachEvent( "onclick", function() { - // Cloning a node shouldn't copy over any - // bound event handlers (IE does this) - support.noCloneEvent = false; - }); - div.cloneNode( true ).fireEvent( "onclick" ); - } - - // Check if a radio maintains it's value - // after being appended to the DOM - input = document.createElement("input"); - input.value = "t"; - input.setAttribute("type", "radio"); - support.radioValue = input.value === "t"; - - input.setAttribute("checked", "checked"); - div.appendChild( input ); - fragment = document.createDocumentFragment(); - fragment.appendChild( div.firstChild ); - - // WebKit doesn't clone checked state correctly in fragments - support.checkClone = fragment.cloneNode( true ).cloneNode( true ).lastChild.checked; - - div.innerHTML = ""; - - // Figure out if the W3C box model works as expected - div.style.width = div.style.paddingLeft = "1px"; - - body = document.getElementsByTagName( "body" )[ 0 ]; - // We use our own, invisible, body unless the body is already present - // in which case we use a div (#9239) - testElement = document.createElement( body ? "div" : "body" ); - testElementStyle = { - visibility: "hidden", - width: 0, - height: 0, - border: 0, - margin: 0, - background: "none" - }; - if ( body ) { - jQuery.extend( testElementStyle, { - position: "absolute", - left: "-1000px", - top: "-1000px" - }); - } - for ( i in testElementStyle ) { - testElement.style[ i ] = testElementStyle[ i ]; - } - testElement.appendChild( div ); - testElementParent = body || documentElement; - testElementParent.insertBefore( testElement, testElementParent.firstChild ); - - // Check if a disconnected checkbox will retain its checked - // value of true after appended to the DOM (IE6/7) - support.appendChecked = input.checked; - - support.boxModel = div.offsetWidth === 2; - - if ( "zoom" in div.style ) { - // Check if natively block-level elements act like inline-block - // elements when setting their display to 'inline' and giving - // them layout - // (IE < 8 does this) - div.style.display = "inline"; - div.style.zoom = 1; - support.inlineBlockNeedsLayout = ( div.offsetWidth === 2 ); - - // Check if elements with layout shrink-wrap their children - // (IE 6 does this) - div.style.display = ""; - div.innerHTML = "
      "; - support.shrinkWrapBlocks = ( div.offsetWidth !== 2 ); - } - - div.innerHTML = "
      t
      "; - tds = div.getElementsByTagName( "td" ); - - // Check if table cells still have offsetWidth/Height when they are set - // to display:none and there are still other visible table cells in a - // table row; if so, offsetWidth/Height are not reliable for use when - // determining if an element has been hidden directly using - // display:none (it is still safe to use offsets if a parent element is - // hidden; don safety goggles and see bug #4512 for more information). - // (only IE 8 fails this test) - isSupported = ( tds[ 0 ].offsetHeight === 0 ); - - tds[ 0 ].style.display = ""; - tds[ 1 ].style.display = "none"; - - // Check if empty table cells still have offsetWidth/Height - // (IE < 8 fail this test) - support.reliableHiddenOffsets = isSupported && ( tds[ 0 ].offsetHeight === 0 ); - div.innerHTML = ""; - - // Check if div with explicit width and no margin-right incorrectly - // gets computed margin-right based on width of container. For more - // info see bug #3333 - // Fails in WebKit before Feb 2011 nightlies - // WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right - if ( document.defaultView && document.defaultView.getComputedStyle ) { - marginDiv = document.createElement( "div" ); - marginDiv.style.width = "0"; - marginDiv.style.marginRight = "0"; - div.appendChild( marginDiv ); - support.reliableMarginRight = - ( parseInt( ( document.defaultView.getComputedStyle( marginDiv, null ) || { marginRight: 0 } ).marginRight, 10 ) || 0 ) === 0; - } - - // Remove the body element we added - testElement.innerHTML = ""; - testElementParent.removeChild( testElement ); - - // Technique from Juriy Zaytsev - // http://thinkweb2.com/projects/prototype/detecting-event-support-without-browser-sniffing/ - // We only care about the case where non-standard event systems - // are used, namely in IE. Short-circuiting here helps us to - // avoid an eval call (in setAttribute) which can cause CSP - // to go haywire. See: https://developer.mozilla.org/en/Security/CSP - if ( div.attachEvent ) { - for( i in { - submit: 1, - change: 1, - focusin: 1 - } ) { - eventName = "on" + i; - isSupported = ( eventName in div ); - if ( !isSupported ) { - div.setAttribute( eventName, "return;" ); - isSupported = ( typeof div[ eventName ] === "function" ); - } - support[ i + "Bubbles" ] = isSupported; - } - } - - // Null connected elements to avoid leaks in IE - testElement = fragment = select = opt = body = marginDiv = div = input = null; - - return support; -})(); - -// Keep track of boxModel -jQuery.boxModel = jQuery.support.boxModel; - - - - -var rbrace = /^(?:\{.*\}|\[.*\])$/, - rmultiDash = /([A-Z])/g; - -jQuery.extend({ - cache: {}, - - // Please use with caution - uuid: 0, - - // Unique for each copy of jQuery on the page - // Non-digits removed to match rinlinejQuery - expando: "jQuery" + ( jQuery.fn.jquery + Math.random() ).replace( /\D/g, "" ), - - // The following elements throw uncatchable exceptions if you - // attempt to add expando properties to them. - noData: { - "embed": true, - // Ban all objects except for Flash (which handle expandos) - "object": "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000", - "applet": true - }, - - hasData: function( elem ) { - elem = elem.nodeType ? jQuery.cache[ elem[jQuery.expando] ] : elem[ jQuery.expando ]; - - return !!elem && !isEmptyDataObject( elem ); - }, - - data: function( elem, name, data, pvt /* Internal Use Only */ ) { - if ( !jQuery.acceptData( elem ) ) { - return; - } - - var thisCache, ret, - internalKey = jQuery.expando, - getByName = typeof name === "string", - - // We have to handle DOM nodes and JS objects differently because IE6-7 - // can't GC object references properly across the DOM-JS boundary - isNode = elem.nodeType, - - // Only DOM nodes need the global jQuery cache; JS object data is - // attached directly to the object so GC can occur automatically - cache = isNode ? jQuery.cache : elem, - - // Only defining an ID for JS objects if its cache already exists allows - // the code to shortcut on the same path as a DOM node with no cache - id = isNode ? elem[ jQuery.expando ] : elem[ jQuery.expando ] && jQuery.expando; - - // Avoid doing any more work than we need to when trying to get data on an - // object that has no data at all - if ( (!id || (pvt && id && (cache[ id ] && !cache[ id ][ internalKey ]))) && getByName && data === undefined ) { - return; - } - - if ( !id ) { - // Only DOM nodes need a new unique ID for each element since their data - // ends up in the global cache - if ( isNode ) { - elem[ jQuery.expando ] = id = ++jQuery.uuid; - } else { - id = jQuery.expando; - } - } - - if ( !cache[ id ] ) { - cache[ id ] = {}; - - // TODO: This is a hack for 1.5 ONLY. Avoids exposing jQuery - // metadata on plain JS objects when the object is serialized using - // JSON.stringify - if ( !isNode ) { - cache[ id ].toJSON = jQuery.noop; - } - } - - // An object can be passed to jQuery.data instead of a key/value pair; this gets - // shallow copied over onto the existing cache - if ( typeof name === "object" || typeof name === "function" ) { - if ( pvt ) { - cache[ id ][ internalKey ] = jQuery.extend(cache[ id ][ internalKey ], name); - } else { - cache[ id ] = jQuery.extend(cache[ id ], name); - } - } - - thisCache = cache[ id ]; - - // Internal jQuery data is stored in a separate object inside the object's data - // cache in order to avoid key collisions between internal data and user-defined - // data - if ( pvt ) { - if ( !thisCache[ internalKey ] ) { - thisCache[ internalKey ] = {}; - } - - thisCache = thisCache[ internalKey ]; - } - - if ( data !== undefined ) { - thisCache[ jQuery.camelCase( name ) ] = data; - } - - // TODO: This is a hack for 1.5 ONLY. It will be removed in 1.6. Users should - // not attempt to inspect the internal events object using jQuery.data, as this - // internal data object is undocumented and subject to change. - if ( name === "events" && !thisCache[name] ) { - return thisCache[ internalKey ] && thisCache[ internalKey ].events; - } - - // Check for both converted-to-camel and non-converted data property names - // If a data property was specified - if ( getByName ) { - - // First Try to find as-is property data - ret = thisCache[ name ]; - - // Test for null|undefined property data - if ( ret == null ) { - - // Try to find the camelCased property - ret = thisCache[ jQuery.camelCase( name ) ]; - } - } else { - ret = thisCache; - } - - return ret; - }, - - removeData: function( elem, name, pvt /* Internal Use Only */ ) { - if ( !jQuery.acceptData( elem ) ) { - return; - } - - var thisCache, - - // Reference to internal data cache key - internalKey = jQuery.expando, - - isNode = elem.nodeType, - - // See jQuery.data for more information - cache = isNode ? jQuery.cache : elem, - - // See jQuery.data for more information - id = isNode ? elem[ jQuery.expando ] : jQuery.expando; - - // If there is already no cache entry for this object, there is no - // purpose in continuing - if ( !cache[ id ] ) { - return; - } - - if ( name ) { - - thisCache = pvt ? cache[ id ][ internalKey ] : cache[ id ]; - - if ( thisCache ) { - - // Support interoperable removal of hyphenated or camelcased keys - if ( !thisCache[ name ] ) { - name = jQuery.camelCase( name ); - } - - delete thisCache[ name ]; - - // If there is no data left in the cache, we want to continue - // and let the cache object itself get destroyed - if ( !isEmptyDataObject(thisCache) ) { - return; - } - } - } - - // See jQuery.data for more information - if ( pvt ) { - delete cache[ id ][ internalKey ]; - - // Don't destroy the parent cache unless the internal data object - // had been the only thing left in it - if ( !isEmptyDataObject(cache[ id ]) ) { - return; - } - } - - var internalCache = cache[ id ][ internalKey ]; - - // Browsers that fail expando deletion also refuse to delete expandos on - // the window, but it will allow it on all other JS objects; other browsers - // don't care - // Ensure that `cache` is not a window object #10080 - if ( jQuery.support.deleteExpando || !cache.setInterval ) { - delete cache[ id ]; - } else { - cache[ id ] = null; - } - - // We destroyed the entire user cache at once because it's faster than - // iterating through each key, but we need to continue to persist internal - // data if it existed - if ( internalCache ) { - cache[ id ] = {}; - // TODO: This is a hack for 1.5 ONLY. Avoids exposing jQuery - // metadata on plain JS objects when the object is serialized using - // JSON.stringify - if ( !isNode ) { - cache[ id ].toJSON = jQuery.noop; - } - - cache[ id ][ internalKey ] = internalCache; - - // Otherwise, we need to eliminate the expando on the node to avoid - // false lookups in the cache for entries that no longer exist - } else if ( isNode ) { - // IE does not allow us to delete expando properties from nodes, - // nor does it have a removeAttribute function on Document nodes; - // we must handle all of these cases - if ( jQuery.support.deleteExpando ) { - delete elem[ jQuery.expando ]; - } else if ( elem.removeAttribute ) { - elem.removeAttribute( jQuery.expando ); - } else { - elem[ jQuery.expando ] = null; - } - } - }, - - // For internal use only. - _data: function( elem, name, data ) { - return jQuery.data( elem, name, data, true ); - }, - - // A method for determining if a DOM node can handle the data expando - acceptData: function( elem ) { - if ( elem.nodeName ) { - var match = jQuery.noData[ elem.nodeName.toLowerCase() ]; - - if ( match ) { - return !(match === true || elem.getAttribute("classid") !== match); - } - } - - return true; - } -}); - -jQuery.fn.extend({ - data: function( key, value ) { - var data = null; - - if ( typeof key === "undefined" ) { - if ( this.length ) { - data = jQuery.data( this[0] ); - - if ( this[0].nodeType === 1 ) { - var attr = this[0].attributes, name; - for ( var i = 0, l = attr.length; i < l; i++ ) { - name = attr[i].name; - - if ( name.indexOf( "data-" ) === 0 ) { - name = jQuery.camelCase( name.substring(5) ); - - dataAttr( this[0], name, data[ name ] ); - } - } - } - } - - return data; - - } else if ( typeof key === "object" ) { - return this.each(function() { - jQuery.data( this, key ); - }); - } - - var parts = key.split("."); - parts[1] = parts[1] ? "." + parts[1] : ""; - - if ( value === undefined ) { - data = this.triggerHandler("getData" + parts[1] + "!", [parts[0]]); - - // Try to fetch any internally stored data first - if ( data === undefined && this.length ) { - data = jQuery.data( this[0], key ); - data = dataAttr( this[0], key, data ); - } - - return data === undefined && parts[1] ? - this.data( parts[0] ) : - data; - - } else { - return this.each(function() { - var $this = jQuery( this ), - args = [ parts[0], value ]; - - $this.triggerHandler( "setData" + parts[1] + "!", args ); - jQuery.data( this, key, value ); - $this.triggerHandler( "changeData" + parts[1] + "!", args ); - }); - } - }, - - removeData: function( key ) { - return this.each(function() { - jQuery.removeData( this, key ); - }); - } -}); - -function dataAttr( elem, key, data ) { - // If nothing was found internally, try to fetch any - // data from the HTML5 data-* attribute - if ( data === undefined && elem.nodeType === 1 ) { - - var name = "data-" + key.replace( rmultiDash, "-$1" ).toLowerCase(); - - data = elem.getAttribute( name ); - - if ( typeof data === "string" ) { - try { - data = data === "true" ? true : - data === "false" ? false : - data === "null" ? null : - !jQuery.isNaN( data ) ? parseFloat( data ) : - rbrace.test( data ) ? jQuery.parseJSON( data ) : - data; - } catch( e ) {} - - // Make sure we set the data so it isn't changed later - jQuery.data( elem, key, data ); - - } else { - data = undefined; - } - } - - return data; -} - -// TODO: This is a hack for 1.5 ONLY to allow objects with a single toJSON -// property to be considered empty objects; this property always exists in -// order to make sure JSON.stringify does not expose internal metadata -function isEmptyDataObject( obj ) { - for ( var name in obj ) { - if ( name !== "toJSON" ) { - return false; - } - } - - return true; -} - - - - -function handleQueueMarkDefer( elem, type, src ) { - var deferDataKey = type + "defer", - queueDataKey = type + "queue", - markDataKey = type + "mark", - defer = jQuery.data( elem, deferDataKey, undefined, true ); - if ( defer && - ( src === "queue" || !jQuery.data( elem, queueDataKey, undefined, true ) ) && - ( src === "mark" || !jQuery.data( elem, markDataKey, undefined, true ) ) ) { - // Give room for hard-coded callbacks to fire first - // and eventually mark/queue something else on the element - setTimeout( function() { - if ( !jQuery.data( elem, queueDataKey, undefined, true ) && - !jQuery.data( elem, markDataKey, undefined, true ) ) { - jQuery.removeData( elem, deferDataKey, true ); - defer.resolve(); - } - }, 0 ); - } -} - -jQuery.extend({ - - _mark: function( elem, type ) { - if ( elem ) { - type = (type || "fx") + "mark"; - jQuery.data( elem, type, (jQuery.data(elem,type,undefined,true) || 0) + 1, true ); - } - }, - - _unmark: function( force, elem, type ) { - if ( force !== true ) { - type = elem; - elem = force; - force = false; - } - if ( elem ) { - type = type || "fx"; - var key = type + "mark", - count = force ? 0 : ( (jQuery.data( elem, key, undefined, true) || 1 ) - 1 ); - if ( count ) { - jQuery.data( elem, key, count, true ); - } else { - jQuery.removeData( elem, key, true ); - handleQueueMarkDefer( elem, type, "mark" ); - } - } - }, - - queue: function( elem, type, data ) { - if ( elem ) { - type = (type || "fx") + "queue"; - var q = jQuery.data( elem, type, undefined, true ); - // Speed up dequeue by getting out quickly if this is just a lookup - if ( data ) { - if ( !q || jQuery.isArray(data) ) { - q = jQuery.data( elem, type, jQuery.makeArray(data), true ); - } else { - q.push( data ); - } - } - return q || []; - } - }, - - dequeue: function( elem, type ) { - type = type || "fx"; - - var queue = jQuery.queue( elem, type ), - fn = queue.shift(), - defer; - - // If the fx queue is dequeued, always remove the progress sentinel - if ( fn === "inprogress" ) { - fn = queue.shift(); - } - - if ( fn ) { - // Add a progress sentinel to prevent the fx queue from being - // automatically dequeued - if ( type === "fx" ) { - queue.unshift("inprogress"); - } - - fn.call(elem, function() { - jQuery.dequeue(elem, type); - }); - } - - if ( !queue.length ) { - jQuery.removeData( elem, type + "queue", true ); - handleQueueMarkDefer( elem, type, "queue" ); - } - } -}); - -jQuery.fn.extend({ - queue: function( type, data ) { - if ( typeof type !== "string" ) { - data = type; - type = "fx"; - } - - if ( data === undefined ) { - return jQuery.queue( this[0], type ); - } - return this.each(function() { - var queue = jQuery.queue( this, type, data ); - - if ( type === "fx" && queue[0] !== "inprogress" ) { - jQuery.dequeue( this, type ); - } - }); - }, - dequeue: function( type ) { - return this.each(function() { - jQuery.dequeue( this, type ); - }); - }, - // Based off of the plugin by Clint Helfers, with permission. - // http://blindsignals.com/index.php/2009/07/jquery-delay/ - delay: function( time, type ) { - time = jQuery.fx ? jQuery.fx.speeds[time] || time : time; - type = type || "fx"; - - return this.queue( type, function() { - var elem = this; - setTimeout(function() { - jQuery.dequeue( elem, type ); - }, time ); - }); - }, - clearQueue: function( type ) { - return this.queue( type || "fx", [] ); - }, - // Get a promise resolved when queues of a certain type - // are emptied (fx is the type by default) - promise: function( type, object ) { - if ( typeof type !== "string" ) { - object = type; - type = undefined; - } - type = type || "fx"; - var defer = jQuery.Deferred(), - elements = this, - i = elements.length, - count = 1, - deferDataKey = type + "defer", - queueDataKey = type + "queue", - markDataKey = type + "mark", - tmp; - function resolve() { - if ( !( --count ) ) { - defer.resolveWith( elements, [ elements ] ); - } - } - while( i-- ) { - if (( tmp = jQuery.data( elements[ i ], deferDataKey, undefined, true ) || - ( jQuery.data( elements[ i ], queueDataKey, undefined, true ) || - jQuery.data( elements[ i ], markDataKey, undefined, true ) ) && - jQuery.data( elements[ i ], deferDataKey, jQuery._Deferred(), true ) )) { - count++; - tmp.done( resolve ); - } - } - resolve(); - return defer.promise(); - } -}); - - - - -var rclass = /[\n\t\r]/g, - rspace = /\s+/, - rreturn = /\r/g, - rtype = /^(?:button|input)$/i, - rfocusable = /^(?:button|input|object|select|textarea)$/i, - rclickable = /^a(?:rea)?$/i, - rboolean = /^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i, - nodeHook, boolHook; - -jQuery.fn.extend({ - attr: function( name, value ) { - return jQuery.access( this, name, value, true, jQuery.attr ); - }, - - removeAttr: function( name ) { - return this.each(function() { - jQuery.removeAttr( this, name ); - }); - }, - - prop: function( name, value ) { - return jQuery.access( this, name, value, true, jQuery.prop ); - }, - - removeProp: function( name ) { - name = jQuery.propFix[ name ] || name; - return this.each(function() { - // try/catch handles cases where IE balks (such as removing a property on window) - try { - this[ name ] = undefined; - delete this[ name ]; - } catch( e ) {} - }); - }, - - addClass: function( value ) { - var classNames, i, l, elem, - setClass, c, cl; - - if ( jQuery.isFunction( value ) ) { - return this.each(function( j ) { - jQuery( this ).addClass( value.call(this, j, this.className) ); - }); - } - - if ( value && typeof value === "string" ) { - classNames = value.split( rspace ); - - for ( i = 0, l = this.length; i < l; i++ ) { - elem = this[ i ]; - - if ( elem.nodeType === 1 ) { - if ( !elem.className && classNames.length === 1 ) { - elem.className = value; - - } else { - setClass = " " + elem.className + " "; - - for ( c = 0, cl = classNames.length; c < cl; c++ ) { - if ( !~setClass.indexOf( " " + classNames[ c ] + " " ) ) { - setClass += classNames[ c ] + " "; - } - } - elem.className = jQuery.trim( setClass ); - } - } - } - } - - return this; - }, - - removeClass: function( value ) { - var classNames, i, l, elem, className, c, cl; - - if ( jQuery.isFunction( value ) ) { - return this.each(function( j ) { - jQuery( this ).removeClass( value.call(this, j, this.className) ); - }); - } - - if ( (value && typeof value === "string") || value === undefined ) { - classNames = (value || "").split( rspace ); - - for ( i = 0, l = this.length; i < l; i++ ) { - elem = this[ i ]; - - if ( elem.nodeType === 1 && elem.className ) { - if ( value ) { - className = (" " + elem.className + " ").replace( rclass, " " ); - for ( c = 0, cl = classNames.length; c < cl; c++ ) { - className = className.replace(" " + classNames[ c ] + " ", " "); - } - elem.className = jQuery.trim( className ); - - } else { - elem.className = ""; - } - } - } - } - - return this; - }, - - toggleClass: function( value, stateVal ) { - var type = typeof value, - isBool = typeof stateVal === "boolean"; - - if ( jQuery.isFunction( value ) ) { - return this.each(function( i ) { - jQuery( this ).toggleClass( value.call(this, i, this.className, stateVal), stateVal ); - }); - } - - return this.each(function() { - if ( type === "string" ) { - // toggle individual class names - var className, - i = 0, - self = jQuery( this ), - state = stateVal, - classNames = value.split( rspace ); - - while ( (className = classNames[ i++ ]) ) { - // check each className given, space seperated list - state = isBool ? state : !self.hasClass( className ); - self[ state ? "addClass" : "removeClass" ]( className ); - } - - } else if ( type === "undefined" || type === "boolean" ) { - if ( this.className ) { - // store className if set - jQuery._data( this, "__className__", this.className ); - } - - // toggle whole className - this.className = this.className || value === false ? "" : jQuery._data( this, "__className__" ) || ""; - } - }); - }, - - hasClass: function( selector ) { - var className = " " + selector + " "; - for ( var i = 0, l = this.length; i < l; i++ ) { - if ( this[i].nodeType === 1 && (" " + this[i].className + " ").replace(rclass, " ").indexOf( className ) > -1 ) { - return true; - } - } - - return false; - }, - - val: function( value ) { - var hooks, ret, - elem = this[0]; - - if ( !arguments.length ) { - if ( elem ) { - hooks = jQuery.valHooks[ elem.nodeName.toLowerCase() ] || jQuery.valHooks[ elem.type ]; - - if ( hooks && "get" in hooks && (ret = hooks.get( elem, "value" )) !== undefined ) { - return ret; - } - - ret = elem.value; - - return typeof ret === "string" ? - // handle most common string cases - ret.replace(rreturn, "") : - // handle cases where value is null/undef or number - ret == null ? "" : ret; - } - - return undefined; - } - - var isFunction = jQuery.isFunction( value ); - - return this.each(function( i ) { - var self = jQuery(this), val; - - if ( this.nodeType !== 1 ) { - return; - } - - if ( isFunction ) { - val = value.call( this, i, self.val() ); - } else { - val = value; - } - - // Treat null/undefined as ""; convert numbers to string - if ( val == null ) { - val = ""; - } else if ( typeof val === "number" ) { - val += ""; - } else if ( jQuery.isArray( val ) ) { - val = jQuery.map(val, function ( value ) { - return value == null ? "" : value + ""; - }); - } - - hooks = jQuery.valHooks[ this.nodeName.toLowerCase() ] || jQuery.valHooks[ this.type ]; - - // If set returns undefined, fall back to normal setting - if ( !hooks || !("set" in hooks) || hooks.set( this, val, "value" ) === undefined ) { - this.value = val; - } - }); - } -}); - -jQuery.extend({ - valHooks: { - option: { - get: function( elem ) { - // attributes.value is undefined in Blackberry 4.7 but - // uses .value. See #6932 - var val = elem.attributes.value; - return !val || val.specified ? elem.value : elem.text; - } - }, - select: { - get: function( elem ) { - var value, - index = elem.selectedIndex, - values = [], - options = elem.options, - one = elem.type === "select-one"; - - // Nothing was selected - if ( index < 0 ) { - return null; - } - - // Loop through all the selected options - for ( var i = one ? index : 0, max = one ? index + 1 : options.length; i < max; i++ ) { - var option = options[ i ]; - - // Don't return options that are disabled or in a disabled optgroup - if ( option.selected && (jQuery.support.optDisabled ? !option.disabled : option.getAttribute("disabled") === null) && - (!option.parentNode.disabled || !jQuery.nodeName( option.parentNode, "optgroup" )) ) { - - // Get the specific value for the option - value = jQuery( option ).val(); - - // We don't need an array for one selects - if ( one ) { - return value; - } - - // Multi-Selects return an array - values.push( value ); - } - } - - // Fixes Bug #2551 -- select.val() broken in IE after form.reset() - if ( one && !values.length && options.length ) { - return jQuery( options[ index ] ).val(); - } - - return values; - }, - - set: function( elem, value ) { - var values = jQuery.makeArray( value ); - - jQuery(elem).find("option").each(function() { - this.selected = jQuery.inArray( jQuery(this).val(), values ) >= 0; - }); - - if ( !values.length ) { - elem.selectedIndex = -1; - } - return values; - } - } - }, - - attrFn: { - val: true, - css: true, - html: true, - text: true, - data: true, - width: true, - height: true, - offset: true - }, - - attrFix: { - // Always normalize to ensure hook usage - tabindex: "tabIndex" - }, - - attr: function( elem, name, value, pass ) { - var nType = elem.nodeType; - - // don't get/set attributes on text, comment and attribute nodes - if ( !elem || nType === 3 || nType === 8 || nType === 2 ) { - return undefined; - } - - if ( pass && name in jQuery.attrFn ) { - return jQuery( elem )[ name ]( value ); - } - - // Fallback to prop when attributes are not supported - if ( !("getAttribute" in elem) ) { - return jQuery.prop( elem, name, value ); - } - - var ret, hooks, - notxml = nType !== 1 || !jQuery.isXMLDoc( elem ); - - // Normalize the name if needed - if ( notxml ) { - name = jQuery.attrFix[ name ] || name; - - hooks = jQuery.attrHooks[ name ]; - - if ( !hooks ) { - // Use boolHook for boolean attributes - if ( rboolean.test( name ) ) { - hooks = boolHook; - - // Use nodeHook if available( IE6/7 ) - } else if ( nodeHook ) { - hooks = nodeHook; - } - } - } - - if ( value !== undefined ) { - - if ( value === null ) { - jQuery.removeAttr( elem, name ); - return undefined; - - } else if ( hooks && "set" in hooks && notxml && (ret = hooks.set( elem, value, name )) !== undefined ) { - return ret; - - } else { - elem.setAttribute( name, "" + value ); - return value; - } - - } else if ( hooks && "get" in hooks && notxml && (ret = hooks.get( elem, name )) !== null ) { - return ret; - - } else { - - ret = elem.getAttribute( name ); - - // Non-existent attributes return null, we normalize to undefined - return ret === null ? - undefined : - ret; - } - }, - - removeAttr: function( elem, name ) { - var propName; - if ( elem.nodeType === 1 ) { - name = jQuery.attrFix[ name ] || name; - - jQuery.attr( elem, name, "" ); - elem.removeAttribute( name ); - - // Set corresponding property to false for boolean attributes - if ( rboolean.test( name ) && (propName = jQuery.propFix[ name ] || name) in elem ) { - elem[ propName ] = false; - } - } - }, - - attrHooks: { - type: { - set: function( elem, value ) { - // We can't allow the type property to be changed (since it causes problems in IE) - if ( rtype.test( elem.nodeName ) && elem.parentNode ) { - jQuery.error( "type property can't be changed" ); - } else if ( !jQuery.support.radioValue && value === "radio" && jQuery.nodeName(elem, "input") ) { - // Setting the type on a radio button after the value resets the value in IE6-9 - // Reset value to it's default in case type is set after value - // This is for element creation - var val = elem.value; - elem.setAttribute( "type", value ); - if ( val ) { - elem.value = val; - } - return value; - } - } - }, - // Use the value property for back compat - // Use the nodeHook for button elements in IE6/7 (#1954) - value: { - get: function( elem, name ) { - if ( nodeHook && jQuery.nodeName( elem, "button" ) ) { - return nodeHook.get( elem, name ); - } - return name in elem ? - elem.value : - null; - }, - set: function( elem, value, name ) { - if ( nodeHook && jQuery.nodeName( elem, "button" ) ) { - return nodeHook.set( elem, value, name ); - } - // Does not return so that setAttribute is also used - elem.value = value; - } - } - }, - - propFix: { - tabindex: "tabIndex", - readonly: "readOnly", - "for": "htmlFor", - "class": "className", - maxlength: "maxLength", - cellspacing: "cellSpacing", - cellpadding: "cellPadding", - rowspan: "rowSpan", - colspan: "colSpan", - usemap: "useMap", - frameborder: "frameBorder", - contenteditable: "contentEditable" - }, - - prop: function( elem, name, value ) { - var nType = elem.nodeType; - - // don't get/set properties on text, comment and attribute nodes - if ( !elem || nType === 3 || nType === 8 || nType === 2 ) { - return undefined; - } - - var ret, hooks, - notxml = nType !== 1 || !jQuery.isXMLDoc( elem ); - - if ( notxml ) { - // Fix name and attach hooks - name = jQuery.propFix[ name ] || name; - hooks = jQuery.propHooks[ name ]; - } - - if ( value !== undefined ) { - if ( hooks && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ) { - return ret; - - } else { - return (elem[ name ] = value); - } - - } else { - if ( hooks && "get" in hooks && (ret = hooks.get( elem, name )) !== null ) { - return ret; - - } else { - return elem[ name ]; - } - } - }, - - propHooks: { - tabIndex: { - get: function( elem ) { - // elem.tabIndex doesn't always return the correct value when it hasn't been explicitly set - // http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/ - var attributeNode = elem.getAttributeNode("tabindex"); - - return attributeNode && attributeNode.specified ? - parseInt( attributeNode.value, 10 ) : - rfocusable.test( elem.nodeName ) || rclickable.test( elem.nodeName ) && elem.href ? - 0 : - undefined; - } - } - } -}); - -// Add the tabindex propHook to attrHooks for back-compat -jQuery.attrHooks.tabIndex = jQuery.propHooks.tabIndex; - -// Hook for boolean attributes -boolHook = { - get: function( elem, name ) { - // Align boolean attributes with corresponding properties - // Fall back to attribute presence where some booleans are not supported - var attrNode; - return jQuery.prop( elem, name ) === true || ( attrNode = elem.getAttributeNode( name ) ) && attrNode.nodeValue !== false ? - name.toLowerCase() : - undefined; - }, - set: function( elem, value, name ) { - var propName; - if ( value === false ) { - // Remove boolean attributes when set to false - jQuery.removeAttr( elem, name ); - } else { - // value is true since we know at this point it's type boolean and not false - // Set boolean attributes to the same name and set the DOM property - propName = jQuery.propFix[ name ] || name; - if ( propName in elem ) { - // Only set the IDL specifically if it already exists on the element - elem[ propName ] = true; - } - - elem.setAttribute( name, name.toLowerCase() ); - } - return name; - } -}; - -// IE6/7 do not support getting/setting some attributes with get/setAttribute -if ( !jQuery.support.getSetAttribute ) { - - // Use this for any attribute in IE6/7 - // This fixes almost every IE6/7 issue - nodeHook = jQuery.valHooks.button = { - get: function( elem, name ) { - var ret; - ret = elem.getAttributeNode( name ); - // Return undefined if nodeValue is empty string - return ret && ret.nodeValue !== "" ? - ret.nodeValue : - undefined; - }, - set: function( elem, value, name ) { - // Set the existing or create a new attribute node - var ret = elem.getAttributeNode( name ); - if ( !ret ) { - ret = document.createAttribute( name ); - elem.setAttributeNode( ret ); - } - return (ret.nodeValue = value + ""); - } - }; - - // Set width and height to auto instead of 0 on empty string( Bug #8150 ) - // This is for removals - jQuery.each([ "width", "height" ], function( i, name ) { - jQuery.attrHooks[ name ] = jQuery.extend( jQuery.attrHooks[ name ], { - set: function( elem, value ) { - if ( value === "" ) { - elem.setAttribute( name, "auto" ); - return value; - } - } - }); - }); -} - - -// Some attributes require a special call on IE -if ( !jQuery.support.hrefNormalized ) { - jQuery.each([ "href", "src", "width", "height" ], function( i, name ) { - jQuery.attrHooks[ name ] = jQuery.extend( jQuery.attrHooks[ name ], { - get: function( elem ) { - var ret = elem.getAttribute( name, 2 ); - return ret === null ? undefined : ret; - } - }); - }); -} - -if ( !jQuery.support.style ) { - jQuery.attrHooks.style = { - get: function( elem ) { - // Return undefined in the case of empty string - // Normalize to lowercase since IE uppercases css property names - return elem.style.cssText.toLowerCase() || undefined; - }, - set: function( elem, value ) { - return (elem.style.cssText = "" + value); - } - }; -} - -// Safari mis-reports the default selected property of an option -// Accessing the parent's selectedIndex property fixes it -if ( !jQuery.support.optSelected ) { - jQuery.propHooks.selected = jQuery.extend( jQuery.propHooks.selected, { - get: function( elem ) { - var parent = elem.parentNode; - - if ( parent ) { - parent.selectedIndex; - - // Make sure that it also works with optgroups, see #5701 - if ( parent.parentNode ) { - parent.parentNode.selectedIndex; - } - } - return null; - } - }); -} - -// Radios and checkboxes getter/setter -if ( !jQuery.support.checkOn ) { - jQuery.each([ "radio", "checkbox" ], function() { - jQuery.valHooks[ this ] = { - get: function( elem ) { - // Handle the case where in Webkit "" is returned instead of "on" if a value isn't specified - return elem.getAttribute("value") === null ? "on" : elem.value; - } - }; - }); -} -jQuery.each([ "radio", "checkbox" ], function() { - jQuery.valHooks[ this ] = jQuery.extend( jQuery.valHooks[ this ], { - set: function( elem, value ) { - if ( jQuery.isArray( value ) ) { - return (elem.checked = jQuery.inArray( jQuery(elem).val(), value ) >= 0); - } - } - }); -}); - - - - -var rnamespaces = /\.(.*)$/, - rformElems = /^(?:textarea|input|select)$/i, - rperiod = /\./g, - rspaces = / /g, - rescape = /[^\w\s.|`]/g, - fcleanup = function( nm ) { - return nm.replace(rescape, "\\$&"); - }; - -/* - * A number of helper functions used for managing events. - * Many of the ideas behind this code originated from - * Dean Edwards' addEvent library. - */ -jQuery.event = { - - // Bind an event to an element - // Original by Dean Edwards - add: function( elem, types, handler, data ) { - if ( elem.nodeType === 3 || elem.nodeType === 8 ) { - return; - } - - if ( handler === false ) { - handler = returnFalse; - } else if ( !handler ) { - // Fixes bug #7229. Fix recommended by jdalton - return; - } - - var handleObjIn, handleObj; - - if ( handler.handler ) { - handleObjIn = handler; - handler = handleObjIn.handler; - } - - // Make sure that the function being executed has a unique ID - if ( !handler.guid ) { - handler.guid = jQuery.guid++; - } - - // Init the element's event structure - var elemData = jQuery._data( elem ); - - // If no elemData is found then we must be trying to bind to one of the - // banned noData elements - if ( !elemData ) { - return; - } - - var events = elemData.events, - eventHandle = elemData.handle; - - if ( !events ) { - elemData.events = events = {}; - } - - if ( !eventHandle ) { - elemData.handle = eventHandle = function( e ) { - // Discard the second event of a jQuery.event.trigger() and - // when an event is called after a page has unloaded - return typeof jQuery !== "undefined" && (!e || jQuery.event.triggered !== e.type) ? - jQuery.event.handle.apply( eventHandle.elem, arguments ) : - undefined; - }; - } - - // Add elem as a property of the handle function - // This is to prevent a memory leak with non-native events in IE. - eventHandle.elem = elem; - - // Handle multiple events separated by a space - // jQuery(...).bind("mouseover mouseout", fn); - types = types.split(" "); - - var type, i = 0, namespaces; - - while ( (type = types[ i++ ]) ) { - handleObj = handleObjIn ? - jQuery.extend({}, handleObjIn) : - { handler: handler, data: data }; - - // Namespaced event handlers - if ( type.indexOf(".") > -1 ) { - namespaces = type.split("."); - type = namespaces.shift(); - handleObj.namespace = namespaces.slice(0).sort().join("."); - - } else { - namespaces = []; - handleObj.namespace = ""; - } - - handleObj.type = type; - if ( !handleObj.guid ) { - handleObj.guid = handler.guid; - } - - // Get the current list of functions bound to this event - var handlers = events[ type ], - special = jQuery.event.special[ type ] || {}; - - // Init the event handler queue - if ( !handlers ) { - handlers = events[ type ] = []; - - // Check for a special event handler - // Only use addEventListener/attachEvent if the special - // events handler returns false - if ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) { - // Bind the global event handler to the element - if ( elem.addEventListener ) { - elem.addEventListener( type, eventHandle, false ); - - } else if ( elem.attachEvent ) { - elem.attachEvent( "on" + type, eventHandle ); - } - } - } - - if ( special.add ) { - special.add.call( elem, handleObj ); - - if ( !handleObj.handler.guid ) { - handleObj.handler.guid = handler.guid; - } - } - - // Add the function to the element's handler list - handlers.push( handleObj ); - - // Keep track of which events have been used, for event optimization - jQuery.event.global[ type ] = true; - } - - // Nullify elem to prevent memory leaks in IE - elem = null; - }, - - global: {}, - - // Detach an event or set of events from an element - remove: function( elem, types, handler, pos ) { - // don't do events on text and comment nodes - if ( elem.nodeType === 3 || elem.nodeType === 8 ) { - return; - } - - if ( handler === false ) { - handler = returnFalse; - } - - var ret, type, fn, j, i = 0, all, namespaces, namespace, special, eventType, handleObj, origType, - elemData = jQuery.hasData( elem ) && jQuery._data( elem ), - events = elemData && elemData.events; - - if ( !elemData || !events ) { - return; - } - - // types is actually an event object here - if ( types && types.type ) { - handler = types.handler; - types = types.type; - } - - // Unbind all events for the element - if ( !types || typeof types === "string" && types.charAt(0) === "." ) { - types = types || ""; - - for ( type in events ) { - jQuery.event.remove( elem, type + types ); - } - - return; - } - - // Handle multiple events separated by a space - // jQuery(...).unbind("mouseover mouseout", fn); - types = types.split(" "); - - while ( (type = types[ i++ ]) ) { - origType = type; - handleObj = null; - all = type.indexOf(".") < 0; - namespaces = []; - - if ( !all ) { - // Namespaced event handlers - namespaces = type.split("."); - type = namespaces.shift(); - - namespace = new RegExp("(^|\\.)" + - jQuery.map( namespaces.slice(0).sort(), fcleanup ).join("\\.(?:.*\\.)?") + "(\\.|$)"); - } - - eventType = events[ type ]; - - if ( !eventType ) { - continue; - } - - if ( !handler ) { - for ( j = 0; j < eventType.length; j++ ) { - handleObj = eventType[ j ]; - - if ( all || namespace.test( handleObj.namespace ) ) { - jQuery.event.remove( elem, origType, handleObj.handler, j ); - eventType.splice( j--, 1 ); - } - } - - continue; - } - - special = jQuery.event.special[ type ] || {}; - - for ( j = pos || 0; j < eventType.length; j++ ) { - handleObj = eventType[ j ]; - - if ( handler.guid === handleObj.guid ) { - // remove the given handler for the given type - if ( all || namespace.test( handleObj.namespace ) ) { - if ( pos == null ) { - eventType.splice( j--, 1 ); - } - - if ( special.remove ) { - special.remove.call( elem, handleObj ); - } - } - - if ( pos != null ) { - break; - } - } - } - - // remove generic event handler if no more handlers exist - if ( eventType.length === 0 || pos != null && eventType.length === 1 ) { - if ( !special.teardown || special.teardown.call( elem, namespaces ) === false ) { - jQuery.removeEvent( elem, type, elemData.handle ); - } - - ret = null; - delete events[ type ]; - } - } - - // Remove the expando if it's no longer used - if ( jQuery.isEmptyObject( events ) ) { - var handle = elemData.handle; - if ( handle ) { - handle.elem = null; - } - - delete elemData.events; - delete elemData.handle; - - if ( jQuery.isEmptyObject( elemData ) ) { - jQuery.removeData( elem, undefined, true ); - } - } - }, - - // Events that are safe to short-circuit if no handlers are attached. - // Native DOM events should not be added, they may have inline handlers. - customEvent: { - "getData": true, - "setData": true, - "changeData": true - }, - - trigger: function( event, data, elem, onlyHandlers ) { - // Event object or event type - var type = event.type || event, - namespaces = [], - exclusive; - - if ( type.indexOf("!") >= 0 ) { - // Exclusive events trigger only for the exact event (no namespaces) - type = type.slice(0, -1); - exclusive = true; - } - - if ( type.indexOf(".") >= 0 ) { - // Namespaced trigger; create a regexp to match event type in handle() - namespaces = type.split("."); - type = namespaces.shift(); - namespaces.sort(); - } - - if ( (!elem || jQuery.event.customEvent[ type ]) && !jQuery.event.global[ type ] ) { - // No jQuery handlers for this event type, and it can't have inline handlers - return; - } - - // Caller can pass in an Event, Object, or just an event type string - event = typeof event === "object" ? - // jQuery.Event object - event[ jQuery.expando ] ? event : - // Object literal - new jQuery.Event( type, event ) : - // Just the event type (string) - new jQuery.Event( type ); - - event.type = type; - event.exclusive = exclusive; - event.namespace = namespaces.join("."); - event.namespace_re = new RegExp("(^|\\.)" + namespaces.join("\\.(?:.*\\.)?") + "(\\.|$)"); - - // triggerHandler() and global events don't bubble or run the default action - if ( onlyHandlers || !elem ) { - event.preventDefault(); - event.stopPropagation(); - } - - // Handle a global trigger - if ( !elem ) { - // TODO: Stop taunting the data cache; remove global events and always attach to document - jQuery.each( jQuery.cache, function() { - // internalKey variable is just used to make it easier to find - // and potentially change this stuff later; currently it just - // points to jQuery.expando - var internalKey = jQuery.expando, - internalCache = this[ internalKey ]; - if ( internalCache && internalCache.events && internalCache.events[ type ] ) { - jQuery.event.trigger( event, data, internalCache.handle.elem ); - } - }); - return; - } - - // Don't do events on text and comment nodes - if ( elem.nodeType === 3 || elem.nodeType === 8 ) { - return; - } - - // Clean up the event in case it is being reused - event.result = undefined; - event.target = elem; - - // Clone any incoming data and prepend the event, creating the handler arg list - data = data != null ? jQuery.makeArray( data ) : []; - data.unshift( event ); - - var cur = elem, - // IE doesn't like method names with a colon (#3533, #8272) - ontype = type.indexOf(":") < 0 ? "on" + type : ""; - - // Fire event on the current element, then bubble up the DOM tree - do { - var handle = jQuery._data( cur, "handle" ); - - event.currentTarget = cur; - if ( handle ) { - handle.apply( cur, data ); - } - - // Trigger an inline bound script - if ( ontype && jQuery.acceptData( cur ) && cur[ ontype ] && cur[ ontype ].apply( cur, data ) === false ) { - event.result = false; - event.preventDefault(); - } - - // Bubble up to document, then to window - cur = cur.parentNode || cur.ownerDocument || cur === event.target.ownerDocument && window; - } while ( cur && !event.isPropagationStopped() ); - - // If nobody prevented the default action, do it now - if ( !event.isDefaultPrevented() ) { - var old, - special = jQuery.event.special[ type ] || {}; - - if ( (!special._default || special._default.call( elem.ownerDocument, event ) === false) && - !(type === "click" && jQuery.nodeName( elem, "a" )) && jQuery.acceptData( elem ) ) { - - // Call a native DOM method on the target with the same name name as the event. - // Can't use an .isFunction)() check here because IE6/7 fails that test. - // IE<9 dies on focus to hidden element (#1486), may want to revisit a try/catch. - try { - if ( ontype && elem[ type ] ) { - // Don't re-trigger an onFOO event when we call its FOO() method - old = elem[ ontype ]; - - if ( old ) { - elem[ ontype ] = null; - } - - jQuery.event.triggered = type; - elem[ type ](); - } - } catch ( ieError ) {} - - if ( old ) { - elem[ ontype ] = old; - } - - jQuery.event.triggered = undefined; - } - } - - return event.result; - }, - - handle: function( event ) { - event = jQuery.event.fix( event || window.event ); - // Snapshot the handlers list since a called handler may add/remove events. - var handlers = ((jQuery._data( this, "events" ) || {})[ event.type ] || []).slice(0), - run_all = !event.exclusive && !event.namespace, - args = Array.prototype.slice.call( arguments, 0 ); - - // Use the fix-ed Event rather than the (read-only) native event - args[0] = event; - event.currentTarget = this; - - for ( var j = 0, l = handlers.length; j < l; j++ ) { - var handleObj = handlers[ j ]; - - // Triggered event must 1) be non-exclusive and have no namespace, or - // 2) have namespace(s) a subset or equal to those in the bound event. - if ( run_all || event.namespace_re.test( handleObj.namespace ) ) { - // Pass in a reference to the handler function itself - // So that we can later remove it - event.handler = handleObj.handler; - event.data = handleObj.data; - event.handleObj = handleObj; - - var ret = handleObj.handler.apply( this, args ); - - if ( ret !== undefined ) { - event.result = ret; - if ( ret === false ) { - event.preventDefault(); - event.stopPropagation(); - } - } - - if ( event.isImmediatePropagationStopped() ) { - break; - } - } - } - return event.result; - }, - - props: "altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode layerX layerY metaKey newValue offsetX offsetY pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "), - - fix: function( event ) { - if ( event[ jQuery.expando ] ) { - return event; - } - - // store a copy of the original event object - // and "clone" to set read-only properties - var originalEvent = event; - event = jQuery.Event( originalEvent ); - - for ( var i = this.props.length, prop; i; ) { - prop = this.props[ --i ]; - event[ prop ] = originalEvent[ prop ]; - } - - // Fix target property, if necessary - if ( !event.target ) { - // Fixes #1925 where srcElement might not be defined either - event.target = event.srcElement || document; - } - - // check if target is a textnode (safari) - if ( event.target.nodeType === 3 ) { - event.target = event.target.parentNode; - } - - // Add relatedTarget, if necessary - if ( !event.relatedTarget && event.fromElement ) { - event.relatedTarget = event.fromElement === event.target ? event.toElement : event.fromElement; - } - - // Calculate pageX/Y if missing and clientX/Y available - if ( event.pageX == null && event.clientX != null ) { - var eventDocument = event.target.ownerDocument || document, - doc = eventDocument.documentElement, - body = eventDocument.body; - - event.pageX = event.clientX + (doc && doc.scrollLeft || body && body.scrollLeft || 0) - (doc && doc.clientLeft || body && body.clientLeft || 0); - event.pageY = event.clientY + (doc && doc.scrollTop || body && body.scrollTop || 0) - (doc && doc.clientTop || body && body.clientTop || 0); - } - - // Add which for key events - if ( event.which == null && (event.charCode != null || event.keyCode != null) ) { - event.which = event.charCode != null ? event.charCode : event.keyCode; - } - - // Add metaKey to non-Mac browsers (use ctrl for PC's and Meta for Macs) - if ( !event.metaKey && event.ctrlKey ) { - event.metaKey = event.ctrlKey; - } - - // Add which for click: 1 === left; 2 === middle; 3 === right - // Note: button is not normalized, so don't use it - if ( !event.which && event.button !== undefined ) { - event.which = (event.button & 1 ? 1 : ( event.button & 2 ? 3 : ( event.button & 4 ? 2 : 0 ) )); - } - - return event; - }, - - // Deprecated, use jQuery.guid instead - guid: 1E8, - - // Deprecated, use jQuery.proxy instead - proxy: jQuery.proxy, - - special: { - ready: { - // Make sure the ready event is setup - setup: jQuery.bindReady, - teardown: jQuery.noop - }, - - live: { - add: function( handleObj ) { - jQuery.event.add( this, - liveConvert( handleObj.origType, handleObj.selector ), - jQuery.extend({}, handleObj, {handler: liveHandler, guid: handleObj.handler.guid}) ); - }, - - remove: function( handleObj ) { - jQuery.event.remove( this, liveConvert( handleObj.origType, handleObj.selector ), handleObj ); - } - }, - - beforeunload: { - setup: function( data, namespaces, eventHandle ) { - // We only want to do this special case on windows - if ( jQuery.isWindow( this ) ) { - this.onbeforeunload = eventHandle; - } - }, - - teardown: function( namespaces, eventHandle ) { - if ( this.onbeforeunload === eventHandle ) { - this.onbeforeunload = null; - } - } - } - } -}; - -jQuery.removeEvent = document.removeEventListener ? - function( elem, type, handle ) { - if ( elem.removeEventListener ) { - elem.removeEventListener( type, handle, false ); - } - } : - function( elem, type, handle ) { - if ( elem.detachEvent ) { - elem.detachEvent( "on" + type, handle ); - } - }; - -jQuery.Event = function( src, props ) { - // Allow instantiation without the 'new' keyword - if ( !this.preventDefault ) { - return new jQuery.Event( src, props ); - } - - // Event object - if ( src && src.type ) { - this.originalEvent = src; - this.type = src.type; - - // Events bubbling up the document may have been marked as prevented - // by a handler lower down the tree; reflect the correct value. - this.isDefaultPrevented = (src.defaultPrevented || src.returnValue === false || - src.getPreventDefault && src.getPreventDefault()) ? returnTrue : returnFalse; - - // Event type - } else { - this.type = src; - } - - // Put explicitly provided properties onto the event object - if ( props ) { - jQuery.extend( this, props ); - } - - // timeStamp is buggy for some events on Firefox(#3843) - // So we won't rely on the native value - this.timeStamp = jQuery.now(); - - // Mark it as fixed - this[ jQuery.expando ] = true; -}; - -function returnFalse() { - return false; -} -function returnTrue() { - return true; -} - -// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding -// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html -jQuery.Event.prototype = { - preventDefault: function() { - this.isDefaultPrevented = returnTrue; - - var e = this.originalEvent; - if ( !e ) { - return; - } - - // if preventDefault exists run it on the original event - if ( e.preventDefault ) { - e.preventDefault(); - - // otherwise set the returnValue property of the original event to false (IE) - } else { - e.returnValue = false; - } - }, - stopPropagation: function() { - this.isPropagationStopped = returnTrue; - - var e = this.originalEvent; - if ( !e ) { - return; - } - // if stopPropagation exists run it on the original event - if ( e.stopPropagation ) { - e.stopPropagation(); - } - // otherwise set the cancelBubble property of the original event to true (IE) - e.cancelBubble = true; - }, - stopImmediatePropagation: function() { - this.isImmediatePropagationStopped = returnTrue; - this.stopPropagation(); - }, - isDefaultPrevented: returnFalse, - isPropagationStopped: returnFalse, - isImmediatePropagationStopped: returnFalse -}; - -// Checks if an event happened on an element within another element -// Used in jQuery.event.special.mouseenter and mouseleave handlers -var withinElement = function( event ) { - - // Check if mouse(over|out) are still within the same parent element - var related = event.relatedTarget, - inside = false, - eventType = event.type; - - event.type = event.data; - - if ( related !== this ) { - - if ( related ) { - inside = jQuery.contains( this, related ); - } - - if ( !inside ) { - - jQuery.event.handle.apply( this, arguments ); - - event.type = eventType; - } - } -}, - -// In case of event delegation, we only need to rename the event.type, -// liveHandler will take care of the rest. -delegate = function( event ) { - event.type = event.data; - jQuery.event.handle.apply( this, arguments ); -}; - -// Create mouseenter and mouseleave events -jQuery.each({ - mouseenter: "mouseover", - mouseleave: "mouseout" -}, function( orig, fix ) { - jQuery.event.special[ orig ] = { - setup: function( data ) { - jQuery.event.add( this, fix, data && data.selector ? delegate : withinElement, orig ); - }, - teardown: function( data ) { - jQuery.event.remove( this, fix, data && data.selector ? delegate : withinElement ); - } - }; -}); - -// submit delegation -if ( !jQuery.support.submitBubbles ) { - - jQuery.event.special.submit = { - setup: function( data, namespaces ) { - if ( !jQuery.nodeName( this, "form" ) ) { - jQuery.event.add(this, "click.specialSubmit", function( e ) { - // Avoid triggering error on non-existent type attribute in IE VML (#7071) - var elem = e.target, - type = jQuery.nodeName( elem, "input" ) || jQuery.nodeName( elem, "button" ) ? elem.type : ""; - - if ( (type === "submit" || type === "image") && jQuery( elem ).closest("form").length ) { - trigger( "submit", this, arguments ); - } - }); - - jQuery.event.add(this, "keypress.specialSubmit", function( e ) { - var elem = e.target, - type = jQuery.nodeName( elem, "input" ) || jQuery.nodeName( elem, "button" ) ? elem.type : ""; - - if ( (type === "text" || type === "password") && jQuery( elem ).closest("form").length && e.keyCode === 13 ) { - trigger( "submit", this, arguments ); - } - }); - - } else { - return false; - } - }, - - teardown: function( namespaces ) { - jQuery.event.remove( this, ".specialSubmit" ); - } - }; - -} - -// change delegation, happens here so we have bind. -if ( !jQuery.support.changeBubbles ) { - - var changeFilters, - - getVal = function( elem ) { - var type = jQuery.nodeName( elem, "input" ) ? elem.type : "", - val = elem.value; - - if ( type === "radio" || type === "checkbox" ) { - val = elem.checked; - - } else if ( type === "select-multiple" ) { - val = elem.selectedIndex > -1 ? - jQuery.map( elem.options, function( elem ) { - return elem.selected; - }).join("-") : - ""; - - } else if ( jQuery.nodeName( elem, "select" ) ) { - val = elem.selectedIndex; - } - - return val; - }, - - testChange = function testChange( e ) { - var elem = e.target, data, val; - - if ( !rformElems.test( elem.nodeName ) || elem.readOnly ) { - return; - } - - data = jQuery._data( elem, "_change_data" ); - val = getVal(elem); - - // the current data will be also retrieved by beforeactivate - if ( e.type !== "focusout" || elem.type !== "radio" ) { - jQuery._data( elem, "_change_data", val ); - } - - if ( data === undefined || val === data ) { - return; - } - - if ( data != null || val ) { - e.type = "change"; - e.liveFired = undefined; - jQuery.event.trigger( e, arguments[1], elem ); - } - }; - - jQuery.event.special.change = { - filters: { - focusout: testChange, - - beforedeactivate: testChange, - - click: function( e ) { - var elem = e.target, type = jQuery.nodeName( elem, "input" ) ? elem.type : ""; - - if ( type === "radio" || type === "checkbox" || jQuery.nodeName( elem, "select" ) ) { - testChange.call( this, e ); - } - }, - - // Change has to be called before submit - // Keydown will be called before keypress, which is used in submit-event delegation - keydown: function( e ) { - var elem = e.target, type = jQuery.nodeName( elem, "input" ) ? elem.type : ""; - - if ( (e.keyCode === 13 && !jQuery.nodeName( elem, "textarea" ) ) || - (e.keyCode === 32 && (type === "checkbox" || type === "radio")) || - type === "select-multiple" ) { - testChange.call( this, e ); - } - }, - - // Beforeactivate happens also before the previous element is blurred - // with this event you can't trigger a change event, but you can store - // information - beforeactivate: function( e ) { - var elem = e.target; - jQuery._data( elem, "_change_data", getVal(elem) ); - } - }, - - setup: function( data, namespaces ) { - if ( this.type === "file" ) { - return false; - } - - for ( var type in changeFilters ) { - jQuery.event.add( this, type + ".specialChange", changeFilters[type] ); - } - - return rformElems.test( this.nodeName ); - }, - - teardown: function( namespaces ) { - jQuery.event.remove( this, ".specialChange" ); - - return rformElems.test( this.nodeName ); - } - }; - - changeFilters = jQuery.event.special.change.filters; - - // Handle when the input is .focus()'d - changeFilters.focus = changeFilters.beforeactivate; -} - -function trigger( type, elem, args ) { - // Piggyback on a donor event to simulate a different one. - // Fake originalEvent to avoid donor's stopPropagation, but if the - // simulated event prevents default then we do the same on the donor. - // Don't pass args or remember liveFired; they apply to the donor event. - var event = jQuery.extend( {}, args[ 0 ] ); - event.type = type; - event.originalEvent = {}; - event.liveFired = undefined; - jQuery.event.handle.call( elem, event ); - if ( event.isDefaultPrevented() ) { - args[ 0 ].preventDefault(); - } -} - -// Create "bubbling" focus and blur events -if ( !jQuery.support.focusinBubbles ) { - jQuery.each({ focus: "focusin", blur: "focusout" }, function( orig, fix ) { - - // Attach a single capturing handler while someone wants focusin/focusout - var attaches = 0; - - jQuery.event.special[ fix ] = { - setup: function() { - if ( attaches++ === 0 ) { - document.addEventListener( orig, handler, true ); - } - }, - teardown: function() { - if ( --attaches === 0 ) { - document.removeEventListener( orig, handler, true ); - } - } - }; - - function handler( donor ) { - // Donor event is always a native one; fix it and switch its type. - // Let focusin/out handler cancel the donor focus/blur event. - var e = jQuery.event.fix( donor ); - e.type = fix; - e.originalEvent = {}; - jQuery.event.trigger( e, null, e.target ); - if ( e.isDefaultPrevented() ) { - donor.preventDefault(); - } - } - }); -} - -jQuery.each(["bind", "one"], function( i, name ) { - jQuery.fn[ name ] = function( type, data, fn ) { - var handler; - - // Handle object literals - if ( typeof type === "object" ) { - for ( var key in type ) { - this[ name ](key, data, type[key], fn); - } - return this; - } - - if ( arguments.length === 2 || data === false ) { - fn = data; - data = undefined; - } - - if ( name === "one" ) { - handler = function( event ) { - jQuery( this ).unbind( event, handler ); - return fn.apply( this, arguments ); - }; - handler.guid = fn.guid || jQuery.guid++; - } else { - handler = fn; - } - - if ( type === "unload" && name !== "one" ) { - this.one( type, data, fn ); - - } else { - for ( var i = 0, l = this.length; i < l; i++ ) { - jQuery.event.add( this[i], type, handler, data ); - } - } - - return this; - }; -}); - -jQuery.fn.extend({ - unbind: function( type, fn ) { - // Handle object literals - if ( typeof type === "object" && !type.preventDefault ) { - for ( var key in type ) { - this.unbind(key, type[key]); - } - - } else { - for ( var i = 0, l = this.length; i < l; i++ ) { - jQuery.event.remove( this[i], type, fn ); - } - } - - return this; - }, - - delegate: function( selector, types, data, fn ) { - return this.live( types, data, fn, selector ); - }, - - undelegate: function( selector, types, fn ) { - if ( arguments.length === 0 ) { - return this.unbind( "live" ); - - } else { - return this.die( types, null, fn, selector ); - } - }, - - trigger: function( type, data ) { - return this.each(function() { - jQuery.event.trigger( type, data, this ); - }); - }, - - triggerHandler: function( type, data ) { - if ( this[0] ) { - return jQuery.event.trigger( type, data, this[0], true ); - } - }, - - toggle: function( fn ) { - // Save reference to arguments for access in closure - var args = arguments, - guid = fn.guid || jQuery.guid++, - i = 0, - toggler = function( event ) { - // Figure out which function to execute - var lastToggle = ( jQuery.data( this, "lastToggle" + fn.guid ) || 0 ) % i; - jQuery.data( this, "lastToggle" + fn.guid, lastToggle + 1 ); - - // Make sure that clicks stop - event.preventDefault(); - - // and execute the function - return args[ lastToggle ].apply( this, arguments ) || false; - }; - - // link all the functions, so any of them can unbind this click handler - toggler.guid = guid; - while ( i < args.length ) { - args[ i++ ].guid = guid; - } - - return this.click( toggler ); - }, - - hover: function( fnOver, fnOut ) { - return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver ); - } -}); - -var liveMap = { - focus: "focusin", - blur: "focusout", - mouseenter: "mouseover", - mouseleave: "mouseout" -}; - -jQuery.each(["live", "die"], function( i, name ) { - jQuery.fn[ name ] = function( types, data, fn, origSelector /* Internal Use Only */ ) { - var type, i = 0, match, namespaces, preType, - selector = origSelector || this.selector, - context = origSelector ? this : jQuery( this.context ); - - if ( typeof types === "object" && !types.preventDefault ) { - for ( var key in types ) { - context[ name ]( key, data, types[key], selector ); - } - - return this; - } - - if ( name === "die" && !types && - origSelector && origSelector.charAt(0) === "." ) { - - context.unbind( origSelector ); - - return this; - } - - if ( data === false || jQuery.isFunction( data ) ) { - fn = data || returnFalse; - data = undefined; - } - - types = (types || "").split(" "); - - while ( (type = types[ i++ ]) != null ) { - match = rnamespaces.exec( type ); - namespaces = ""; - - if ( match ) { - namespaces = match[0]; - type = type.replace( rnamespaces, "" ); - } - - if ( type === "hover" ) { - types.push( "mouseenter" + namespaces, "mouseleave" + namespaces ); - continue; - } - - preType = type; - - if ( liveMap[ type ] ) { - types.push( liveMap[ type ] + namespaces ); - type = type + namespaces; - - } else { - type = (liveMap[ type ] || type) + namespaces; - } - - if ( name === "live" ) { - // bind live handler - for ( var j = 0, l = context.length; j < l; j++ ) { - jQuery.event.add( context[j], "live." + liveConvert( type, selector ), - { data: data, selector: selector, handler: fn, origType: type, origHandler: fn, preType: preType } ); - } - - } else { - // unbind live handler - context.unbind( "live." + liveConvert( type, selector ), fn ); - } - } - - return this; - }; -}); - -function liveHandler( event ) { - var stop, maxLevel, related, match, handleObj, elem, j, i, l, data, close, namespace, ret, - elems = [], - selectors = [], - events = jQuery._data( this, "events" ); - - // Make sure we avoid non-left-click bubbling in Firefox (#3861) and disabled elements in IE (#6911) - if ( event.liveFired === this || !events || !events.live || event.target.disabled || event.button && event.type === "click" ) { - return; - } - - if ( event.namespace ) { - namespace = new RegExp("(^|\\.)" + event.namespace.split(".").join("\\.(?:.*\\.)?") + "(\\.|$)"); - } - - event.liveFired = this; - - var live = events.live.slice(0); - - for ( j = 0; j < live.length; j++ ) { - handleObj = live[j]; - - if ( handleObj.origType.replace( rnamespaces, "" ) === event.type ) { - selectors.push( handleObj.selector ); - - } else { - live.splice( j--, 1 ); - } - } - - match = jQuery( event.target ).closest( selectors, event.currentTarget ); - - for ( i = 0, l = match.length; i < l; i++ ) { - close = match[i]; - - for ( j = 0; j < live.length; j++ ) { - handleObj = live[j]; - - if ( close.selector === handleObj.selector && (!namespace || namespace.test( handleObj.namespace )) && !close.elem.disabled ) { - elem = close.elem; - related = null; - - // Those two events require additional checking - if ( handleObj.preType === "mouseenter" || handleObj.preType === "mouseleave" ) { - event.type = handleObj.preType; - related = jQuery( event.relatedTarget ).closest( handleObj.selector )[0]; - - // Make sure not to accidentally match a child element with the same selector - if ( related && jQuery.contains( elem, related ) ) { - related = elem; - } - } - - if ( !related || related !== elem ) { - elems.push({ elem: elem, handleObj: handleObj, level: close.level }); - } - } - } - } - - for ( i = 0, l = elems.length; i < l; i++ ) { - match = elems[i]; - - if ( maxLevel && match.level > maxLevel ) { - break; - } - - event.currentTarget = match.elem; - event.data = match.handleObj.data; - event.handleObj = match.handleObj; - - ret = match.handleObj.origHandler.apply( match.elem, arguments ); - - if ( ret === false || event.isPropagationStopped() ) { - maxLevel = match.level; - - if ( ret === false ) { - stop = false; - } - if ( event.isImmediatePropagationStopped() ) { - break; - } - } - } - - return stop; -} - -function liveConvert( type, selector ) { - return (type && type !== "*" ? type + "." : "") + selector.replace(rperiod, "`").replace(rspaces, "&"); -} - -jQuery.each( ("blur focus focusin focusout load resize scroll unload click dblclick " + - "mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " + - "change select submit keydown keypress keyup error").split(" "), function( i, name ) { - - // Handle event binding - jQuery.fn[ name ] = function( data, fn ) { - if ( fn == null ) { - fn = data; - data = null; - } - - return arguments.length > 0 ? - this.bind( name, data, fn ) : - this.trigger( name ); - }; - - if ( jQuery.attrFn ) { - jQuery.attrFn[ name ] = true; - } -}); - - - -/*! - * Sizzle CSS Selector Engine - * Copyright 2011, The Dojo Foundation - * Released under the MIT, BSD, and GPL Licenses. - * More information: http://sizzlejs.com/ - */ -(function(){ - -var chunker = /((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g, - done = 0, - toString = Object.prototype.toString, - hasDuplicate = false, - baseHasDuplicate = true, - rBackslash = /\\/g, - rNonWord = /\W/; - -// Here we check if the JavaScript engine is using some sort of -// optimization where it does not always call our comparision -// function. If that is the case, discard the hasDuplicate value. -// Thus far that includes Google Chrome. -[0, 0].sort(function() { - baseHasDuplicate = false; - return 0; -}); - -var Sizzle = function( selector, context, results, seed ) { - results = results || []; - context = context || document; - - var origContext = context; - - if ( context.nodeType !== 1 && context.nodeType !== 9 ) { - return []; - } - - if ( !selector || typeof selector !== "string" ) { - return results; - } - - var m, set, checkSet, extra, ret, cur, pop, i, - prune = true, - contextXML = Sizzle.isXML( context ), - parts = [], - soFar = selector; - - // Reset the position of the chunker regexp (start from head) - do { - chunker.exec( "" ); - m = chunker.exec( soFar ); - - if ( m ) { - soFar = m[3]; - - parts.push( m[1] ); - - if ( m[2] ) { - extra = m[3]; - break; - } - } - } while ( m ); - - if ( parts.length > 1 && origPOS.exec( selector ) ) { - - if ( parts.length === 2 && Expr.relative[ parts[0] ] ) { - set = posProcess( parts[0] + parts[1], context ); - - } else { - set = Expr.relative[ parts[0] ] ? - [ context ] : - Sizzle( parts.shift(), context ); - - while ( parts.length ) { - selector = parts.shift(); - - if ( Expr.relative[ selector ] ) { - selector += parts.shift(); - } - - set = posProcess( selector, set ); - } - } - - } else { - // Take a shortcut and set the context if the root selector is an ID - // (but not if it'll be faster if the inner selector is an ID) - if ( !seed && parts.length > 1 && context.nodeType === 9 && !contextXML && - Expr.match.ID.test(parts[0]) && !Expr.match.ID.test(parts[parts.length - 1]) ) { - - ret = Sizzle.find( parts.shift(), context, contextXML ); - context = ret.expr ? - Sizzle.filter( ret.expr, ret.set )[0] : - ret.set[0]; - } - - if ( context ) { - ret = seed ? - { expr: parts.pop(), set: makeArray(seed) } : - Sizzle.find( parts.pop(), parts.length === 1 && (parts[0] === "~" || parts[0] === "+") && context.parentNode ? context.parentNode : context, contextXML ); - - set = ret.expr ? - Sizzle.filter( ret.expr, ret.set ) : - ret.set; - - if ( parts.length > 0 ) { - checkSet = makeArray( set ); - - } else { - prune = false; - } - - while ( parts.length ) { - cur = parts.pop(); - pop = cur; - - if ( !Expr.relative[ cur ] ) { - cur = ""; - } else { - pop = parts.pop(); - } - - if ( pop == null ) { - pop = context; - } - - Expr.relative[ cur ]( checkSet, pop, contextXML ); - } - - } else { - checkSet = parts = []; - } - } - - if ( !checkSet ) { - checkSet = set; - } - - if ( !checkSet ) { - Sizzle.error( cur || selector ); - } - - if ( toString.call(checkSet) === "[object Array]" ) { - if ( !prune ) { - results.push.apply( results, checkSet ); - - } else if ( context && context.nodeType === 1 ) { - for ( i = 0; checkSet[i] != null; i++ ) { - if ( checkSet[i] && (checkSet[i] === true || checkSet[i].nodeType === 1 && Sizzle.contains(context, checkSet[i])) ) { - results.push( set[i] ); - } - } - - } else { - for ( i = 0; checkSet[i] != null; i++ ) { - if ( checkSet[i] && checkSet[i].nodeType === 1 ) { - results.push( set[i] ); - } - } - } - - } else { - makeArray( checkSet, results ); - } - - if ( extra ) { - Sizzle( extra, origContext, results, seed ); - Sizzle.uniqueSort( results ); - } - - return results; -}; - -Sizzle.uniqueSort = function( results ) { - if ( sortOrder ) { - hasDuplicate = baseHasDuplicate; - results.sort( sortOrder ); - - if ( hasDuplicate ) { - for ( var i = 1; i < results.length; i++ ) { - if ( results[i] === results[ i - 1 ] ) { - results.splice( i--, 1 ); - } - } - } - } - - return results; -}; - -Sizzle.matches = function( expr, set ) { - return Sizzle( expr, null, null, set ); -}; - -Sizzle.matchesSelector = function( node, expr ) { - return Sizzle( expr, null, null, [node] ).length > 0; -}; - -Sizzle.find = function( expr, context, isXML ) { - var set; - - if ( !expr ) { - return []; - } - - for ( var i = 0, l = Expr.order.length; i < l; i++ ) { - var match, - type = Expr.order[i]; - - if ( (match = Expr.leftMatch[ type ].exec( expr )) ) { - var left = match[1]; - match.splice( 1, 1 ); - - if ( left.substr( left.length - 1 ) !== "\\" ) { - match[1] = (match[1] || "").replace( rBackslash, "" ); - set = Expr.find[ type ]( match, context, isXML ); - - if ( set != null ) { - expr = expr.replace( Expr.match[ type ], "" ); - break; - } - } - } - } - - if ( !set ) { - set = typeof context.getElementsByTagName !== "undefined" ? - context.getElementsByTagName( "*" ) : - []; - } - - return { set: set, expr: expr }; -}; - -Sizzle.filter = function( expr, set, inplace, not ) { - var match, anyFound, - old = expr, - result = [], - curLoop = set, - isXMLFilter = set && set[0] && Sizzle.isXML( set[0] ); - - while ( expr && set.length ) { - for ( var type in Expr.filter ) { - if ( (match = Expr.leftMatch[ type ].exec( expr )) != null && match[2] ) { - var found, item, - filter = Expr.filter[ type ], - left = match[1]; - - anyFound = false; - - match.splice(1,1); - - if ( left.substr( left.length - 1 ) === "\\" ) { - continue; - } - - if ( curLoop === result ) { - result = []; - } - - if ( Expr.preFilter[ type ] ) { - match = Expr.preFilter[ type ]( match, curLoop, inplace, result, not, isXMLFilter ); - - if ( !match ) { - anyFound = found = true; - - } else if ( match === true ) { - continue; - } - } - - if ( match ) { - for ( var i = 0; (item = curLoop[i]) != null; i++ ) { - if ( item ) { - found = filter( item, match, i, curLoop ); - var pass = not ^ !!found; - - if ( inplace && found != null ) { - if ( pass ) { - anyFound = true; - - } else { - curLoop[i] = false; - } - - } else if ( pass ) { - result.push( item ); - anyFound = true; - } - } - } - } - - if ( found !== undefined ) { - if ( !inplace ) { - curLoop = result; - } - - expr = expr.replace( Expr.match[ type ], "" ); - - if ( !anyFound ) { - return []; - } - - break; - } - } - } - - // Improper expression - if ( expr === old ) { - if ( anyFound == null ) { - Sizzle.error( expr ); - - } else { - break; - } - } - - old = expr; - } - - return curLoop; -}; - -Sizzle.error = function( msg ) { - throw "Syntax error, unrecognized expression: " + msg; -}; - -var Expr = Sizzle.selectors = { - order: [ "ID", "NAME", "TAG" ], - - match: { - ID: /#((?:[\w\u00c0-\uFFFF\-]|\\.)+)/, - CLASS: /\.((?:[\w\u00c0-\uFFFF\-]|\\.)+)/, - NAME: /\[name=['"]*((?:[\w\u00c0-\uFFFF\-]|\\.)+)['"]*\]/, - ATTR: /\[\s*((?:[\w\u00c0-\uFFFF\-]|\\.)+)\s*(?:(\S?=)\s*(?:(['"])(.*?)\3|(#?(?:[\w\u00c0-\uFFFF\-]|\\.)*)|)|)\s*\]/, - TAG: /^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/, - CHILD: /:(only|nth|last|first)-child(?:\(\s*(even|odd|(?:[+\-]?\d+|(?:[+\-]?\d*)?n\s*(?:[+\-]\s*\d+)?))\s*\))?/, - POS: /:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/, - PSEUDO: /:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/ - }, - - leftMatch: {}, - - attrMap: { - "class": "className", - "for": "htmlFor" - }, - - attrHandle: { - href: function( elem ) { - return elem.getAttribute( "href" ); - }, - type: function( elem ) { - return elem.getAttribute( "type" ); - } - }, - - relative: { - "+": function(checkSet, part){ - var isPartStr = typeof part === "string", - isTag = isPartStr && !rNonWord.test( part ), - isPartStrNotTag = isPartStr && !isTag; - - if ( isTag ) { - part = part.toLowerCase(); - } - - for ( var i = 0, l = checkSet.length, elem; i < l; i++ ) { - if ( (elem = checkSet[i]) ) { - while ( (elem = elem.previousSibling) && elem.nodeType !== 1 ) {} - - checkSet[i] = isPartStrNotTag || elem && elem.nodeName.toLowerCase() === part ? - elem || false : - elem === part; - } - } - - if ( isPartStrNotTag ) { - Sizzle.filter( part, checkSet, true ); - } - }, - - ">": function( checkSet, part ) { - var elem, - isPartStr = typeof part === "string", - i = 0, - l = checkSet.length; - - if ( isPartStr && !rNonWord.test( part ) ) { - part = part.toLowerCase(); - - for ( ; i < l; i++ ) { - elem = checkSet[i]; - - if ( elem ) { - var parent = elem.parentNode; - checkSet[i] = parent.nodeName.toLowerCase() === part ? parent : false; - } - } - - } else { - for ( ; i < l; i++ ) { - elem = checkSet[i]; - - if ( elem ) { - checkSet[i] = isPartStr ? - elem.parentNode : - elem.parentNode === part; - } - } - - if ( isPartStr ) { - Sizzle.filter( part, checkSet, true ); - } - } - }, - - "": function(checkSet, part, isXML){ - var nodeCheck, - doneName = done++, - checkFn = dirCheck; - - if ( typeof part === "string" && !rNonWord.test( part ) ) { - part = part.toLowerCase(); - nodeCheck = part; - checkFn = dirNodeCheck; - } - - checkFn( "parentNode", part, doneName, checkSet, nodeCheck, isXML ); - }, - - "~": function( checkSet, part, isXML ) { - var nodeCheck, - doneName = done++, - checkFn = dirCheck; - - if ( typeof part === "string" && !rNonWord.test( part ) ) { - part = part.toLowerCase(); - nodeCheck = part; - checkFn = dirNodeCheck; - } - - checkFn( "previousSibling", part, doneName, checkSet, nodeCheck, isXML ); - } - }, - - find: { - ID: function( match, context, isXML ) { - if ( typeof context.getElementById !== "undefined" && !isXML ) { - var m = context.getElementById(match[1]); - // Check parentNode to catch when Blackberry 4.6 returns - // nodes that are no longer in the document #6963 - return m && m.parentNode ? [m] : []; - } - }, - - NAME: function( match, context ) { - if ( typeof context.getElementsByName !== "undefined" ) { - var ret = [], - results = context.getElementsByName( match[1] ); - - for ( var i = 0, l = results.length; i < l; i++ ) { - if ( results[i].getAttribute("name") === match[1] ) { - ret.push( results[i] ); - } - } - - return ret.length === 0 ? null : ret; - } - }, - - TAG: function( match, context ) { - if ( typeof context.getElementsByTagName !== "undefined" ) { - return context.getElementsByTagName( match[1] ); - } - } - }, - preFilter: { - CLASS: function( match, curLoop, inplace, result, not, isXML ) { - match = " " + match[1].replace( rBackslash, "" ) + " "; - - if ( isXML ) { - return match; - } - - for ( var i = 0, elem; (elem = curLoop[i]) != null; i++ ) { - if ( elem ) { - if ( not ^ (elem.className && (" " + elem.className + " ").replace(/[\t\n\r]/g, " ").indexOf(match) >= 0) ) { - if ( !inplace ) { - result.push( elem ); - } - - } else if ( inplace ) { - curLoop[i] = false; - } - } - } - - return false; - }, - - ID: function( match ) { - return match[1].replace( rBackslash, "" ); - }, - - TAG: function( match, curLoop ) { - return match[1].replace( rBackslash, "" ).toLowerCase(); - }, - - CHILD: function( match ) { - if ( match[1] === "nth" ) { - if ( !match[2] ) { - Sizzle.error( match[0] ); - } - - match[2] = match[2].replace(/^\+|\s*/g, ''); - - // parse equations like 'even', 'odd', '5', '2n', '3n+2', '4n-1', '-n+6' - var test = /(-?)(\d*)(?:n([+\-]?\d*))?/.exec( - match[2] === "even" && "2n" || match[2] === "odd" && "2n+1" || - !/\D/.test( match[2] ) && "0n+" + match[2] || match[2]); - - // calculate the numbers (first)n+(last) including if they are negative - match[2] = (test[1] + (test[2] || 1)) - 0; - match[3] = test[3] - 0; - } - else if ( match[2] ) { - Sizzle.error( match[0] ); - } - - // TODO: Move to normal caching system - match[0] = done++; - - return match; - }, - - ATTR: function( match, curLoop, inplace, result, not, isXML ) { - var name = match[1] = match[1].replace( rBackslash, "" ); - - if ( !isXML && Expr.attrMap[name] ) { - match[1] = Expr.attrMap[name]; - } - - // Handle if an un-quoted value was used - match[4] = ( match[4] || match[5] || "" ).replace( rBackslash, "" ); - - if ( match[2] === "~=" ) { - match[4] = " " + match[4] + " "; - } - - return match; - }, - - PSEUDO: function( match, curLoop, inplace, result, not ) { - if ( match[1] === "not" ) { - // If we're dealing with a complex expression, or a simple one - if ( ( chunker.exec(match[3]) || "" ).length > 1 || /^\w/.test(match[3]) ) { - match[3] = Sizzle(match[3], null, null, curLoop); - - } else { - var ret = Sizzle.filter(match[3], curLoop, inplace, true ^ not); - - if ( !inplace ) { - result.push.apply( result, ret ); - } - - return false; - } - - } else if ( Expr.match.POS.test( match[0] ) || Expr.match.CHILD.test( match[0] ) ) { - return true; - } - - return match; - }, - - POS: function( match ) { - match.unshift( true ); - - return match; - } - }, - - filters: { - enabled: function( elem ) { - return elem.disabled === false && elem.type !== "hidden"; - }, - - disabled: function( elem ) { - return elem.disabled === true; - }, - - checked: function( elem ) { - return elem.checked === true; - }, - - selected: function( elem ) { - // Accessing this property makes selected-by-default - // options in Safari work properly - if ( elem.parentNode ) { - elem.parentNode.selectedIndex; - } - - return elem.selected === true; - }, - - parent: function( elem ) { - return !!elem.firstChild; - }, - - empty: function( elem ) { - return !elem.firstChild; - }, - - has: function( elem, i, match ) { - return !!Sizzle( match[3], elem ).length; - }, - - header: function( elem ) { - return (/h\d/i).test( elem.nodeName ); - }, - - text: function( elem ) { - var attr = elem.getAttribute( "type" ), type = elem.type; - // IE6 and 7 will map elem.type to 'text' for new HTML5 types (search, etc) - // use getAttribute instead to test this case - return elem.nodeName.toLowerCase() === "input" && "text" === type && ( attr === type || attr === null ); - }, - - radio: function( elem ) { - return elem.nodeName.toLowerCase() === "input" && "radio" === elem.type; - }, - - checkbox: function( elem ) { - return elem.nodeName.toLowerCase() === "input" && "checkbox" === elem.type; - }, - - file: function( elem ) { - return elem.nodeName.toLowerCase() === "input" && "file" === elem.type; - }, - - password: function( elem ) { - return elem.nodeName.toLowerCase() === "input" && "password" === elem.type; - }, - - submit: function( elem ) { - var name = elem.nodeName.toLowerCase(); - return (name === "input" || name === "button") && "submit" === elem.type; - }, - - image: function( elem ) { - return elem.nodeName.toLowerCase() === "input" && "image" === elem.type; - }, - - reset: function( elem ) { - var name = elem.nodeName.toLowerCase(); - return (name === "input" || name === "button") && "reset" === elem.type; - }, - - button: function( elem ) { - var name = elem.nodeName.toLowerCase(); - return name === "input" && "button" === elem.type || name === "button"; - }, - - input: function( elem ) { - return (/input|select|textarea|button/i).test( elem.nodeName ); - }, - - focus: function( elem ) { - return elem === elem.ownerDocument.activeElement; - } - }, - setFilters: { - first: function( elem, i ) { - return i === 0; - }, - - last: function( elem, i, match, array ) { - return i === array.length - 1; - }, - - even: function( elem, i ) { - return i % 2 === 0; - }, - - odd: function( elem, i ) { - return i % 2 === 1; - }, - - lt: function( elem, i, match ) { - return i < match[3] - 0; - }, - - gt: function( elem, i, match ) { - return i > match[3] - 0; - }, - - nth: function( elem, i, match ) { - return match[3] - 0 === i; - }, - - eq: function( elem, i, match ) { - return match[3] - 0 === i; - } - }, - filter: { - PSEUDO: function( elem, match, i, array ) { - var name = match[1], - filter = Expr.filters[ name ]; - - if ( filter ) { - return filter( elem, i, match, array ); - - } else if ( name === "contains" ) { - return (elem.textContent || elem.innerText || Sizzle.getText([ elem ]) || "").indexOf(match[3]) >= 0; - - } else if ( name === "not" ) { - var not = match[3]; - - for ( var j = 0, l = not.length; j < l; j++ ) { - if ( not[j] === elem ) { - return false; - } - } - - return true; - - } else { - Sizzle.error( name ); - } - }, - - CHILD: function( elem, match ) { - var type = match[1], - node = elem; - - switch ( type ) { - case "only": - case "first": - while ( (node = node.previousSibling) ) { - if ( node.nodeType === 1 ) { - return false; - } - } - - if ( type === "first" ) { - return true; - } - - node = elem; - - case "last": - while ( (node = node.nextSibling) ) { - if ( node.nodeType === 1 ) { - return false; - } - } - - return true; - - case "nth": - var first = match[2], - last = match[3]; - - if ( first === 1 && last === 0 ) { - return true; - } - - var doneName = match[0], - parent = elem.parentNode; - - if ( parent && (parent.sizcache !== doneName || !elem.nodeIndex) ) { - var count = 0; - - for ( node = parent.firstChild; node; node = node.nextSibling ) { - if ( node.nodeType === 1 ) { - node.nodeIndex = ++count; - } - } - - parent.sizcache = doneName; - } - - var diff = elem.nodeIndex - last; - - if ( first === 0 ) { - return diff === 0; - - } else { - return ( diff % first === 0 && diff / first >= 0 ); - } - } - }, - - ID: function( elem, match ) { - return elem.nodeType === 1 && elem.getAttribute("id") === match; - }, - - TAG: function( elem, match ) { - return (match === "*" && elem.nodeType === 1) || elem.nodeName.toLowerCase() === match; - }, - - CLASS: function( elem, match ) { - return (" " + (elem.className || elem.getAttribute("class")) + " ") - .indexOf( match ) > -1; - }, - - ATTR: function( elem, match ) { - var name = match[1], - result = Expr.attrHandle[ name ] ? - Expr.attrHandle[ name ]( elem ) : - elem[ name ] != null ? - elem[ name ] : - elem.getAttribute( name ), - value = result + "", - type = match[2], - check = match[4]; - - return result == null ? - type === "!=" : - type === "=" ? - value === check : - type === "*=" ? - value.indexOf(check) >= 0 : - type === "~=" ? - (" " + value + " ").indexOf(check) >= 0 : - !check ? - value && result !== false : - type === "!=" ? - value !== check : - type === "^=" ? - value.indexOf(check) === 0 : - type === "$=" ? - value.substr(value.length - check.length) === check : - type === "|=" ? - value === check || value.substr(0, check.length + 1) === check + "-" : - false; - }, - - POS: function( elem, match, i, array ) { - var name = match[2], - filter = Expr.setFilters[ name ]; - - if ( filter ) { - return filter( elem, i, match, array ); - } - } - } -}; - -var origPOS = Expr.match.POS, - fescape = function(all, num){ - return "\\" + (num - 0 + 1); - }; - -for ( var type in Expr.match ) { - Expr.match[ type ] = new RegExp( Expr.match[ type ].source + (/(?![^\[]*\])(?![^\(]*\))/.source) ); - Expr.leftMatch[ type ] = new RegExp( /(^(?:.|\r|\n)*?)/.source + Expr.match[ type ].source.replace(/\\(\d+)/g, fescape) ); -} - -var makeArray = function( array, results ) { - array = Array.prototype.slice.call( array, 0 ); - - if ( results ) { - results.push.apply( results, array ); - return results; - } - - return array; -}; - -// Perform a simple check to determine if the browser is capable of -// converting a NodeList to an array using builtin methods. -// Also verifies that the returned array holds DOM nodes -// (which is not the case in the Blackberry browser) -try { - Array.prototype.slice.call( document.documentElement.childNodes, 0 )[0].nodeType; - -// Provide a fallback method if it does not work -} catch( e ) { - makeArray = function( array, results ) { - var i = 0, - ret = results || []; - - if ( toString.call(array) === "[object Array]" ) { - Array.prototype.push.apply( ret, array ); - - } else { - if ( typeof array.length === "number" ) { - for ( var l = array.length; i < l; i++ ) { - ret.push( array[i] ); - } - - } else { - for ( ; array[i]; i++ ) { - ret.push( array[i] ); - } - } - } - - return ret; - }; -} - -var sortOrder, siblingCheck; - -if ( document.documentElement.compareDocumentPosition ) { - sortOrder = function( a, b ) { - if ( a === b ) { - hasDuplicate = true; - return 0; - } - - if ( !a.compareDocumentPosition || !b.compareDocumentPosition ) { - return a.compareDocumentPosition ? -1 : 1; - } - - return a.compareDocumentPosition(b) & 4 ? -1 : 1; - }; - -} else { - sortOrder = function( a, b ) { - // The nodes are identical, we can exit early - if ( a === b ) { - hasDuplicate = true; - return 0; - - // Fallback to using sourceIndex (in IE) if it's available on both nodes - } else if ( a.sourceIndex && b.sourceIndex ) { - return a.sourceIndex - b.sourceIndex; - } - - var al, bl, - ap = [], - bp = [], - aup = a.parentNode, - bup = b.parentNode, - cur = aup; - - // If the nodes are siblings (or identical) we can do a quick check - if ( aup === bup ) { - return siblingCheck( a, b ); - - // If no parents were found then the nodes are disconnected - } else if ( !aup ) { - return -1; - - } else if ( !bup ) { - return 1; - } - - // Otherwise they're somewhere else in the tree so we need - // to build up a full list of the parentNodes for comparison - while ( cur ) { - ap.unshift( cur ); - cur = cur.parentNode; - } - - cur = bup; - - while ( cur ) { - bp.unshift( cur ); - cur = cur.parentNode; - } - - al = ap.length; - bl = bp.length; - - // Start walking down the tree looking for a discrepancy - for ( var i = 0; i < al && i < bl; i++ ) { - if ( ap[i] !== bp[i] ) { - return siblingCheck( ap[i], bp[i] ); - } - } - - // We ended someplace up the tree so do a sibling check - return i === al ? - siblingCheck( a, bp[i], -1 ) : - siblingCheck( ap[i], b, 1 ); - }; - - siblingCheck = function( a, b, ret ) { - if ( a === b ) { - return ret; - } - - var cur = a.nextSibling; - - while ( cur ) { - if ( cur === b ) { - return -1; - } - - cur = cur.nextSibling; - } - - return 1; - }; -} - -// Utility function for retreiving the text value of an array of DOM nodes -Sizzle.getText = function( elems ) { - var ret = "", elem; - - for ( var i = 0; elems[i]; i++ ) { - elem = elems[i]; - - // Get the text from text nodes and CDATA nodes - if ( elem.nodeType === 3 || elem.nodeType === 4 ) { - ret += elem.nodeValue; - - // Traverse everything else, except comment nodes - } else if ( elem.nodeType !== 8 ) { - ret += Sizzle.getText( elem.childNodes ); - } - } - - return ret; -}; - -// Check to see if the browser returns elements by name when -// querying by getElementById (and provide a workaround) -(function(){ - // We're going to inject a fake input element with a specified name - var form = document.createElement("div"), - id = "script" + (new Date()).getTime(), - root = document.documentElement; - - form.innerHTML = ""; - - // Inject it into the root element, check its status, and remove it quickly - root.insertBefore( form, root.firstChild ); - - // The workaround has to do additional checks after a getElementById - // Which slows things down for other browsers (hence the branching) - if ( document.getElementById( id ) ) { - Expr.find.ID = function( match, context, isXML ) { - if ( typeof context.getElementById !== "undefined" && !isXML ) { - var m = context.getElementById(match[1]); - - return m ? - m.id === match[1] || typeof m.getAttributeNode !== "undefined" && m.getAttributeNode("id").nodeValue === match[1] ? - [m] : - undefined : - []; - } - }; - - Expr.filter.ID = function( elem, match ) { - var node = typeof elem.getAttributeNode !== "undefined" && elem.getAttributeNode("id"); - - return elem.nodeType === 1 && node && node.nodeValue === match; - }; - } - - root.removeChild( form ); - - // release memory in IE - root = form = null; -})(); - -(function(){ - // Check to see if the browser returns only elements - // when doing getElementsByTagName("*") - - // Create a fake element - var div = document.createElement("div"); - div.appendChild( document.createComment("") ); - - // Make sure no comments are found - if ( div.getElementsByTagName("*").length > 0 ) { - Expr.find.TAG = function( match, context ) { - var results = context.getElementsByTagName( match[1] ); - - // Filter out possible comments - if ( match[1] === "*" ) { - var tmp = []; - - for ( var i = 0; results[i]; i++ ) { - if ( results[i].nodeType === 1 ) { - tmp.push( results[i] ); - } - } - - results = tmp; - } - - return results; - }; - } - - // Check to see if an attribute returns normalized href attributes - div.innerHTML = ""; - - if ( div.firstChild && typeof div.firstChild.getAttribute !== "undefined" && - div.firstChild.getAttribute("href") !== "#" ) { - - Expr.attrHandle.href = function( elem ) { - return elem.getAttribute( "href", 2 ); - }; - } - - // release memory in IE - div = null; -})(); - -if ( document.querySelectorAll ) { - (function(){ - var oldSizzle = Sizzle, - div = document.createElement("div"), - id = "__sizzle__"; - - div.innerHTML = "

      "; - - // Safari can't handle uppercase or unicode characters when - // in quirks mode. - if ( div.querySelectorAll && div.querySelectorAll(".TEST").length === 0 ) { - return; - } - - Sizzle = function( query, context, extra, seed ) { - context = context || document; - - // Only use querySelectorAll on non-XML documents - // (ID selectors don't work in non-HTML documents) - if ( !seed && !Sizzle.isXML(context) ) { - // See if we find a selector to speed up - var match = /^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec( query ); - - if ( match && (context.nodeType === 1 || context.nodeType === 9) ) { - // Speed-up: Sizzle("TAG") - if ( match[1] ) { - return makeArray( context.getElementsByTagName( query ), extra ); - - // Speed-up: Sizzle(".CLASS") - } else if ( match[2] && Expr.find.CLASS && context.getElementsByClassName ) { - return makeArray( context.getElementsByClassName( match[2] ), extra ); - } - } - - if ( context.nodeType === 9 ) { - // Speed-up: Sizzle("body") - // The body element only exists once, optimize finding it - if ( query === "body" && context.body ) { - return makeArray( [ context.body ], extra ); - - // Speed-up: Sizzle("#ID") - } else if ( match && match[3] ) { - var elem = context.getElementById( match[3] ); - - // Check parentNode to catch when Blackberry 4.6 returns - // nodes that are no longer in the document #6963 - if ( elem && elem.parentNode ) { - // Handle the case where IE and Opera return items - // by name instead of ID - if ( elem.id === match[3] ) { - return makeArray( [ elem ], extra ); - } - - } else { - return makeArray( [], extra ); - } - } - - try { - return makeArray( context.querySelectorAll(query), extra ); - } catch(qsaError) {} - - // qSA works strangely on Element-rooted queries - // We can work around this by specifying an extra ID on the root - // and working up from there (Thanks to Andrew Dupont for the technique) - // IE 8 doesn't work on object elements - } else if ( context.nodeType === 1 && context.nodeName.toLowerCase() !== "object" ) { - var oldContext = context, - old = context.getAttribute( "id" ), - nid = old || id, - hasParent = context.parentNode, - relativeHierarchySelector = /^\s*[+~]/.test( query ); - - if ( !old ) { - context.setAttribute( "id", nid ); - } else { - nid = nid.replace( /'/g, "\\$&" ); - } - if ( relativeHierarchySelector && hasParent ) { - context = context.parentNode; - } - - try { - if ( !relativeHierarchySelector || hasParent ) { - return makeArray( context.querySelectorAll( "[id='" + nid + "'] " + query ), extra ); - } - - } catch(pseudoError) { - } finally { - if ( !old ) { - oldContext.removeAttribute( "id" ); - } - } - } - } - - return oldSizzle(query, context, extra, seed); - }; - - for ( var prop in oldSizzle ) { - Sizzle[ prop ] = oldSizzle[ prop ]; - } - - // release memory in IE - div = null; - })(); -} - -(function(){ - var html = document.documentElement, - matches = html.matchesSelector || html.mozMatchesSelector || html.webkitMatchesSelector || html.msMatchesSelector; - - if ( matches ) { - // Check to see if it's possible to do matchesSelector - // on a disconnected node (IE 9 fails this) - var disconnectedMatch = !matches.call( document.createElement( "div" ), "div" ), - pseudoWorks = false; - - try { - // This should fail with an exception - // Gecko does not error, returns false instead - matches.call( document.documentElement, "[test!='']:sizzle" ); - - } catch( pseudoError ) { - pseudoWorks = true; - } - - Sizzle.matchesSelector = function( node, expr ) { - // Make sure that attribute selectors are quoted - expr = expr.replace(/\=\s*([^'"\]]*)\s*\]/g, "='$1']"); - - if ( !Sizzle.isXML( node ) ) { - try { - if ( pseudoWorks || !Expr.match.PSEUDO.test( expr ) && !/!=/.test( expr ) ) { - var ret = matches.call( node, expr ); - - // IE 9's matchesSelector returns false on disconnected nodes - if ( ret || !disconnectedMatch || - // As well, disconnected nodes are said to be in a document - // fragment in IE 9, so check for that - node.document && node.document.nodeType !== 11 ) { - return ret; - } - } - } catch(e) {} - } - - return Sizzle(expr, null, null, [node]).length > 0; - }; - } -})(); - -(function(){ - var div = document.createElement("div"); - - div.innerHTML = "
      "; - - // Opera can't find a second classname (in 9.6) - // Also, make sure that getElementsByClassName actually exists - if ( !div.getElementsByClassName || div.getElementsByClassName("e").length === 0 ) { - return; - } - - // Safari caches class attributes, doesn't catch changes (in 3.2) - div.lastChild.className = "e"; - - if ( div.getElementsByClassName("e").length === 1 ) { - return; - } - - Expr.order.splice(1, 0, "CLASS"); - Expr.find.CLASS = function( match, context, isXML ) { - if ( typeof context.getElementsByClassName !== "undefined" && !isXML ) { - return context.getElementsByClassName(match[1]); - } - }; - - // release memory in IE - div = null; -})(); - -function dirNodeCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) { - for ( var i = 0, l = checkSet.length; i < l; i++ ) { - var elem = checkSet[i]; - - if ( elem ) { - var match = false; - - elem = elem[dir]; - - while ( elem ) { - if ( elem.sizcache === doneName ) { - match = checkSet[elem.sizset]; - break; - } - - if ( elem.nodeType === 1 && !isXML ){ - elem.sizcache = doneName; - elem.sizset = i; - } - - if ( elem.nodeName.toLowerCase() === cur ) { - match = elem; - break; - } - - elem = elem[dir]; - } - - checkSet[i] = match; - } - } -} - -function dirCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) { - for ( var i = 0, l = checkSet.length; i < l; i++ ) { - var elem = checkSet[i]; - - if ( elem ) { - var match = false; - - elem = elem[dir]; - - while ( elem ) { - if ( elem.sizcache === doneName ) { - match = checkSet[elem.sizset]; - break; - } - - if ( elem.nodeType === 1 ) { - if ( !isXML ) { - elem.sizcache = doneName; - elem.sizset = i; - } - - if ( typeof cur !== "string" ) { - if ( elem === cur ) { - match = true; - break; - } - - } else if ( Sizzle.filter( cur, [elem] ).length > 0 ) { - match = elem; - break; - } - } - - elem = elem[dir]; - } - - checkSet[i] = match; - } - } -} - -if ( document.documentElement.contains ) { - Sizzle.contains = function( a, b ) { - return a !== b && (a.contains ? a.contains(b) : true); - }; - -} else if ( document.documentElement.compareDocumentPosition ) { - Sizzle.contains = function( a, b ) { - return !!(a.compareDocumentPosition(b) & 16); - }; - -} else { - Sizzle.contains = function() { - return false; - }; -} - -Sizzle.isXML = function( elem ) { - // documentElement is verified for cases where it doesn't yet exist - // (such as loading iframes in IE - #4833) - var documentElement = (elem ? elem.ownerDocument || elem : 0).documentElement; - - return documentElement ? documentElement.nodeName !== "HTML" : false; -}; - -var posProcess = function( selector, context ) { - var match, - tmpSet = [], - later = "", - root = context.nodeType ? [context] : context; - - // Position selectors must be done after the filter - // And so must :not(positional) so we move all PSEUDOs to the end - while ( (match = Expr.match.PSEUDO.exec( selector )) ) { - later += match[0]; - selector = selector.replace( Expr.match.PSEUDO, "" ); - } - - selector = Expr.relative[selector] ? selector + "*" : selector; - - for ( var i = 0, l = root.length; i < l; i++ ) { - Sizzle( selector, root[i], tmpSet ); - } - - return Sizzle.filter( later, tmpSet ); -}; - -// EXPOSE -jQuery.find = Sizzle; -jQuery.expr = Sizzle.selectors; -jQuery.expr[":"] = jQuery.expr.filters; -jQuery.unique = Sizzle.uniqueSort; -jQuery.text = Sizzle.getText; -jQuery.isXMLDoc = Sizzle.isXML; -jQuery.contains = Sizzle.contains; - - -})(); - - -var runtil = /Until$/, - rparentsprev = /^(?:parents|prevUntil|prevAll)/, - // Note: This RegExp should be improved, or likely pulled from Sizzle - rmultiselector = /,/, - isSimple = /^.[^:#\[\.,]*$/, - slice = Array.prototype.slice, - POS = jQuery.expr.match.POS, - // methods guaranteed to produce a unique set when starting from a unique set - guaranteedUnique = { - children: true, - contents: true, - next: true, - prev: true - }; - -jQuery.fn.extend({ - find: function( selector ) { - var self = this, - i, l; - - if ( typeof selector !== "string" ) { - return jQuery( selector ).filter(function() { - for ( i = 0, l = self.length; i < l; i++ ) { - if ( jQuery.contains( self[ i ], this ) ) { - return true; - } - } - }); - } - - var ret = this.pushStack( "", "find", selector ), - length, n, r; - - for ( i = 0, l = this.length; i < l; i++ ) { - length = ret.length; - jQuery.find( selector, this[i], ret ); - - if ( i > 0 ) { - // Make sure that the results are unique - for ( n = length; n < ret.length; n++ ) { - for ( r = 0; r < length; r++ ) { - if ( ret[r] === ret[n] ) { - ret.splice(n--, 1); - break; - } - } - } - } - } - - return ret; - }, - - has: function( target ) { - var targets = jQuery( target ); - return this.filter(function() { - for ( var i = 0, l = targets.length; i < l; i++ ) { - if ( jQuery.contains( this, targets[i] ) ) { - return true; - } - } - }); - }, - - not: function( selector ) { - return this.pushStack( winnow(this, selector, false), "not", selector); - }, - - filter: function( selector ) { - return this.pushStack( winnow(this, selector, true), "filter", selector ); - }, - - is: function( selector ) { - return !!selector && ( typeof selector === "string" ? - jQuery.filter( selector, this ).length > 0 : - this.filter( selector ).length > 0 ); - }, - - closest: function( selectors, context ) { - var ret = [], i, l, cur = this[0]; - - // Array - if ( jQuery.isArray( selectors ) ) { - var match, selector, - matches = {}, - level = 1; - - if ( cur && selectors.length ) { - for ( i = 0, l = selectors.length; i < l; i++ ) { - selector = selectors[i]; - - if ( !matches[ selector ] ) { - matches[ selector ] = POS.test( selector ) ? - jQuery( selector, context || this.context ) : - selector; - } - } - - while ( cur && cur.ownerDocument && cur !== context ) { - for ( selector in matches ) { - match = matches[ selector ]; - - if ( match.jquery ? match.index( cur ) > -1 : jQuery( cur ).is( match ) ) { - ret.push({ selector: selector, elem: cur, level: level }); - } - } - - cur = cur.parentNode; - level++; - } - } - - return ret; - } - - // String - var pos = POS.test( selectors ) || typeof selectors !== "string" ? - jQuery( selectors, context || this.context ) : - 0; - - for ( i = 0, l = this.length; i < l; i++ ) { - cur = this[i]; - - while ( cur ) { - if ( pos ? pos.index(cur) > -1 : jQuery.find.matchesSelector(cur, selectors) ) { - ret.push( cur ); - break; - - } else { - cur = cur.parentNode; - if ( !cur || !cur.ownerDocument || cur === context || cur.nodeType === 11 ) { - break; - } - } - } - } - - ret = ret.length > 1 ? jQuery.unique( ret ) : ret; - - return this.pushStack( ret, "closest", selectors ); - }, - - // Determine the position of an element within - // the matched set of elements - index: function( elem ) { - - // No argument, return index in parent - if ( !elem ) { - return ( this[0] && this[0].parentNode ) ? this.prevAll().length : -1; - } - - // index in selector - if ( typeof elem === "string" ) { - return jQuery.inArray( this[0], jQuery( elem ) ); - } - - // Locate the position of the desired element - return jQuery.inArray( - // If it receives a jQuery object, the first element is used - elem.jquery ? elem[0] : elem, this ); - }, - - add: function( selector, context ) { - var set = typeof selector === "string" ? - jQuery( selector, context ) : - jQuery.makeArray( selector && selector.nodeType ? [ selector ] : selector ), - all = jQuery.merge( this.get(), set ); - - return this.pushStack( isDisconnected( set[0] ) || isDisconnected( all[0] ) ? - all : - jQuery.unique( all ) ); - }, - - andSelf: function() { - return this.add( this.prevObject ); - } -}); - -// A painfully simple check to see if an element is disconnected -// from a document (should be improved, where feasible). -function isDisconnected( node ) { - return !node || !node.parentNode || node.parentNode.nodeType === 11; -} - -jQuery.each({ - parent: function( elem ) { - var parent = elem.parentNode; - return parent && parent.nodeType !== 11 ? parent : null; - }, - parents: function( elem ) { - return jQuery.dir( elem, "parentNode" ); - }, - parentsUntil: function( elem, i, until ) { - return jQuery.dir( elem, "parentNode", until ); - }, - next: function( elem ) { - return jQuery.nth( elem, 2, "nextSibling" ); - }, - prev: function( elem ) { - return jQuery.nth( elem, 2, "previousSibling" ); - }, - nextAll: function( elem ) { - return jQuery.dir( elem, "nextSibling" ); - }, - prevAll: function( elem ) { - return jQuery.dir( elem, "previousSibling" ); - }, - nextUntil: function( elem, i, until ) { - return jQuery.dir( elem, "nextSibling", until ); - }, - prevUntil: function( elem, i, until ) { - return jQuery.dir( elem, "previousSibling", until ); - }, - siblings: function( elem ) { - return jQuery.sibling( elem.parentNode.firstChild, elem ); - }, - children: function( elem ) { - return jQuery.sibling( elem.firstChild ); - }, - contents: function( elem ) { - return jQuery.nodeName( elem, "iframe" ) ? - elem.contentDocument || elem.contentWindow.document : - jQuery.makeArray( elem.childNodes ); - } -}, function( name, fn ) { - jQuery.fn[ name ] = function( until, selector ) { - var ret = jQuery.map( this, fn, until ), - // The variable 'args' was introduced in - // https://github.com/jquery/jquery/commit/52a0238 - // to work around a bug in Chrome 10 (Dev) and should be removed when the bug is fixed. - // http://code.google.com/p/v8/issues/detail?id=1050 - args = slice.call(arguments); - - if ( !runtil.test( name ) ) { - selector = until; - } - - if ( selector && typeof selector === "string" ) { - ret = jQuery.filter( selector, ret ); - } - - ret = this.length > 1 && !guaranteedUnique[ name ] ? jQuery.unique( ret ) : ret; - - if ( (this.length > 1 || rmultiselector.test( selector )) && rparentsprev.test( name ) ) { - ret = ret.reverse(); - } - - return this.pushStack( ret, name, args.join(",") ); - }; -}); - -jQuery.extend({ - filter: function( expr, elems, not ) { - if ( not ) { - expr = ":not(" + expr + ")"; - } - - return elems.length === 1 ? - jQuery.find.matchesSelector(elems[0], expr) ? [ elems[0] ] : [] : - jQuery.find.matches(expr, elems); - }, - - dir: function( elem, dir, until ) { - var matched = [], - cur = elem[ dir ]; - - while ( cur && cur.nodeType !== 9 && (until === undefined || cur.nodeType !== 1 || !jQuery( cur ).is( until )) ) { - if ( cur.nodeType === 1 ) { - matched.push( cur ); - } - cur = cur[dir]; - } - return matched; - }, - - nth: function( cur, result, dir, elem ) { - result = result || 1; - var num = 0; - - for ( ; cur; cur = cur[dir] ) { - if ( cur.nodeType === 1 && ++num === result ) { - break; - } - } - - return cur; - }, - - sibling: function( n, elem ) { - var r = []; - - for ( ; n; n = n.nextSibling ) { - if ( n.nodeType === 1 && n !== elem ) { - r.push( n ); - } - } - - return r; - } -}); - -// Implement the identical functionality for filter and not -function winnow( elements, qualifier, keep ) { - - // Can't pass null or undefined to indexOf in Firefox 4 - // Set to 0 to skip string check - qualifier = qualifier || 0; - - if ( jQuery.isFunction( qualifier ) ) { - return jQuery.grep(elements, function( elem, i ) { - var retVal = !!qualifier.call( elem, i, elem ); - return retVal === keep; - }); - - } else if ( qualifier.nodeType ) { - return jQuery.grep(elements, function( elem, i ) { - return (elem === qualifier) === keep; - }); - - } else if ( typeof qualifier === "string" ) { - var filtered = jQuery.grep(elements, function( elem ) { - return elem.nodeType === 1; - }); - - if ( isSimple.test( qualifier ) ) { - return jQuery.filter(qualifier, filtered, !keep); - } else { - qualifier = jQuery.filter( qualifier, filtered ); - } - } - - return jQuery.grep(elements, function( elem, i ) { - return (jQuery.inArray( elem, qualifier ) >= 0) === keep; - }); -} - - - - -var rinlinejQuery = / jQuery\d+="(?:\d+|null)"/g, - rleadingWhitespace = /^\s+/, - rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig, - rtagName = /<([\w:]+)/, - rtbody = /", "" ], - legend: [ 1, "
      ", "
      " ], - thead: [ 1, "", "
      " ], - tr: [ 2, "", "
      " ], - td: [ 3, "", "
      " ], - col: [ 2, "", "
      " ], - area: [ 1, "", "" ], - _default: [ 0, "", "" ] - }; - -wrapMap.optgroup = wrapMap.option; -wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead; -wrapMap.th = wrapMap.td; - -// IE can't serialize and ' ); - - iframe_doc.close(); - - // Update the Iframe's hash, for great justice. - iframe.location.hash = hash; - } - }; - - })(); - // ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - // ^^^^^^^^^^^^^^^^^^^ REMOVE IF NOT SUPPORTING IE6/7/8 ^^^^^^^^^^^^^^^^^^^ - // ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - - return self; - })(); - -})(jQuery,this); - -/*! - * jQuery UI Widget @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/Widget - */ - -(function( $, undefined ) { - -// jQuery 1.4+ -if ( $.cleanData ) { - var _cleanData = $.cleanData; - $.cleanData = function( elems ) { - for ( var i = 0, elem; (elem = elems[i]) != null; i++ ) { - $( elem ).triggerHandler( "remove" ); - } - _cleanData( elems ); - }; -} else { - var _remove = $.fn.remove; - $.fn.remove = function( selector, keepData ) { - return this.each(function() { - if ( !keepData ) { - if ( !selector || $.filter( selector, [ this ] ).length ) { - $( "*", this ).add( [ this ] ).each(function() { - $( this ).triggerHandler( "remove" ); - }); - } - } - return _remove.call( $(this), selector, keepData ); - }); - }; -} - -$.widget = function( name, base, prototype ) { - var namespace = name.split( "." )[ 0 ], - fullName; - name = name.split( "." )[ 1 ]; - fullName = namespace + "-" + name; - - if ( !prototype ) { - prototype = base; - base = $.Widget; - } - - // create selector for plugin - $.expr[ ":" ][ fullName ] = function( elem ) { - return !!$.data( elem, name ); - }; - - $[ namespace ] = $[ namespace ] || {}; - $[ namespace ][ name ] = function( options, element ) { - // allow instantiation without initializing for simple inheritance - if ( arguments.length ) { - this._createWidget( options, element ); - } - }; - - var basePrototype = new base(); - // we need to make the options hash a property directly on the new instance - // otherwise we'll modify the options hash on the prototype that we're - // inheriting from -// $.each( basePrototype, function( key, val ) { -// if ( $.isPlainObject(val) ) { -// basePrototype[ key ] = $.extend( {}, val ); -// } -// }); - basePrototype.options = $.extend( true, {}, basePrototype.options ); - $[ namespace ][ name ].prototype = $.extend( true, basePrototype, { - namespace: namespace, - widgetName: name, - widgetEventPrefix: $[ namespace ][ name ].prototype.widgetEventPrefix || name, - widgetBaseClass: fullName - }, prototype ); - - $.widget.bridge( name, $[ namespace ][ name ] ); -}; - -$.widget.bridge = function( name, object ) { - $.fn[ name ] = function( options ) { - var isMethodCall = typeof options === "string", - args = Array.prototype.slice.call( arguments, 1 ), - returnValue = this; - - // allow multiple hashes to be passed on init - options = !isMethodCall && args.length ? - $.extend.apply( null, [ true, options ].concat(args) ) : - options; - - // prevent calls to internal methods - if ( isMethodCall && options.charAt( 0 ) === "_" ) { - return returnValue; - } - - if ( isMethodCall ) { - this.each(function() { - var instance = $.data( this, name ); - if ( !instance ) { - throw "cannot call methods on " + name + " prior to initialization; " + - "attempted to call method '" + options + "'"; - } - if ( !$.isFunction( instance[options] ) ) { - throw "no such method '" + options + "' for " + name + " widget instance"; - } - var methodValue = instance[ options ].apply( instance, args ); - if ( methodValue !== instance && methodValue !== undefined ) { - returnValue = methodValue; - return false; - } - }); - } else { - this.each(function() { - var instance = $.data( this, name ); - if ( instance ) { - instance.option( options || {} )._init(); - } else { - $.data( this, name, new object( options, this ) ); - } - }); - } - - return returnValue; - }; -}; - -$.Widget = function( options, element ) { - // allow instantiation without initializing for simple inheritance - if ( arguments.length ) { - this._createWidget( options, element ); - } -}; - -$.Widget.prototype = { - widgetName: "widget", - widgetEventPrefix: "", - options: { - disabled: false - }, - _createWidget: function( options, element ) { - // $.widget.bridge stores the plugin instance, but we do it anyway - // so that it's stored even before the _create function runs - $.data( element, this.widgetName, this ); - this.element = $( element ); - this.options = $.extend( true, {}, - this.options, - this._getCreateOptions(), - options ); - - var self = this; - this.element.bind( "remove." + this.widgetName, function() { - self.destroy(); - }); - - this._create(); - this._trigger( "create" ); - this._init(); - }, - _getCreateOptions: function() { - var options = {}; - if ( $.metadata ) { - options = $.metadata.get( element )[ this.widgetName ]; - } - return options; - }, - _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( key, value ) { - var options = key; - - if ( arguments.length === 0 ) { - // don't return a reference to the internal hash - return $.extend( {}, this.options ); - } - - if (typeof key === "string" ) { - if ( value === undefined ) { - return this.options[ key ]; - } - options = {}; - options[ key ] = value; - } - - this._setOptions( options ); - - return this; - }, - _setOptions: function( options ) { - var self = this; - $.each( options, function( key, value ) { - self._setOption( key, value ); - }); - - return this; - }, - _setOption: function( key, value ) { - this.options[ key ] = value; - - if ( key === "disabled" ) { - this.widget() - [ value ? "addClass" : "removeClass"]( - this.widgetBaseClass + "-disabled" + " " + - "ui-state-disabled" ) - .attr( "aria-disabled", value ); - } - - return this; - }, - - enable: function() { - return this._setOption( "disabled", false ); - }, - disable: function() { - return this._setOption( "disabled", true ); - }, - - _trigger: function( type, event, data ) { - var callback = this.options[ type ]; - - event = $.Event( event ); - event.type = ( type === this.widgetEventPrefix ? - type : - this.widgetEventPrefix + type ).toLowerCase(); - data = data || {}; - - // copy original event properties over to the new event - // this would happen if we could call $.event.fix instead of $.Event - // but we don't have a way to force an event to be fixed multiple times - if ( event.originalEvent ) { - for ( var i = $.event.props.length, prop; i; ) { - prop = $.event.props[ --i ]; - event[ prop ] = event.originalEvent[ prop ]; - } - } - - this.element.trigger( event, data ); - - return !( $.isFunction(callback) && - callback.call( this.element[0], event, data ) === false || - event.isDefaultPrevented() ); - } -}; - -})( jQuery ); - -(function( $, undefined ) { - -$.widget( "mobile.widget", { - // decorate the parent _createWidget to trigger `widgetinit` for users - // who wish to do post post `widgetcreate` alterations/additions - // - // TODO create a pull request for jquery ui to trigger this event - // in the original _createWidget - _createWidget: function() { - $.Widget.prototype._createWidget.apply( this, arguments ); - this._trigger( 'init' ); - }, - - _getCreateOptions: function() { - - var elem = this.element, - options = {}; - - $.each( this.options, function( option ) { - - var value = elem.jqmData( option.replace( /[A-Z]/g, function( c ) { - return "-" + c.toLowerCase(); - }) - ); - - if ( value !== undefined ) { - options[ option ] = value; - } - }); - - return options; - }, - - enhanceWithin: function( target, useKeepNative ) { - this.enhance( $( this.options.initSelector, $( target )), useKeepNative ); - }, - - enhance: function( targets, useKeepNative ) { - var page, keepNative, $widgetElements = $( targets ), self = this; - - // if ignoreContentEnabled is set to true the framework should - // only enhance the selected elements when they do NOT have a - // parent with the data-namespace-ignore attribute - $widgetElements = $.mobile.enhanceable( $widgetElements ); - - if ( useKeepNative && $widgetElements.length ) { - // TODO remove dependency on the page widget for the keepNative. - // Currently the keepNative value is defined on the page prototype so - // the method is as well - page = $.mobile.closestPageData( $widgetElements ); - keepNative = (page && page.keepNativeSelector()) || ""; - - $widgetElements = $widgetElements.not( keepNative ); - } - - $widgetElements[ this.widgetName ](); - }, - - raise: function( msg ) { - throw "Widget [" + this.widgetName + "]: " + msg; - } -}); - -})( jQuery ); - -(function( $, window, undefined ) { - - var nsNormalizeDict = {}; - - // jQuery.mobile configurable options - $.mobile = $.extend( {}, { - - // Version of the jQuery Mobile Framework - version: "1.1.1", - - // Namespace used framework-wide for data-attrs. Default is no namespace - ns: "", - - // Define the url parameter used for referencing widget-generated sub-pages. - // Translates to to example.html&ui-page=subpageIdentifier - // hash segment before &ui-page= is used to make Ajax request - subPageUrlKey: "ui-page", - - // Class assigned to page currently in view, and during transitions - activePageClass: "ui-page-active", - - // Class used for "active" button state, from CSS framework - activeBtnClass: "ui-btn-active", - - // Class used for "focus" form element state, from CSS framework - focusClass: "ui-focus", - - // Automatically handle clicks and form submissions through Ajax, when same-domain - ajaxEnabled: true, - - // Automatically load and show pages based on location.hash - hashListeningEnabled: true, - - // disable to prevent jquery from bothering with links - linkBindingEnabled: true, - - // Set default page transition - 'none' for no transitions - defaultPageTransition: "fade", - - // Set maximum window width for transitions to apply - 'false' for no limit - maxTransitionWidth: false, - - // Minimum scroll distance that will be remembered when returning to a page - minScrollBack: 250, - - // DEPRECATED: the following property is no longer in use, but defined until 2.0 to prevent conflicts - touchOverflowEnabled: false, - - // Set default dialog transition - 'none' for no transitions - defaultDialogTransition: "pop", - - // Show loading message during Ajax requests - // if false, message will not appear, but loading classes will still be toggled on html el - loadingMessage: "loading", - - // Error response message - appears when an Ajax page request fails - pageLoadErrorMessage: "Error Loading Page", - - // Should the text be visble in the loading message? - loadingMessageTextVisible: false, - - // When the text is visible, what theme does the loading box use? - loadingMessageTheme: "a", - - // For error messages, which theme does the box uses? - pageLoadErrorMessageTheme: "e", - - //automatically initialize the DOM when it's ready - autoInitializePage: true, - - pushStateEnabled: true, - - // allows users to opt in to ignoring content by marking a parent element as - // data-ignored - ignoreContentEnabled: false, - - // turn of binding to the native orientationchange due to android orientation behavior - orientationChangeEnabled: true, - - buttonMarkup: { - hoverDelay: 200 - }, - - // TODO might be useful upstream in jquery itself ? - keyCode: { - ALT: 18, - BACKSPACE: 8, - CAPS_LOCK: 20, - COMMA: 188, - COMMAND: 91, - COMMAND_LEFT: 91, // COMMAND - COMMAND_RIGHT: 93, - CONTROL: 17, - DELETE: 46, - DOWN: 40, - END: 35, - ENTER: 13, - ESCAPE: 27, - HOME: 36, - INSERT: 45, - LEFT: 37, - MENU: 93, // COMMAND_RIGHT - 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 // COMMAND - }, - - // Scroll page vertically: scroll to 0 to hide iOS address bar, or pass a Y value - silentScroll: function( ypos ) { - if ( $.type( ypos ) !== "number" ) { - ypos = $.mobile.defaultHomeScroll; - } - - // prevent scrollstart and scrollstop events - $.event.special.scrollstart.enabled = false; - - setTimeout(function() { - window.scrollTo( 0, ypos ); - $( document ).trigger( "silentscroll", { x: 0, y: ypos }); - }, 20 ); - - setTimeout(function() { - $.event.special.scrollstart.enabled = true; - }, 150 ); - }, - - // Expose our cache for testing purposes. - nsNormalizeDict: nsNormalizeDict, - - // Take a data attribute property, prepend the namespace - // and then camel case the attribute string. Add the result - // to our nsNormalizeDict so we don't have to do this again. - nsNormalize: function( prop ) { - if ( !prop ) { - return; - } - - return nsNormalizeDict[ prop ] || ( nsNormalizeDict[ prop ] = $.camelCase( $.mobile.ns + prop ) ); - }, - - // Find the closest parent with a theme class on it. Note that - // we are not using $.fn.closest() on purpose here because this - // method gets called quite a bit and we need it to be as fast - // as possible. - getInheritedTheme: function( el, defaultTheme ) { - var e = el[ 0 ], - ltr = "", - re = /ui-(bar|body|overlay)-([a-z])\b/, - c, m; - - while ( e ) { - c = e.className || ""; - if ( c && ( m = re.exec( c ) ) && ( ltr = m[ 2 ] ) ) { - // We found a parent with a theme class - // on it so bail from this loop. - break; - } - - e = e.parentNode; - } - - // Return the theme letter we found, if none, return the - // specified default. - - return ltr || defaultTheme || "a"; - }, - - // TODO the following $ and $.fn extensions can/probably should be moved into jquery.mobile.core.helpers - // - // Find the closest javascript page element to gather settings data jsperf test - // http://jsperf.com/single-complex-selector-vs-many-complex-selectors/edit - // possibly naive, but it shows that the parsing overhead for *just* the page selector vs - // the page and dialog selector is negligable. This could probably be speed up by - // doing a similar parent node traversal to the one found in the inherited theme code above - closestPageData: function( $target ) { - return $target - .closest(':jqmData(role="page"), :jqmData(role="dialog")') - .data("page"); - }, - - enhanceable: function( $set ) { - return this.haveParents( $set, "enhance" ); - }, - - hijackable: function( $set ) { - return this.haveParents( $set, "ajax" ); - }, - - haveParents: function( $set, attr ) { - if( !$.mobile.ignoreContentEnabled ){ - return $set; - } - - var count = $set.length, - $newSet = $(), - e, $element, excluded; - - for ( var i = 0; i < count; i++ ) { - $element = $set.eq( i ); - excluded = false; - e = $set[ i ]; - - while ( e ) { - var c = e.getAttribute ? e.getAttribute( "data-" + $.mobile.ns + attr ) : ""; - - if ( c === "false" ) { - excluded = true; - break; - } - - e = e.parentNode; - } - - if ( !excluded ) { - $newSet = $newSet.add( $element ); - } - } - - return $newSet; - }, - - getScreenHeight: function(){ - // Native innerHeight returns more accurate value for this across platforms, - // jQuery version is here as a normalized fallback for platforms like Symbian - return window.innerHeight || $( window ).height(); - } - }, $.mobile ); - - // Mobile version of data and removeData and hasData methods - // ensures all data is set and retrieved using jQuery Mobile's data namespace - $.fn.jqmData = function( prop, value ) { - var result; - if ( typeof prop != "undefined" ) { - if ( prop ) { - prop = $.mobile.nsNormalize( prop ); - } - result = this.data.apply( this, arguments.length < 2 ? [ prop ] : [ prop, value ] ); - } - return result; - }; - - $.jqmData = function( elem, prop, value ) { - var result; - if ( typeof prop != "undefined" ) { - result = $.data( elem, prop ? $.mobile.nsNormalize( prop ) : prop, value ); - } - return result; - }; - - $.fn.jqmRemoveData = function( prop ) { - return this.removeData( $.mobile.nsNormalize( prop ) ); - }; - - $.jqmRemoveData = function( elem, prop ) { - return $.removeData( elem, $.mobile.nsNormalize( prop ) ); - }; - - $.fn.removeWithDependents = function() { - $.removeWithDependents( this ); - }; - - $.removeWithDependents = function( elem ) { - var $elem = $( elem ); - - ( $elem.jqmData('dependents') || $() ).remove(); - $elem.remove(); - }; - - $.fn.addDependents = function( newDependents ) { - $.addDependents( $(this), newDependents ); - }; - - $.addDependents = function( elem, newDependents ) { - var dependents = $(elem).jqmData( 'dependents' ) || $(); - - $(elem).jqmData( 'dependents', $.merge(dependents, newDependents) ); - }; - - // note that this helper doesn't attempt to handle the callback - // or setting of an html elements text, its only purpose is - // to return the html encoded version of the text in all cases. (thus the name) - $.fn.getEncodedText = function() { - return $( "
      " ).text( $(this).text() ).html(); - }; - - // fluent helper function for the mobile namespaced equivalent - $.fn.jqmEnhanceable = function() { - return $.mobile.enhanceable( this ); - }; - - $.fn.jqmHijackable = function() { - return $.mobile.hijackable( this ); - }; - - // Monkey-patching Sizzle to filter the :jqmData selector - var oldFind = $.find, - jqmDataRE = /:jqmData\(([^)]*)\)/g; - - $.find = function( selector, context, ret, extra ) { - selector = selector.replace( jqmDataRE, "[data-" + ( $.mobile.ns || "" ) + "$1]" ); - - return oldFind.call( this, selector, context, ret, extra ); - }; - - $.extend( $.find, oldFind ); - - $.find.matches = function( expr, set ) { - return $.find( expr, null, null, set ); - }; - - $.find.matchesSelector = function( node, expr ) { - return $.find( expr, null, null, [ node ] ).length > 0; - }; -})( jQuery, this ); - - -(function( $, undefined ) { - -var $window = $( window ), - $html = $( "html" ); - -/* $.mobile.media method: pass a CSS media type or query and get a bool return - note: this feature relies on actual media query support for media queries, though types will work most anywhere - examples: - $.mobile.media('screen') // tests for screen media type - $.mobile.media('screen and (min-width: 480px)') // tests for screen media type with window width > 480px - $.mobile.media('@media screen and (-webkit-min-device-pixel-ratio: 2)') // tests for webkit 2x pixel ratio (iPhone 4) -*/ -$.mobile.media = (function() { - // TODO: use window.matchMedia once at least one UA implements it - var cache = {}, - testDiv = $( "
      " ), - fakeBody = $( "" ).append( testDiv ); - - return function( query ) { - if ( !( query in cache ) ) { - var styleBlock = document.createElement( "style" ), - cssrule = "@media " + query + " { #jquery-mediatest { position:absolute; } }"; - - //must set type for IE! - styleBlock.type = "text/css"; - - if ( styleBlock.styleSheet ){ - styleBlock.styleSheet.cssText = cssrule; - } else { - styleBlock.appendChild( document.createTextNode(cssrule) ); - } - - $html.prepend( fakeBody ).prepend( styleBlock ); - cache[ query ] = testDiv.css( "position" ) === "absolute"; - fakeBody.add( styleBlock ).remove(); - } - return cache[ query ]; - }; -})(); - -})(jQuery); - -(function( $, undefined ) { - -var fakeBody = $( "" ).prependTo( "html" ), - fbCSS = fakeBody[ 0 ].style, - vendors = [ "Webkit", "Moz", "O" ], - webos = "palmGetResource" in window, //only used to rule out scrollTop - opera = window.opera, - operamini = window.operamini && ({}).toString.call( window.operamini ) === "[object OperaMini]", - bb = window.blackberry; //only used to rule out box shadow, as it's filled opaque on BB - -// thx Modernizr -function propExists( prop ) { - var uc_prop = prop.charAt( 0 ).toUpperCase() + prop.substr( 1 ), - props = ( prop + " " + vendors.join( uc_prop + " " ) + uc_prop ).split( " " ); - - for ( var v in props ){ - if ( fbCSS[ props[ v ] ] !== undefined ) { - return true; - } - } -} - -function validStyle( prop, value, check_vend ) { - var div = document.createElement('div'), - uc = function( txt ) { - return txt.charAt( 0 ).toUpperCase() + txt.substr( 1 ) - }, - vend_pref = function( vend ) { - return "-" + vend.charAt( 0 ).toLowerCase() + vend.substr( 1 ) + "-"; - }, - check_style = function( vend ) { - var vend_prop = vend_pref( vend ) + prop + ": " + value + ";", - uc_vend = uc( vend ), - propStyle = uc_vend + uc( prop ); - - div.setAttribute( "style", vend_prop ); - - if( !!div.style[ propStyle ] ) { - ret = true; - } - }, - check_vends = check_vend ? [ check_vend ] : vendors, - ret; - - for( i = 0; i < check_vends.length; i++ ) { - check_style( check_vends[i] ); - } - return !!ret; -} - -// Thanks to Modernizr src for this test idea. `perspective` check is limited to Moz to prevent a false positive for 3D transforms on Android. -function transform3dTest() { - var prop = "transform-3d"; - return validStyle( 'perspective', '10px', 'moz' ) || $.mobile.media( "(-" + vendors.join( "-" + prop + "),(-" ) + "-" + prop + "),(" + prop + ")" ); -} - -// Test for dynamic-updating base tag support ( allows us to avoid href,src attr rewriting ) -function baseTagTest() { - var fauxBase = location.protocol + "//" + location.host + location.pathname + "ui-dir/", - base = $( "head base" ), - fauxEle = null, - href = "", - link, rebase; - - if ( !base.length ) { - base = fauxEle = $( "", { "href": fauxBase }).appendTo( "head" ); - } else { - href = base.attr( "href" ); - } - - link = $( "" ).prependTo( fakeBody ); - rebase = link[ 0 ].href; - base[ 0 ].href = href || location.pathname; - - if ( fauxEle ) { - fauxEle.remove(); - } - return rebase.indexOf( fauxBase ) === 0; -} - -// Thanks Modernizr -function cssPointerEventsTest() { - var element = document.createElement('x'), - documentElement = document.documentElement, - getComputedStyle = window.getComputedStyle, - supports; - - if( !( 'pointerEvents' in element.style ) ){ - return false; - } - - element.style.pointerEvents = 'auto'; - element.style.pointerEvents = 'x'; - documentElement.appendChild(element); - supports = getComputedStyle && - getComputedStyle( element, '' ).pointerEvents === 'auto'; - documentElement.removeChild( element ); - return !!supports; -} - - -// non-UA-based IE version check by James Padolsey, modified by jdalton - from http://gist.github.com/527683 -// allows for inclusion of IE 6+, including Windows Mobile 7 -$.extend( $.mobile, { browser: {} } ); -$.mobile.browser.ie = (function() { - var v = 3, - div = document.createElement( "div" ), - a = div.all || []; - - // added {} to silence closure compiler warnings. registering my dislike of all things - // overly clever here for future reference - while ( div.innerHTML = "", a[ 0 ] ){}; - - return v > 4 ? v : !v; -})(); - - -$.extend( $.support, { - orientation: "orientation" in window && "onorientationchange" in window, - touch: "ontouchend" in document, - cssTransitions: "WebKitTransitionEvent" in window || validStyle( 'transition', 'height 100ms linear' ) && !opera, - pushState: "pushState" in history && "replaceState" in history, - mediaquery: $.mobile.media( "only all" ), - cssPseudoElement: !!propExists( "content" ), - touchOverflow: !!propExists( "overflowScrolling" ), - cssTransform3d: transform3dTest(), - boxShadow: !!propExists( "boxShadow" ) && !bb, - scrollTop: ( "pageXOffset" in window || "scrollTop" in document.documentElement || "scrollTop" in fakeBody[ 0 ] ) && !webos && !operamini, - dynamicBaseTag: baseTagTest(), - cssPointerEvents: cssPointerEventsTest() -}); - -fakeBody.remove(); - - -// $.mobile.ajaxBlacklist is used to override ajaxEnabled on platforms that have known conflicts with hash history updates (BB5, Symbian) -// or that generally work better browsing in regular http for full page refreshes (Opera Mini) -// Note: This detection below is used as a last resort. -// We recommend only using these detection methods when all other more reliable/forward-looking approaches are not possible -var nokiaLTE7_3 = (function(){ - - var ua = window.navigator.userAgent; - - //The following is an attempt to match Nokia browsers that are running Symbian/s60, with webkit, version 7.3 or older - return ua.indexOf( "Nokia" ) > -1 && - ( ua.indexOf( "Symbian/3" ) > -1 || ua.indexOf( "Series60/5" ) > -1 ) && - ua.indexOf( "AppleWebKit" ) > -1 && - ua.match( /(BrowserNG|NokiaBrowser)\/7\.[0-3]/ ); -})(); - -// Support conditions that must be met in order to proceed -// default enhanced qualifications are media query support OR IE 7+ -$.mobile.gradeA = function(){ - return $.support.mediaquery || $.mobile.browser.ie && $.mobile.browser.ie >= 7; -}; - -$.mobile.ajaxBlacklist = - // BlackBerry browsers, pre-webkit - window.blackberry && !window.WebKitPoint || - // Opera Mini - operamini || - // Symbian webkits pre 7.3 - nokiaLTE7_3; - -// Lastly, this workaround is the only way we've found so far to get pre 7.3 Symbian webkit devices -// to render the stylesheets when they're referenced before this script, as we'd recommend doing. -// This simply reappends the CSS in place, which for some reason makes it apply -if ( nokiaLTE7_3 ) { - $(function() { - $( "head link[rel='stylesheet']" ).attr( "rel", "alternate stylesheet" ).attr( "rel", "stylesheet" ); - }); -} - -// For ruling out shadows via css -if ( !$.support.boxShadow ) { - $( "html" ).addClass( "ui-mobile-nosupport-boxshadow" ); -} - -})( jQuery ); - -(function( $, window, undefined ) { - -// add new event shortcuts -$.each( ( "touchstart touchmove touchend orientationchange throttledresize " + - "tap taphold swipe swipeleft swiperight scrollstart scrollstop" ).split( " " ), function( i, name ) { - - $.fn[ name ] = function( fn ) { - return fn ? this.bind( name, fn ) : this.trigger( name ); - }; - - $.attrFn[ name ] = true; -}); - -var supportTouch = $.support.touch, - scrollEvent = "touchmove scroll", - touchStartEvent = supportTouch ? "touchstart" : "mousedown", - touchStopEvent = supportTouch ? "touchend" : "mouseup", - touchMoveEvent = supportTouch ? "touchmove" : "mousemove"; - -function triggerCustomEvent( obj, eventType, event ) { - var originalType = event.type; - event.type = eventType; - $.event.handle.call( obj, event ); - event.type = originalType; -} - -// also handles scrollstop -$.event.special.scrollstart = { - - enabled: true, - - setup: function() { - - var thisObject = this, - $this = $( thisObject ), - scrolling, - timer; - - function trigger( event, state ) { - scrolling = state; - triggerCustomEvent( thisObject, scrolling ? "scrollstart" : "scrollstop", event ); - } - - // iPhone triggers scroll after a small delay; use touchmove instead - $this.bind( scrollEvent, function( event ) { - - if ( !$.event.special.scrollstart.enabled ) { - return; - } - - if ( !scrolling ) { - trigger( event, true ); - } - - clearTimeout( timer ); - timer = setTimeout(function() { - trigger( event, false ); - }, 50 ); - }); - } -}; - -// also handles taphold -$.event.special.tap = { - setup: function() { - var thisObject = this, - $this = $( thisObject ); - - $this.bind( "vmousedown", function( event ) { - - if ( event.which && event.which !== 1 ) { - return false; - } - - var origTarget = event.target, - origEvent = event.originalEvent, - timer; - - function clearTapTimer() { - clearTimeout( timer ); - } - - function clearTapHandlers() { - clearTapTimer(); - - $this.unbind( "vclick", clickHandler ) - .unbind( "vmouseup", clearTapTimer ); - $( document ).unbind( "vmousecancel", clearTapHandlers ); - } - - function clickHandler(event) { - clearTapHandlers(); - - // ONLY trigger a 'tap' event if the start target is - // the same as the stop target. - if ( origTarget == event.target ) { - triggerCustomEvent( thisObject, "tap", event ); - } - } - - $this.bind( "vmouseup", clearTapTimer ) - .bind( "vclick", clickHandler ); - $( document ).bind( "vmousecancel", clearTapHandlers ); - - timer = setTimeout(function() { - triggerCustomEvent( thisObject, "taphold", $.Event( "taphold", { target: origTarget } ) ); - }, 750 ); - }); - } -}; - -// also handles swipeleft, swiperight -$.event.special.swipe = { - scrollSupressionThreshold: 10, // More than this horizontal displacement, and we will suppress scrolling. - - durationThreshold: 1000, // More time than this, and it isn't a swipe. - - horizontalDistanceThreshold: 30, // Swipe horizontal displacement must be more than this. - - verticalDistanceThreshold: 75, // Swipe vertical displacement must be less than this. - - setup: function() { - var thisObject = this, - $this = $( thisObject ); - - $this.bind( touchStartEvent, function( event ) { - var data = event.originalEvent.touches ? - event.originalEvent.touches[ 0 ] : event, - start = { - time: ( new Date() ).getTime(), - coords: [ data.pageX, data.pageY ], - origin: $( event.target ) - }, - stop; - - function moveHandler( event ) { - - if ( !start ) { - return; - } - - var data = event.originalEvent.touches ? - event.originalEvent.touches[ 0 ] : event; - - stop = { - time: ( new Date() ).getTime(), - coords: [ data.pageX, data.pageY ] - }; - - // prevent scrolling - if ( Math.abs( start.coords[ 0 ] - stop.coords[ 0 ] ) > $.event.special.swipe.scrollSupressionThreshold ) { - event.preventDefault(); - } - } - - $this.bind( touchMoveEvent, moveHandler ) - .one( touchStopEvent, function( event ) { - $this.unbind( touchMoveEvent, moveHandler ); - - if ( start && stop ) { - if ( stop.time - start.time < $.event.special.swipe.durationThreshold && - Math.abs( start.coords[ 0 ] - stop.coords[ 0 ] ) > $.event.special.swipe.horizontalDistanceThreshold && - Math.abs( start.coords[ 1 ] - stop.coords[ 1 ] ) < $.event.special.swipe.verticalDistanceThreshold ) { - - start.origin.trigger( "swipe" ) - .trigger( start.coords[0] > stop.coords[ 0 ] ? "swipeleft" : "swiperight" ); - } - } - start = stop = undefined; - }); - }); - } -}; - -(function( $, window ) { - // "Cowboy" Ben Alman - - var win = $( window ), - special_event, - get_orientation, - last_orientation, - initial_orientation_is_landscape, - initial_orientation_is_default, - portrait_map = { "0": true, "180": true }; - - // It seems that some device/browser vendors use window.orientation values 0 and 180 to - // denote the "default" orientation. For iOS devices, and most other smart-phones tested, - // the default orientation is always "portrait", but in some Android and RIM based tablets, - // the default orientation is "landscape". The following code attempts to use the window - // dimensions to figure out what the current orientation is, and then makes adjustments - // to the to the portrait_map if necessary, so that we can properly decode the - // window.orientation value whenever get_orientation() is called. - // - // Note that we used to use a media query to figure out what the orientation the browser - // thinks it is in: - // - // initial_orientation_is_landscape = $.mobile.media("all and (orientation: landscape)"); - // - // but there was an iPhone/iPod Touch bug beginning with iOS 4.2, up through iOS 5.1, - // where the browser *ALWAYS* applied the landscape media query. This bug does not - // happen on iPad. - - if ( $.support.orientation ) { - - // Check the window width and height to figure out what the current orientation - // of the device is at this moment. Note that we've initialized the portrait map - // values to 0 and 180, *AND* we purposely check for landscape so that if we guess - // wrong, , we default to the assumption that portrait is the default orientation. - // We use a threshold check below because on some platforms like iOS, the iPhone - // form-factor can report a larger width than height if the user turns on the - // developer console. The actual threshold value is somewhat arbitrary, we just - // need to make sure it is large enough to exclude the developer console case. - - var ww = window.innerWidth || $( window ).width(), - wh = window.innerHeight || $( window ).height(), - landscape_threshold = 50; - - initial_orientation_is_landscape = ww > wh && ( ww - wh ) > landscape_threshold; - - - // Now check to see if the current window.orientation is 0 or 180. - initial_orientation_is_default = portrait_map[ window.orientation ]; - - // If the initial orientation is landscape, but window.orientation reports 0 or 180, *OR* - // if the initial orientation is portrait, but window.orientation reports 90 or -90, we - // need to flip our portrait_map values because landscape is the default orientation for - // this device/browser. - if ( ( initial_orientation_is_landscape && initial_orientation_is_default ) || ( !initial_orientation_is_landscape && !initial_orientation_is_default ) ) { - portrait_map = { "-90": true, "90": true }; - } - } - - $.event.special.orientationchange = special_event = { - setup: function() { - // If the event is supported natively, return false so that jQuery - // will bind to the event using DOM methods. - if ( $.support.orientation && $.mobile.orientationChangeEnabled ) { - return false; - } - - // Get the current orientation to avoid initial double-triggering. - last_orientation = get_orientation(); - - // Because the orientationchange event doesn't exist, simulate the - // event by testing window dimensions on resize. - win.bind( "throttledresize", handler ); - }, - teardown: function(){ - // If the event is supported natively, return false so that - // jQuery will unbind the event using DOM methods. - if ( $.support.orientation && $.mobile.orientationChangeEnabled ) { - return false; - } - - // Because the orientationchange event doesn't exist, unbind the - // resize event handler. - win.unbind( "throttledresize", handler ); - }, - add: function( handleObj ) { - // Save a reference to the bound event handler. - var old_handler = handleObj.handler; - - - handleObj.handler = function( event ) { - // Modify event object, adding the .orientation property. - event.orientation = get_orientation(); - - // Call the originally-bound event handler and return its result. - return old_handler.apply( this, arguments ); - }; - } - }; - - // If the event is not supported natively, this handler will be bound to - // the window resize event to simulate the orientationchange event. - function handler() { - // Get the current orientation. - var orientation = get_orientation(); - - if ( orientation !== last_orientation ) { - // The orientation has changed, so trigger the orientationchange event. - last_orientation = orientation; - win.trigger( "orientationchange" ); - } - } - - // Get the current page orientation. This method is exposed publicly, should it - // be needed, as jQuery.event.special.orientationchange.orientation() - $.event.special.orientationchange.orientation = get_orientation = function() { - var isPortrait = true, elem = document.documentElement; - - // prefer window orientation to the calculation based on screensize as - // the actual screen resize takes place before or after the orientation change event - // has been fired depending on implementation (eg android 2.3 is before, iphone after). - // More testing is required to determine if a more reliable method of determining the new screensize - // is possible when orientationchange is fired. (eg, use media queries + element + opacity) - if ( $.support.orientation ) { - // if the window orientation registers as 0 or 180 degrees report - // portrait, otherwise landscape - isPortrait = portrait_map[ window.orientation ]; - } else { - isPortrait = elem && elem.clientWidth / elem.clientHeight < 1.1; - } - - return isPortrait ? "portrait" : "landscape"; - }; - -})( jQuery, window ); - - -// throttled resize event -(function() { - - $.event.special.throttledresize = { - setup: function() { - $( this ).bind( "resize", handler ); - }, - teardown: function(){ - $( this ).unbind( "resize", handler ); - } - }; - - var throttle = 250, - handler = function() { - curr = ( new Date() ).getTime(); - diff = curr - lastCall; - - if ( diff >= throttle ) { - - lastCall = curr; - $( this ).trigger( "throttledresize" ); - - } else { - - if ( heldCall ) { - clearTimeout( heldCall ); - } - - // Promise a held call will still execute - heldCall = setTimeout( handler, throttle - diff ); - } - }, - lastCall = 0, - heldCall, - curr, - diff; -})(); - - -$.each({ - scrollstop: "scrollstart", - taphold: "tap", - swipeleft: "swipe", - swiperight: "swipe" -}, function( event, sourceEvent ) { - - $.event.special[ event ] = { - setup: function() { - $( this ).bind( sourceEvent, $.noop ); - } - }; -}); - -})( jQuery, this ); - -(function( $, undefined ) { - -$.widget( "mobile.page", $.mobile.widget, { - options: { - theme: "c", - domCache: false, - keepNativeDefault: ":jqmData(role='none'), :jqmData(role='nojs')" - }, - - _create: function() { - - var self = this; - - // if false is returned by the callbacks do not create the page - if( self._trigger( "beforecreate" ) === false ){ - return false; - } - - self.element - .attr( "tabindex", "0" ) - .addClass( "ui-page ui-body-" + self.options.theme ) - .bind( "pagebeforehide", function(){ - self.removeContainerBackground(); - } ) - .bind( "pagebeforeshow", function(){ - self.setContainerBackground(); - } ); - - }, - - removeContainerBackground: function(){ - $.mobile.pageContainer.removeClass( "ui-overlay-" + $.mobile.getInheritedTheme( this.element.parent() ) ); - }, - - // set the page container background to the page theme - setContainerBackground: function( theme ){ - if( this.options.theme ){ - $.mobile.pageContainer.addClass( "ui-overlay-" + ( theme || this.options.theme ) ); - } - }, - - keepNativeSelector: function() { - var options = this.options, - keepNativeDefined = options.keepNative && $.trim(options.keepNative); - - if( keepNativeDefined && options.keepNative !== options.keepNativeDefault ){ - return [options.keepNative, options.keepNativeDefault].join(", "); - } - - return options.keepNativeDefault; - } -}); -})( jQuery ); - - -(function( $, window, undefined ) { - -var createHandler = function( sequential ){ - - // Default to sequential - if( sequential === undefined ){ - sequential = true; - } - - return function( name, reverse, $to, $from ) { - - var deferred = new $.Deferred(), - reverseClass = reverse ? " reverse" : "", - active = $.mobile.urlHistory.getActive(), - toScroll = active.lastScroll || $.mobile.defaultHomeScroll, - screenHeight = $.mobile.getScreenHeight(), - maxTransitionOverride = $.mobile.maxTransitionWidth !== false && $( window ).width() > $.mobile.maxTransitionWidth, - none = !$.support.cssTransitions || maxTransitionOverride || !name || name === "none" || Math.max( $( window ).scrollTop(), toScroll ) > $.mobile.getMaxScrollForTransition(), - toPreClass = " ui-page-pre-in", - toggleViewportClass = function(){ - $.mobile.pageContainer.toggleClass( "ui-mobile-viewport-transitioning viewport-" + name ); - }, - scrollPage = function(){ - // By using scrollTo instead of silentScroll, we can keep things better in order - // Just to be precautios, disable scrollstart listening like silentScroll would - $.event.special.scrollstart.enabled = false; - - window.scrollTo( 0, toScroll ); - - // reenable scrollstart listening like silentScroll would - setTimeout(function() { - $.event.special.scrollstart.enabled = true; - }, 150 ); - }, - cleanFrom = function(){ - $from - .removeClass( $.mobile.activePageClass + " out in reverse " + name ) - .height( "" ); - }, - startOut = function(){ - // if it's not sequential, call the doneOut transition to start the TO page animating in simultaneously - if( !sequential ){ - doneOut(); - } - else { - $from.animationComplete( doneOut ); - } - - // Set the from page's height and start it transitioning out - // Note: setting an explicit height helps eliminate tiling in the transitions - $from - .height( screenHeight + $(window ).scrollTop() ) - .addClass( name + " out" + reverseClass ); - }, - - doneOut = function() { - - if ( $from && sequential ) { - cleanFrom(); - } - - startIn(); - }, - - startIn = function(){ - - $to.addClass( $.mobile.activePageClass ); - - // Send focus to page as it is now display: block - $.mobile.focusPage( $to ); - - // Set to page height - $to.height( screenHeight + toScroll ); - - scrollPage(); - - if( !none ){ - $to.animationComplete( doneIn ); - } - - $to.addClass( name + " in" + reverseClass ); - - if( none ){ - doneIn(); - } - - }, - - doneIn = function() { - - if ( !sequential ) { - - if( $from ){ - cleanFrom(); - } - } - - $to - .removeClass( "out in reverse " + name ) - .height( "" ); - - toggleViewportClass(); - - // In some browsers (iOS5), 3D transitions block the ability to scroll to the desired location during transition - // This ensures we jump to that spot after the fact, if we aren't there already. - if( $( window ).scrollTop() !== toScroll ){ - scrollPage(); - } - - deferred.resolve( name, reverse, $to, $from, true ); - }; - - toggleViewportClass(); - - if ( $from && !none ) { - startOut(); - } - else { - doneOut(); - } - - return deferred.promise(); - }; -} - -// generate the handlers from the above -var sequentialHandler = createHandler(), - simultaneousHandler = createHandler( false ), - defaultGetMaxScrollForTransition = function() { - return $.mobile.getScreenHeight() * 3; - }; - -// Make our transition handler the public default. -$.mobile.defaultTransitionHandler = sequentialHandler; - -//transition handler dictionary for 3rd party transitions -$.mobile.transitionHandlers = { - "default": $.mobile.defaultTransitionHandler, - "sequential": sequentialHandler, - "simultaneous": simultaneousHandler -}; - -$.mobile.transitionFallbacks = {}; - -// Set the getMaxScrollForTransition to default if no implementation was set by user -$.mobile.getMaxScrollForTransition = $.mobile.getMaxScrollForTransition || defaultGetMaxScrollForTransition; -})( jQuery, this ); - -( function( $, undefined ) { - - //define vars for interal use - var $window = $( window ), - $html = $( 'html' ), - $head = $( 'head' ), - - //url path helpers for use in relative url management - path = { - - // This scary looking regular expression parses an absolute URL or its relative - // variants (protocol, site, document, query, and hash), into the various - // components (protocol, host, path, query, fragment, etc that make up the - // URL as well as some other commonly used sub-parts. When used with RegExp.exec() - // or String.match, it parses the URL into a results array that looks like this: - // - // [0]: http://jblas:password@mycompany.com:8080/mail/inbox?msg=1234&type=unread#msg-content - // [1]: http://jblas:password@mycompany.com:8080/mail/inbox?msg=1234&type=unread - // [2]: http://jblas:password@mycompany.com:8080/mail/inbox - // [3]: http://jblas:password@mycompany.com:8080 - // [4]: http: - // [5]: // - // [6]: jblas:password@mycompany.com:8080 - // [7]: jblas:password - // [8]: jblas - // [9]: password - // [10]: mycompany.com:8080 - // [11]: mycompany.com - // [12]: 8080 - // [13]: /mail/inbox - // [14]: /mail/ - // [15]: inbox - // [16]: ?msg=1234&type=unread - // [17]: #msg-content - // - urlParseRE: /^(((([^:\/#\?]+:)?(?:(\/\/)((?:(([^:@\/#\?]+)(?:\:([^:@\/#\?]+))?)@)?(([^:\/#\?\]\[]+|\[[^\/\]@#?]+\])(?:\:([0-9]+))?))?)?)?((\/?(?:[^\/\?#]+\/+)*)([^\?#]*)))?(\?[^#]+)?)(#.*)?/, - - //Parse a URL into a structure that allows easy access to - //all of the URL components by name. - parseUrl: function( url ) { - // If we're passed an object, we'll assume that it is - // a parsed url object and just return it back to the caller. - if ( $.type( url ) === "object" ) { - return url; - } - - var matches = path.urlParseRE.exec( url || "" ) || []; - - // Create an object that allows the caller to access the sub-matches - // by name. Note that IE returns an empty string instead of undefined, - // like all other browsers do, so we normalize everything so its consistent - // no matter what browser we're running on. - return { - href: matches[ 0 ] || "", - hrefNoHash: matches[ 1 ] || "", - hrefNoSearch: matches[ 2 ] || "", - domain: matches[ 3 ] || "", - protocol: matches[ 4 ] || "", - doubleSlash: matches[ 5 ] || "", - authority: matches[ 6 ] || "", - username: matches[ 8 ] || "", - password: matches[ 9 ] || "", - host: matches[ 10 ] || "", - hostname: matches[ 11 ] || "", - port: matches[ 12 ] || "", - pathname: matches[ 13 ] || "", - directory: matches[ 14 ] || "", - filename: matches[ 15 ] || "", - search: matches[ 16 ] || "", - hash: matches[ 17 ] || "" - }; - }, - - //Turn relPath into an asbolute path. absPath is - //an optional absolute path which describes what - //relPath is relative to. - makePathAbsolute: function( relPath, absPath ) { - if ( relPath && relPath.charAt( 0 ) === "/" ) { - return relPath; - } - - relPath = relPath || ""; - absPath = absPath ? absPath.replace( /^\/|(\/[^\/]*|[^\/]+)$/g, "" ) : ""; - - var absStack = absPath ? absPath.split( "/" ) : [], - relStack = relPath.split( "/" ); - for ( var i = 0; i < relStack.length; i++ ) { - var d = relStack[ i ]; - switch ( d ) { - case ".": - break; - case "..": - if ( absStack.length ) { - absStack.pop(); - } - break; - default: - absStack.push( d ); - break; - } - } - return "/" + absStack.join( "/" ); - }, - - //Returns true if both urls have the same domain. - isSameDomain: function( absUrl1, absUrl2 ) { - return path.parseUrl( absUrl1 ).domain === path.parseUrl( absUrl2 ).domain; - }, - - //Returns true for any relative variant. - isRelativeUrl: function( url ) { - // All relative Url variants have one thing in common, no protocol. - return path.parseUrl( url ).protocol === ""; - }, - - //Returns true for an absolute url. - isAbsoluteUrl: function( url ) { - return path.parseUrl( url ).protocol !== ""; - }, - - //Turn the specified realtive URL into an absolute one. This function - //can handle all relative variants (protocol, site, document, query, fragment). - makeUrlAbsolute: function( relUrl, absUrl ) { - if ( !path.isRelativeUrl( relUrl ) ) { - return relUrl; - } - - var relObj = path.parseUrl( relUrl ), - absObj = path.parseUrl( absUrl ), - protocol = relObj.protocol || absObj.protocol, - doubleSlash = relObj.protocol ? relObj.doubleSlash : ( relObj.doubleSlash || absObj.doubleSlash ), - authority = relObj.authority || absObj.authority, - hasPath = relObj.pathname !== "", - pathname = path.makePathAbsolute( relObj.pathname || absObj.filename, absObj.pathname ), - search = relObj.search || ( !hasPath && absObj.search ) || "", - hash = relObj.hash; - - return protocol + doubleSlash + authority + pathname + search + hash; - }, - - //Add search (aka query) params to the specified url. - addSearchParams: function( url, params ) { - var u = path.parseUrl( url ), - p = ( typeof params === "object" ) ? $.param( params ) : params, - s = u.search || "?"; - return u.hrefNoSearch + s + ( s.charAt( s.length - 1 ) !== "?" ? "&" : "" ) + p + ( u.hash || "" ); - }, - - convertUrlToDataUrl: function( absUrl ) { - var u = path.parseUrl( absUrl ); - if ( path.isEmbeddedPage( u ) ) { - // For embedded pages, remove the dialog hash key as in getFilePath(), - // otherwise the Data Url won't match the id of the embedded Page. - return u.hash.split( dialogHashKey )[0].replace( /^#/, "" ); - } else if ( path.isSameDomain( u, documentBase ) ) { - return u.hrefNoHash.replace( documentBase.domain, "" ).split( dialogHashKey )[0]; - } - return absUrl; - }, - - //get path from current hash, or from a file path - get: function( newPath ) { - if( newPath === undefined ) { - newPath = location.hash; - } - return path.stripHash( newPath ).replace( /[^\/]*\.[^\/*]+$/, '' ); - }, - - //return the substring of a filepath before the sub-page key, for making a server request - getFilePath: function( path ) { - var splitkey = '&' + $.mobile.subPageUrlKey; - return path && path.split( splitkey )[0].split( dialogHashKey )[0]; - }, - - //set location hash to path - set: function( path ) { - location.hash = path; - }, - - //test if a given url (string) is a path - //NOTE might be exceptionally naive - isPath: function( url ) { - return ( /\// ).test( url ); - }, - - //return a url path with the window's location protocol/hostname/pathname removed - clean: function( url ) { - return url.replace( documentBase.domain, "" ); - }, - - //just return the url without an initial # - stripHash: function( url ) { - return url.replace( /^#/, "" ); - }, - - //remove the preceding hash, any query params, and dialog notations - cleanHash: function( hash ) { - return path.stripHash( hash.replace( /\?.*$/, "" ).replace( dialogHashKey, "" ) ); - }, - - isHashValid: function( hash ) { - return /^#[^#]+$/.test(hash); - }, - - //check whether a url is referencing the same domain, or an external domain or different protocol - //could be mailto, etc - isExternal: function( url ) { - var u = path.parseUrl( url ); - return u.protocol && u.domain !== documentUrl.domain ? true : false; - }, - - hasProtocol: function( url ) { - return ( /^(:?\w+:)/ ).test( url ); - }, - - //check if the specified url refers to the first page in the main application document. - isFirstPageUrl: function( url ) { - // We only deal with absolute paths. - var u = path.parseUrl( path.makeUrlAbsolute( url, documentBase ) ), - - // Does the url have the same path as the document? - samePath = u.hrefNoHash === documentUrl.hrefNoHash || ( documentBaseDiffers && u.hrefNoHash === documentBase.hrefNoHash ), - - // Get the first page element. - fp = $.mobile.firstPage, - - // Get the id of the first page element if it has one. - fpId = fp && fp[0] ? fp[0].id : undefined; - - // The url refers to the first page if the path matches the document and - // it either has no hash value, or the hash is exactly equal to the id of the - // first page element. - return samePath && ( !u.hash || u.hash === "#" || ( fpId && u.hash.replace( /^#/, "" ) === fpId ) ); - }, - - isEmbeddedPage: function( url ) { - var u = path.parseUrl( url ); - - //if the path is absolute, then we need to compare the url against - //both the documentUrl and the documentBase. The main reason for this - //is that links embedded within external documents will refer to the - //application document, whereas links embedded within the application - //document will be resolved against the document base. - if ( u.protocol !== "" ) { - return ( u.hash && ( u.hrefNoHash === documentUrl.hrefNoHash || ( documentBaseDiffers && u.hrefNoHash === documentBase.hrefNoHash ) ) ); - } - return (/^#/).test( u.href ); - }, - - - // Some embedded browsers, like the web view in Phone Gap, allow cross-domain XHR - // requests if the document doing the request was loaded via the file:// protocol. - // This is usually to allow the application to "phone home" and fetch app specific - // data. We normally let the browser handle external/cross-domain urls, but if the - // allowCrossDomainPages option is true, we will allow cross-domain http/https - // requests to go through our page loading logic. - isPermittedCrossDomainRequest: function( docUrl, reqUrl ) { - return $.mobile.allowCrossDomainPages - && docUrl.protocol === "file:" - && reqUrl.search( /^https?:/ ) != -1; - } - }, - - //will be defined when a link is clicked and given an active class - $activeClickedLink = null, - - //urlHistory is purely here to make guesses at whether the back or forward button was clicked - //and provide an appropriate transition - urlHistory = { - // Array of pages that are visited during a single page load. - // Each has a url and optional transition, title, and pageUrl (which represents the file path, in cases where URL is obscured, such as dialogs) - stack: [], - - //maintain an index number for the active page in the stack - activeIndex: 0, - - //get active - getActive: function() { - return urlHistory.stack[ urlHistory.activeIndex ]; - }, - - getPrev: function() { - return urlHistory.stack[ urlHistory.activeIndex - 1 ]; - }, - - getNext: function() { - return urlHistory.stack[ urlHistory.activeIndex + 1 ]; - }, - - // addNew is used whenever a new page is added - addNew: function( url, transition, title, pageUrl, role ) { - //if there's forward history, wipe it - if( urlHistory.getNext() ) { - urlHistory.clearForward(); - } - - urlHistory.stack.push( {url : url, transition: transition, title: title, pageUrl: pageUrl, role: role } ); - - urlHistory.activeIndex = urlHistory.stack.length - 1; - }, - - //wipe urls ahead of active index - clearForward: function() { - urlHistory.stack = urlHistory.stack.slice( 0, urlHistory.activeIndex + 1 ); - }, - - directHashChange: function( opts ) { - var back , forward, newActiveIndex, prev = this.getActive(); - - // check if url is in history and if it's ahead or behind current page - $.each( urlHistory.stack, function( i, historyEntry ) { - - //if the url is in the stack, it's a forward or a back - if( opts.currentUrl === historyEntry.url ) { - //define back and forward by whether url is older or newer than current page - back = i < urlHistory.activeIndex; - forward = !back; - newActiveIndex = i; - } - }); - - // save new page index, null check to prevent falsey 0 result - this.activeIndex = newActiveIndex !== undefined ? newActiveIndex : this.activeIndex; - - if( back ) { - ( opts.either || opts.isBack )( true ); - } else if( forward ) { - ( opts.either || opts.isForward )( false ); - } - }, - - //disable hashchange event listener internally to ignore one change - //toggled internally when location.hash is updated to match the url of a successful page load - ignoreNextHashChange: false - }, - - //define first selector to receive focus when a page is shown - focusable = "[tabindex],a,button:visible,select:visible,input", - - //queue to hold simultanious page transitions - pageTransitionQueue = [], - - //indicates whether or not page is in process of transitioning - isPageTransitioning = false, - - //nonsense hash change key for dialogs, so they create a history entry - dialogHashKey = "&ui-state=dialog", - - //existing base tag? - $base = $head.children( "base" ), - - //tuck away the original document URL minus any fragment. - documentUrl = path.parseUrl( location.href ), - - //if the document has an embedded base tag, documentBase is set to its - //initial value. If a base tag does not exist, then we default to the documentUrl. - documentBase = $base.length ? path.parseUrl( path.makeUrlAbsolute( $base.attr( "href" ), documentUrl.href ) ) : documentUrl, - - //cache the comparison once. - documentBaseDiffers = ( documentUrl.hrefNoHash !== documentBase.hrefNoHash ), - - getScreenHeight = $.mobile.getScreenHeight; - - //base element management, defined depending on dynamic base tag support - var base = $.support.dynamicBaseTag ? { - - //define base element, for use in routing asset urls that are referenced in Ajax-requested markup - element: ( $base.length ? $base : $( "", { href: documentBase.hrefNoHash } ).prependTo( $head ) ), - - //set the generated BASE element's href attribute to a new page's base path - set: function( href ) { - base.element.attr( "href", path.makeUrlAbsolute( href, documentBase ) ); - }, - - //set the generated BASE element's href attribute to a new page's base path - reset: function() { - base.element.attr( "href", documentBase.hrefNoHash ); - } - - } : undefined; - -/* - internal utility functions ---------------------------------------*/ - - - //direct focus to the page title, or otherwise first focusable element - $.mobile.focusPage = function ( page ) { - var autofocus = page.find("[autofocus]"), - pageTitle = page.find( ".ui-title:eq(0)" ); - - if( autofocus.length ) { - autofocus.focus(); - return; - } - - if( pageTitle.length ) { - pageTitle.focus(); - } - else{ - page.focus(); - } - } - - //remove active classes after page transition or error - function removeActiveLinkClass( forceRemoval ) { - if( !!$activeClickedLink && ( !$activeClickedLink.closest( '.ui-page-active' ).length || forceRemoval ) ) { - $activeClickedLink.removeClass( $.mobile.activeBtnClass ); - } - $activeClickedLink = null; - } - - function releasePageTransitionLock() { - isPageTransitioning = false; - if( pageTransitionQueue.length > 0 ) { - $.mobile.changePage.apply( null, pageTransitionQueue.pop() ); - } - } - - // Save the last scroll distance per page, before it is hidden - var setLastScrollEnabled = true, - setLastScroll, delayedSetLastScroll; - - setLastScroll = function() { - // this barrier prevents setting the scroll value based on the browser - // scrolling the window based on a hashchange - if( !setLastScrollEnabled ) { - return; - } - - var active = $.mobile.urlHistory.getActive(); - - if( active ) { - var lastScroll = $window.scrollTop(); - - // Set active page's lastScroll prop. - // If the location we're scrolling to is less than minScrollBack, let it go. - active.lastScroll = lastScroll < $.mobile.minScrollBack ? $.mobile.defaultHomeScroll : lastScroll; - } - }; - - // bind to scrollstop to gather scroll position. The delay allows for the hashchange - // event to fire and disable scroll recording in the case where the browser scrolls - // to the hash targets location (sometimes the top of the page). once pagechange fires - // getLastScroll is again permitted to operate - delayedSetLastScroll = function() { - setTimeout( setLastScroll, 100 ); - }; - - // disable an scroll setting when a hashchange has been fired, this only works - // because the recording of the scroll position is delayed for 100ms after - // the browser might have changed the position because of the hashchange - $window.bind( $.support.pushState ? "popstate" : "hashchange", function() { - setLastScrollEnabled = false; - }); - - // handle initial hashchange from chrome :( - $window.one( $.support.pushState ? "popstate" : "hashchange", function() { - setLastScrollEnabled = true; - }); - - // wait until the mobile page container has been determined to bind to pagechange - $window.one( "pagecontainercreate", function(){ - // once the page has changed, re-enable the scroll recording - $.mobile.pageContainer.bind( "pagechange", function() { - - setLastScrollEnabled = true; - - // remove any binding that previously existed on the get scroll - // which may or may not be different than the scroll element determined for - // this page previously - $window.unbind( "scrollstop", delayedSetLastScroll ); - - // determine and bind to the current scoll element which may be the window - // or in the case of touch overflow the element with touch overflow - $window.bind( "scrollstop", delayedSetLastScroll ); - }); - }); - - // bind to scrollstop for the first page as "pagechange" won't be fired in that case - $window.bind( "scrollstop", delayedSetLastScroll ); - - //function for transitioning between two existing pages - function transitionPages( toPage, fromPage, transition, reverse ) { - - if( fromPage ) { - //trigger before show/hide events - fromPage.data( "page" )._trigger( "beforehide", null, { nextPage: toPage } ); - } - - toPage.data( "page" )._trigger( "beforeshow", null, { prevPage: fromPage || $( "" ) } ); - - //clear page loader - $.mobile.hidePageLoadingMsg(); - - // If transition is defined, check if css 3D transforms are supported, and if not, if a fallback is specified - if( transition && !$.support.cssTransform3d && $.mobile.transitionFallbacks[ transition ] ){ - transition = $.mobile.transitionFallbacks[ transition ]; - } - - //find the transition handler for the specified transition. If there - //isn't one in our transitionHandlers dictionary, use the default one. - //call the handler immediately to kick-off the transition. - var th = $.mobile.transitionHandlers[ transition || "default" ] || $.mobile.defaultTransitionHandler, - promise = th( transition, reverse, toPage, fromPage ); - - promise.done(function() { - - //trigger show/hide events - if( fromPage ) { - fromPage.data( "page" )._trigger( "hide", null, { nextPage: toPage } ); - } - - //trigger pageshow, define prevPage as either fromPage or empty jQuery obj - toPage.data( "page" )._trigger( "show", null, { prevPage: fromPage || $( "" ) } ); - }); - - return promise; - } - - //simply set the active page's minimum height to screen height, depending on orientation - function resetActivePageHeight(){ - var aPage = $( "." + $.mobile.activePageClass ), - aPagePadT = parseFloat( aPage.css( "padding-top" ) ), - aPagePadB = parseFloat( aPage.css( "padding-bottom" ) ), - aPageBorderT = parseFloat( aPage.css( "border-top-width" ) ), - aPageBorderB = parseFloat( aPage.css( "border-bottom-width" ) ); - - aPage.css( "min-height", getScreenHeight() - aPagePadT - aPagePadB - aPageBorderT - aPageBorderB ); - } - - //shared page enhancements - function enhancePage( $page, role ) { - // If a role was specified, make sure the data-role attribute - // on the page element is in sync. - if( role ) { - $page.attr( "data-" + $.mobile.ns + "role", role ); - } - - //run page plugin - $page.page(); - } - -/* exposed $.mobile methods */ - - //animation complete callback - $.fn.animationComplete = function( callback ) { - if( $.support.cssTransitions ) { - return $( this ).one( 'webkitAnimationEnd animationend', callback ); - } - else{ - // defer execution for consistency between webkit/non webkit - setTimeout( callback, 0 ); - return $( this ); - } - }; - - //expose path object on $.mobile - $.mobile.path = path; - - //expose base object on $.mobile - $.mobile.base = base; - - //history stack - $.mobile.urlHistory = urlHistory; - - $.mobile.dialogHashKey = dialogHashKey; - - - - //enable cross-domain page support - $.mobile.allowCrossDomainPages = false; - - //return the original document url - $.mobile.getDocumentUrl = function(asParsedObject) { - return asParsedObject ? $.extend( {}, documentUrl ) : documentUrl.href; - }; - - //return the original document base url - $.mobile.getDocumentBase = function(asParsedObject) { - return asParsedObject ? $.extend( {}, documentBase ) : documentBase.href; - }; - - $.mobile._bindPageRemove = function() { - var page = $(this); - - // when dom caching is not enabled or the page is embedded bind to remove the page on hide - if( !page.data("page").options.domCache - && page.is(":jqmData(external-page='true')") ) { - - page.bind( 'pagehide.remove', function() { - var $this = $( this ), - prEvent = new $.Event( "pageremove" ); - - $this.trigger( prEvent ); - - if( !prEvent.isDefaultPrevented() ){ - $this.removeWithDependents(); - } - }); - } - }; - - // Load a page into the DOM. - $.mobile.loadPage = function( url, options ) { - // This function uses deferred notifications to let callers - // know when the page is done loading, or if an error has occurred. - var deferred = $.Deferred(), - - // The default loadPage options with overrides specified by - // the caller. - settings = $.extend( {}, $.mobile.loadPage.defaults, options ), - - // The DOM element for the page after it has been loaded. - page = null, - - // If the reloadPage option is true, and the page is already - // in the DOM, dupCachedPage will be set to the page element - // so that it can be removed after the new version of the - // page is loaded off the network. - dupCachedPage = null, - - // determine the current base url - findBaseWithDefault = function(){ - var closestBase = ( $.mobile.activePage && getClosestBaseUrl( $.mobile.activePage ) ); - return closestBase || documentBase.hrefNoHash; - }, - - // The absolute version of the URL passed into the function. This - // version of the URL may contain dialog/subpage params in it. - absUrl = path.makeUrlAbsolute( url, findBaseWithDefault() ); - - - // If the caller provided data, and we're using "get" request, - // append the data to the URL. - if ( settings.data && settings.type === "get" ) { - absUrl = path.addSearchParams( absUrl, settings.data ); - settings.data = undefined; - } - - // If the caller is using a "post" request, reloadPage must be true - if( settings.data && settings.type === "post" ){ - settings.reloadPage = true; - } - - // The absolute version of the URL minus any dialog/subpage params. - // In otherwords the real URL of the page to be loaded. - var fileUrl = path.getFilePath( absUrl ), - - // The version of the Url actually stored in the data-url attribute of - // the page. For embedded pages, it is just the id of the page. For pages - // within the same domain as the document base, it is the site relative - // path. For cross-domain pages (Phone Gap only) the entire absolute Url - // used to load the page. - dataUrl = path.convertUrlToDataUrl( absUrl ); - - // Make sure we have a pageContainer to work with. - settings.pageContainer = settings.pageContainer || $.mobile.pageContainer; - - // Check to see if the page already exists in the DOM. - page = settings.pageContainer.children( ":jqmData(url='" + dataUrl + "')" ); - - // If we failed to find the page, check to see if the url is a - // reference to an embedded page. If so, it may have been dynamically - // injected by a developer, in which case it would be lacking a data-url - // attribute and in need of enhancement. - if ( page.length === 0 && dataUrl && !path.isPath( dataUrl ) ) { - page = settings.pageContainer.children( "#" + dataUrl ) - .attr( "data-" + $.mobile.ns + "url", dataUrl ); - } - - // If we failed to find a page in the DOM, check the URL to see if it - // refers to the first page in the application. If it isn't a reference - // to the first page and refers to non-existent embedded page, error out. - if ( page.length === 0 ) { - if ( $.mobile.firstPage && path.isFirstPageUrl( fileUrl ) ) { - // Check to make sure our cached-first-page is actually - // in the DOM. Some user deployed apps are pruning the first - // page from the DOM for various reasons, we check for this - // case here because we don't want a first-page with an id - // falling through to the non-existent embedded page error - // case. If the first-page is not in the DOM, then we let - // things fall through to the ajax loading code below so - // that it gets reloaded. - if ( $.mobile.firstPage.parent().length ) { - page = $( $.mobile.firstPage ); - } - } else if ( path.isEmbeddedPage( fileUrl ) ) { - deferred.reject( absUrl, options ); - return deferred.promise(); - } - } - - // Reset base to the default document base. - if ( base ) { - base.reset(); - } - - // If the page we are interested in is already in the DOM, - // and the caller did not indicate that we should force a - // reload of the file, we are done. Otherwise, track the - // existing page as a duplicated. - if ( page.length ) { - if ( !settings.reloadPage ) { - enhancePage( page, settings.role ); - deferred.resolve( absUrl, options, page ); - return deferred.promise(); - } - dupCachedPage = page; - } - - var mpc = settings.pageContainer, - pblEvent = new $.Event( "pagebeforeload" ), - triggerData = { url: url, absUrl: absUrl, dataUrl: dataUrl, deferred: deferred, options: settings }; - - // Let listeners know we're about to load a page. - mpc.trigger( pblEvent, triggerData ); - - // If the default behavior is prevented, stop here! - if( pblEvent.isDefaultPrevented() ){ - return deferred.promise(); - } - - if ( settings.showLoadMsg ) { - - // This configurable timeout allows cached pages a brief delay to load without showing a message - var loadMsgDelay = setTimeout(function(){ - $.mobile.showPageLoadingMsg(); - }, settings.loadMsgDelay ), - - // Shared logic for clearing timeout and removing message. - hideMsg = function(){ - - // Stop message show timer - clearTimeout( loadMsgDelay ); - - // Hide loading message - $.mobile.hidePageLoadingMsg(); - }; - } - - if ( !( $.mobile.allowCrossDomainPages || path.isSameDomain( documentUrl, absUrl ) ) ) { - deferred.reject( absUrl, options ); - } else { - // Load the new page. - $.ajax({ - url: fileUrl, - type: settings.type, - data: settings.data, - dataType: "html", - success: function( html, textStatus, xhr ) { - //pre-parse html to check for a data-url, - //use it as the new fileUrl, base path, etc - var all = $( "
      " ), - - //page title regexp - newPageTitle = html.match( /]*>([^<]*)/ ) && RegExp.$1, - - // TODO handle dialogs again - pageElemRegex = new RegExp( "(<[^>]+\\bdata-" + $.mobile.ns + "role=[\"']?page[\"']?[^>]*>)" ), - dataUrlRegex = new RegExp( "\\bdata-" + $.mobile.ns + "url=[\"']?([^\"'>]*)[\"']?" ); - - - // data-url must be provided for the base tag so resource requests can be directed to the - // correct url. loading into a temprorary element makes these requests immediately - if( pageElemRegex.test( html ) - && RegExp.$1 - && dataUrlRegex.test( RegExp.$1 ) - && RegExp.$1 ) { - url = fileUrl = path.getFilePath( RegExp.$1 ); - } - - if ( base ) { - base.set( fileUrl ); - } - - //workaround to allow scripts to execute when included in page divs - all.get( 0 ).innerHTML = html; - page = all.find( ":jqmData(role='page'), :jqmData(role='dialog')" ).first(); - - //if page elem couldn't be found, create one and insert the body element's contents - if( !page.length ){ - page = $( "
      " + html.split( /<\/?body[^>]*>/gmi )[1] + "
      " ); - } - - if ( newPageTitle && !page.jqmData( "title" ) ) { - if ( ~newPageTitle.indexOf( "&" ) ) { - newPageTitle = $( "
      " + newPageTitle + "
      " ).text(); - } - page.jqmData( "title", newPageTitle ); - } - - //rewrite src and href attrs to use a base url - if( !$.support.dynamicBaseTag ) { - var newPath = path.get( fileUrl ); - page.find( "[src], link[href], a[rel='external'], :jqmData(ajax='false'), a[target]" ).each(function() { - var thisAttr = $( this ).is( '[href]' ) ? 'href' : - $(this).is('[src]') ? 'src' : 'action', - thisUrl = $( this ).attr( thisAttr ); - - // XXX_jblas: We need to fix this so that it removes the document - // base URL, and then prepends with the new page URL. - //if full path exists and is same, chop it - helps IE out - thisUrl = thisUrl.replace( location.protocol + '//' + location.host + location.pathname, '' ); - - if( !/^(\w+:|#|\/)/.test( thisUrl ) ) { - $( this ).attr( thisAttr, newPath + thisUrl ); - } - }); - } - - //append to page and enhance - // TODO taging a page with external to make sure that embedded pages aren't removed - // by the various page handling code is bad. Having page handling code in many - // places is bad. Solutions post 1.0 - page - .attr( "data-" + $.mobile.ns + "url", path.convertUrlToDataUrl( fileUrl ) ) - .attr( "data-" + $.mobile.ns + "external-page", true ) - .appendTo( settings.pageContainer ); - - // wait for page creation to leverage options defined on widget - page.one( 'pagecreate', $.mobile._bindPageRemove ); - - enhancePage( page, settings.role ); - - // Enhancing the page may result in new dialogs/sub pages being inserted - // into the DOM. If the original absUrl refers to a sub-page, that is the - // real page we are interested in. - if ( absUrl.indexOf( "&" + $.mobile.subPageUrlKey ) > -1 ) { - page = settings.pageContainer.children( ":jqmData(url='" + dataUrl + "')" ); - } - - //bind pageHide to removePage after it's hidden, if the page options specify to do so - - // Remove loading message. - if ( settings.showLoadMsg ) { - hideMsg(); - } - - // Add the page reference and xhr to our triggerData. - triggerData.xhr = xhr; - triggerData.textStatus = textStatus; - triggerData.page = page; - - // Let listeners know the page loaded successfully. - settings.pageContainer.trigger( "pageload", triggerData ); - - deferred.resolve( absUrl, options, page, dupCachedPage ); - }, - error: function( xhr, textStatus, errorThrown ) { - //set base back to current path - if( base ) { - base.set( path.get() ); - } - - // Add error info to our triggerData. - triggerData.xhr = xhr; - triggerData.textStatus = textStatus; - triggerData.errorThrown = errorThrown; - - var plfEvent = new $.Event( "pageloadfailed" ); - - // Let listeners know the page load failed. - settings.pageContainer.trigger( plfEvent, triggerData ); - - // If the default behavior is prevented, stop here! - // Note that it is the responsibility of the listener/handler - // that called preventDefault(), to resolve/reject the - // deferred object within the triggerData. - if( plfEvent.isDefaultPrevented() ){ - return; - } - - // Remove loading message. - if ( settings.showLoadMsg ) { - - // Remove loading message. - hideMsg(); - - // show error message - $.mobile.showPageLoadingMsg( $.mobile.pageLoadErrorMessageTheme, $.mobile.pageLoadErrorMessage, true ); - - // hide after delay - setTimeout( $.mobile.hidePageLoadingMsg, 1500 ); - } - - deferred.reject( absUrl, options ); - } - }); - } - - return deferred.promise(); - }; - - $.mobile.loadPage.defaults = { - type: "get", - data: undefined, - reloadPage: false, - role: undefined, // By default we rely on the role defined by the @data-role attribute. - showLoadMsg: false, - pageContainer: undefined, - loadMsgDelay: 50 // This delay allows loads that pull from browser cache to occur without showing the loading message. - }; - - // Show a specific page in the page container. - $.mobile.changePage = function( toPage, options ) { - // If we are in the midst of a transition, queue the current request. - // We'll call changePage() once we're done with the current transition to - // service the request. - if( isPageTransitioning ) { - pageTransitionQueue.unshift( arguments ); - return; - } - - var settings = $.extend( {}, $.mobile.changePage.defaults, options ); - - // Make sure we have a pageContainer to work with. - settings.pageContainer = settings.pageContainer || $.mobile.pageContainer; - - // Make sure we have a fromPage. - settings.fromPage = settings.fromPage || $.mobile.activePage; - - var mpc = settings.pageContainer, - pbcEvent = new $.Event( "pagebeforechange" ), - triggerData = { toPage: toPage, options: settings }; - - // Let listeners know we're about to change the current page. - mpc.trigger( pbcEvent, triggerData ); - - // If the default behavior is prevented, stop here! - if( pbcEvent.isDefaultPrevented() ){ - return; - } - - // We allow "pagebeforechange" observers to modify the toPage in the trigger - // data to allow for redirects. Make sure our toPage is updated. - - toPage = triggerData.toPage; - - // Set the isPageTransitioning flag to prevent any requests from - // entering this method while we are in the midst of loading a page - // or transitioning. - - isPageTransitioning = true; - - // If the caller passed us a url, call loadPage() - // to make sure it is loaded into the DOM. We'll listen - // to the promise object it returns so we know when - // it is done loading or if an error ocurred. - if ( typeof toPage == "string" ) { - $.mobile.loadPage( toPage, settings ) - .done(function( url, options, newPage, dupCachedPage ) { - isPageTransitioning = false; - options.duplicateCachedPage = dupCachedPage; - $.mobile.changePage( newPage, options ); - }) - .fail(function( url, options ) { - isPageTransitioning = false; - - //clear out the active button state - removeActiveLinkClass( true ); - - //release transition lock so navigation is free again - releasePageTransitionLock(); - settings.pageContainer.trigger( "pagechangefailed", triggerData ); - }); - return; - } - - // If we are going to the first-page of the application, we need to make - // sure settings.dataUrl is set to the application document url. This allows - // us to avoid generating a document url with an id hash in the case where the - // first-page of the document has an id attribute specified. - if ( toPage[ 0 ] === $.mobile.firstPage[ 0 ] && !settings.dataUrl ) { - settings.dataUrl = documentUrl.hrefNoHash; - } - - // The caller passed us a real page DOM element. Update our - // internal state and then trigger a transition to the page. - var fromPage = settings.fromPage, - url = ( settings.dataUrl && path.convertUrlToDataUrl( settings.dataUrl ) ) || toPage.jqmData( "url" ), - // The pageUrl var is usually the same as url, except when url is obscured as a dialog url. pageUrl always contains the file path - pageUrl = url, - fileUrl = path.getFilePath( url ), - active = urlHistory.getActive(), - activeIsInitialPage = urlHistory.activeIndex === 0, - historyDir = 0, - pageTitle = document.title, - isDialog = settings.role === "dialog" || toPage.jqmData( "role" ) === "dialog"; - - // By default, we prevent changePage requests when the fromPage and toPage - // are the same element, but folks that generate content manually/dynamically - // and reuse pages want to be able to transition to the same page. To allow - // this, they will need to change the default value of allowSamePageTransition - // to true, *OR*, pass it in as an option when they manually call changePage(). - // It should be noted that our default transition animations assume that the - // formPage and toPage are different elements, so they may behave unexpectedly. - // It is up to the developer that turns on the allowSamePageTransitiona option - // to either turn off transition animations, or make sure that an appropriate - // animation transition is used. - if( fromPage && fromPage[0] === toPage[0] && !settings.allowSamePageTransition ) { - isPageTransitioning = false; - mpc.trigger( "pagechange", triggerData ); - - // Even if there is no page change to be done, we should keep the urlHistory in sync with the hash changes - if( settings.fromHashChange ) { - urlHistory.directHashChange({ - currentUrl: url, - isBack: function() {}, - isForward: function() {} - }); - } - - return; - } - - // We need to make sure the page we are given has already been enhanced. - enhancePage( toPage, settings.role ); - - // If the changePage request was sent from a hashChange event, check to see if the - // page is already within the urlHistory stack. If so, we'll assume the user hit - // the forward/back button and will try to match the transition accordingly. - if( settings.fromHashChange ) { - urlHistory.directHashChange({ - currentUrl: url, - isBack: function() { historyDir = -1; }, - isForward: function() { historyDir = 1; } - }); - } - - // Kill the keyboard. - // XXX_jblas: We need to stop crawling the entire document to kill focus. Instead, - // we should be tracking focus with a delegate() handler so we already have - // the element in hand at this point. - // Wrap this in a try/catch block since IE9 throw "Unspecified error" if document.activeElement - // is undefined when we are in an IFrame. - try { - if(document.activeElement && document.activeElement.nodeName.toLowerCase() != 'body') { - $(document.activeElement).blur(); - } else { - $( "input:focus, textarea:focus, select:focus" ).blur(); - } - } catch(e) {} - - // Record whether we are at a place in history where a dialog used to be - if so, do not add a new history entry and do not change the hash either - var alreadyThere = false; - - // If we're displaying the page as a dialog, we don't want the url - // for the dialog content to be used in the hash. Instead, we want - // to append the dialogHashKey to the url of the current page. - if ( isDialog && active ) { - // on the initial page load active.url is undefined and in that case should - // be an empty string. Moving the undefined -> empty string back into - // urlHistory.addNew seemed imprudent given undefined better represents - // the url state - - // If we are at a place in history that once belonged to a dialog, reuse - // this state without adding to urlHistory and without modifying the hash. - // However, if a dialog is already displayed at this point, and we're - // about to display another dialog, then we must add another hash and - // history entry on top so that one may navigate back to the original dialog - if ( active.url.indexOf( dialogHashKey ) > -1 && !$.mobile.activePage.is( ".ui-dialog" ) ) { - settings.changeHash = false; - alreadyThere = true; - } - - url = ( active.url || "" ) + dialogHashKey; - - // tack on another dialogHashKey if this is the same as the initial hash - // this makes sure that a history entry is created for this dialog - if ( urlHistory.activeIndex === 0 && url === urlHistory.initialDst ) { - url += dialogHashKey; - } - } - - // Set the location hash. - if( settings.changeHash !== false && url ) { - //disable hash listening temporarily - urlHistory.ignoreNextHashChange = true; - //update hash and history - path.set( url ); - } - - // if title element wasn't found, try the page div data attr too - // If this is a deep-link or a reload ( active === undefined ) then just use pageTitle - var newPageTitle = ( !active )? pageTitle : toPage.jqmData( "title" ) || toPage.children(":jqmData(role='header')").find(".ui-title" ).getEncodedText(); - if( !!newPageTitle && pageTitle == document.title ) { - pageTitle = newPageTitle; - } - if ( !toPage.jqmData( "title" ) ) { - toPage.jqmData( "title", pageTitle ); - } - - // Make sure we have a transition defined. - settings.transition = settings.transition - || ( ( historyDir && !activeIsInitialPage ) ? active.transition : undefined ) - || ( isDialog ? $.mobile.defaultDialogTransition : $.mobile.defaultPageTransition ); - - //add page to history stack if it's not back or forward - if( !historyDir && !alreadyThere ) { - urlHistory.addNew( url, settings.transition, pageTitle, pageUrl, settings.role ); - } - - //set page title - document.title = urlHistory.getActive().title; - - //set "toPage" as activePage - $.mobile.activePage = toPage; - - // If we're navigating back in the URL history, set reverse accordingly. - settings.reverse = settings.reverse || historyDir < 0; - - transitionPages( toPage, fromPage, settings.transition, settings.reverse ) - .done(function( name, reverse, $to, $from, alreadyFocused ) { - removeActiveLinkClass(); - - //if there's a duplicateCachedPage, remove it from the DOM now that it's hidden - if ( settings.duplicateCachedPage ) { - settings.duplicateCachedPage.remove(); - } - - // Send focus to the newly shown page. Moved from promise .done binding in transitionPages - // itself to avoid ie bug that reports offsetWidth as > 0 (core check for visibility) - // despite visibility: hidden addresses issue #2965 - // https://github.com/jquery/jquery-mobile/issues/2965 - if( !alreadyFocused ){ - $.mobile.focusPage( toPage ); - } - - releasePageTransitionLock(); - - // Let listeners know we're all done changing the current page. - mpc.trigger( "pagechange", triggerData ); - }); - }; - - $.mobile.changePage.defaults = { - transition: undefined, - reverse: false, - changeHash: true, - fromHashChange: false, - role: undefined, // By default we rely on the role defined by the @data-role attribute. - duplicateCachedPage: undefined, - pageContainer: undefined, - showLoadMsg: true, //loading message shows by default when pages are being fetched during changePage - dataUrl: undefined, - fromPage: undefined, - allowSamePageTransition: false - }; - -/* Event Bindings - hashchange, submit, and click */ - function findClosestLink( ele ) - { - while ( ele ) { - // Look for the closest element with a nodeName of "a". - // Note that we are checking if we have a valid nodeName - // before attempting to access it. This is because the - // node we get called with could have originated from within - // an embedded SVG document where some symbol instance elements - // don't have nodeName defined on them, or strings are of type - // SVGAnimatedString. - if ( ( typeof ele.nodeName === "string" ) && ele.nodeName.toLowerCase() == "a" ) { - break; - } - ele = ele.parentNode; - } - return ele; - } - - // The base URL for any given element depends on the page it resides in. - function getClosestBaseUrl( ele ) - { - // Find the closest page and extract out its url. - var url = $( ele ).closest( ".ui-page" ).jqmData( "url" ), - base = documentBase.hrefNoHash; - - if ( !url || !path.isPath( url ) ) { - url = base; - } - - return path.makeUrlAbsolute( url, base); - } - - //The following event bindings should be bound after mobileinit has been triggered - //the following deferred is resolved in the init file - $.mobile.navreadyDeferred = $.Deferred(); - $.mobile.navreadyDeferred.done( function(){ - //bind to form submit events, handle with Ajax - $( document ).delegate( "form", "submit", function( event ) { - var $this = $( this ); - - if( !$.mobile.ajaxEnabled || - // test that the form is, itself, ajax false - $this.is(":jqmData(ajax='false')") || - // test that $.mobile.ignoreContentEnabled is set and - // the form or one of it's parents is ajax=false - !$this.jqmHijackable().length ) { - return; - } - - var type = $this.attr( "method" ), - target = $this.attr( "target" ), - url = $this.attr( "action" ); - - // If no action is specified, browsers default to using the - // URL of the document containing the form. Since we dynamically - // pull in pages from external documents, the form should submit - // to the URL for the source document of the page containing - // the form. - if ( !url ) { - // Get the @data-url for the page containing the form. - url = getClosestBaseUrl( $this ); - if ( url === documentBase.hrefNoHash ) { - // The url we got back matches the document base, - // which means the page must be an internal/embedded page, - // so default to using the actual document url as a browser - // would. - url = documentUrl.hrefNoSearch; - } - } - - url = path.makeUrlAbsolute( url, getClosestBaseUrl($this) ); - - if(( path.isExternal( url ) && !path.isPermittedCrossDomainRequest(documentUrl, url)) || target ) { - return; - } - - $.mobile.changePage( - url, - { - type: type && type.length && type.toLowerCase() || "get", - data: $this.serialize(), - transition: $this.jqmData( "transition" ), - direction: $this.jqmData( "direction" ), - reloadPage: true - } - ); - event.preventDefault(); - }); - - //add active state on vclick - $( document ).bind( "vclick", function( event ) { - // if this isn't a left click we don't care. Its important to note - // that when the virtual event is generated it will create the which attr - if ( event.which > 1 || !$.mobile.linkBindingEnabled ) { - return; - } - - var link = findClosestLink( event.target ); - - // split from the previous return logic to avoid find closest where possible - // TODO teach $.mobile.hijackable to operate on raw dom elements so the link wrapping - // can be avoided - if ( !$(link).jqmHijackable().length ) { - return; - } - - if ( link ) { - if ( path.parseUrl( link.getAttribute( "href" ) || "#" ).hash !== "#" ) { - removeActiveLinkClass( true ); - $activeClickedLink = $( link ).closest( ".ui-btn" ).not( ".ui-disabled" ); - $activeClickedLink.addClass( $.mobile.activeBtnClass ); - } - } - }); - - // click routing - direct to HTTP or Ajax, accordingly - $( document ).bind( "click", function( event ) { - if( !$.mobile.linkBindingEnabled ){ - return; - } - - var link = findClosestLink( event.target ), $link = $( link ), httpCleanup; - - // If there is no link associated with the click or its not a left - // click we want to ignore the click - // TODO teach $.mobile.hijackable to operate on raw dom elements so the link wrapping - // can be avoided - if ( !link || event.which > 1 || !$link.jqmHijackable().length ) { - return; - } - - //remove active link class if external (then it won't be there if you come back) - httpCleanup = function(){ - window.setTimeout( function() { removeActiveLinkClass( true ); }, 200 ); - }; - - //if there's a data-rel=back attr, go back in history - if( $link.is( ":jqmData(rel='back')" ) ) { - window.history.back(); - return false; - } - - var baseUrl = getClosestBaseUrl( $link ), - - //get href, if defined, otherwise default to empty hash - href = path.makeUrlAbsolute( $link.attr( "href" ) || "#", baseUrl ); - - //if ajax is disabled, exit early - if( !$.mobile.ajaxEnabled && !path.isEmbeddedPage( href ) ){ - httpCleanup(); - //use default click handling - return; - } - - // XXX_jblas: Ideally links to application pages should be specified as - // an url to the application document with a hash that is either - // the site relative path or id to the page. But some of the - // internal code that dynamically generates sub-pages for nested - // lists and select dialogs, just write a hash in the link they - // create. This means the actual URL path is based on whatever - // the current value of the base tag is at the time this code - // is called. For now we are just assuming that any url with a - // hash in it is an application page reference. - if ( href.search( "#" ) != -1 ) { - href = href.replace( /[^#]*#/, "" ); - if ( !href ) { - //link was an empty hash meant purely - //for interaction, so we ignore it. - event.preventDefault(); - return; - } else if ( path.isPath( href ) ) { - //we have apath so make it the href we want to load. - href = path.makeUrlAbsolute( href, baseUrl ); - } else { - //we have a simple id so use the documentUrl as its base. - href = path.makeUrlAbsolute( "#" + href, documentUrl.hrefNoHash ); - } - } - - // Should we handle this link, or let the browser deal with it? - var useDefaultUrlHandling = $link.is( "[rel='external']" ) || $link.is( ":jqmData(ajax='false')" ) || $link.is( "[target]" ), - - // Some embedded browsers, like the web view in Phone Gap, allow cross-domain XHR - // requests if the document doing the request was loaded via the file:// protocol. - // This is usually to allow the application to "phone home" and fetch app specific - // data. We normally let the browser handle external/cross-domain urls, but if the - // allowCrossDomainPages option is true, we will allow cross-domain http/https - // requests to go through our page loading logic. - - //check for protocol or rel and its not an embedded page - //TODO overlap in logic from isExternal, rel=external check should be - // moved into more comprehensive isExternalLink - isExternal = useDefaultUrlHandling || ( path.isExternal( href ) && !path.isPermittedCrossDomainRequest(documentUrl, href) ); - - if( isExternal ) { - httpCleanup(); - //use default click handling - return; - } - - //use ajax - var transition = $link.jqmData( "transition" ), - direction = $link.jqmData( "direction" ), - reverse = ( direction && direction === "reverse" ) || - // deprecated - remove by 1.0 - $link.jqmData( "back" ), - - //this may need to be more specific as we use data-rel more - role = $link.attr( "data-" + $.mobile.ns + "rel" ) || undefined; - - $.mobile.changePage( href, { transition: transition, reverse: reverse, role: role } ); - event.preventDefault(); - }); - - //prefetch pages when anchors with data-prefetch are encountered - $( document ).delegate( ".ui-page", "pageshow.prefetch", function() { - var urls = []; - $( this ).find( "a:jqmData(prefetch)" ).each(function(){ - var $link = $(this), - url = $link.attr( "href" ); - - if ( url && $.inArray( url, urls ) === -1 ) { - urls.push( url ); - - $.mobile.loadPage( url, {role: $link.attr("data-" + $.mobile.ns + "rel")} ); - } - }); - }); - - $.mobile._handleHashChange = function( hash ) { - //find first page via hash - var to = path.stripHash( hash ), - //transition is false if it's the first page, undefined otherwise (and may be overridden by default) - transition = $.mobile.urlHistory.stack.length === 0 ? "none" : undefined, - - // default options for the changPage calls made after examining the current state - // of the page and the hash - changePageOptions = { - transition: transition, - changeHash: false, - fromHashChange: true - }; - - if ( 0 === urlHistory.stack.length ) { - urlHistory.initialDst = to; - } - - //if listening is disabled (either globally or temporarily), or it's a dialog hash - if( !$.mobile.hashListeningEnabled || urlHistory.ignoreNextHashChange ) { - urlHistory.ignoreNextHashChange = false; - return; - } - - // special case for dialogs - if( urlHistory.stack.length > 1 && to.indexOf( dialogHashKey ) > -1 && urlHistory.initialDst !== to ) { - - // If current active page is not a dialog skip the dialog and continue - // in the same direction - if(!$.mobile.activePage.is( ".ui-dialog" )) { - //determine if we're heading forward or backward and continue accordingly past - //the current dialog - urlHistory.directHashChange({ - currentUrl: to, - isBack: function() { window.history.back(); }, - isForward: function() { window.history.forward(); } - }); - - // prevent changePage() - return; - } else { - // if the current active page is a dialog and we're navigating - // to a dialog use the dialog objected saved in the stack - urlHistory.directHashChange({ - currentUrl: to, - - // regardless of the direction of the history change - // do the following - either: function( isBack ) { - var active = $.mobile.urlHistory.getActive(); - - to = active.pageUrl; - - // make sure to set the role, transition and reversal - // as most of this is lost by the domCache cleaning - $.extend( changePageOptions, { - role: active.role, - transition: active.transition, - reverse: isBack - }); - } - }); - } - } - - //if to is defined, load it - if ( to ) { - // At this point, 'to' can be one of 3 things, a cached page element from - // a history stack entry, an id, or site-relative/absolute URL. If 'to' is - // an id, we need to resolve it against the documentBase, not the location.href, - // since the hashchange could've been the result of a forward/backward navigation - // that crosses from an external page/dialog to an internal page/dialog. - to = ( typeof to === "string" && !path.isPath( to ) ) ? ( path.makeUrlAbsolute( '#' + to, documentBase ) ) : to; - $.mobile.changePage( to, changePageOptions ); - } else { - //there's no hash, go to the first page in the dom - $.mobile.changePage( $.mobile.firstPage, changePageOptions ); - } - }; - - //hashchange event handler - $window.bind( "hashchange", function( e, triggered ) { - $.mobile._handleHashChange( location.hash ); - }); - - //set page min-heights to be device specific - $( document ).bind( "pageshow", resetActivePageHeight ); - $( window ).bind( "throttledresize", resetActivePageHeight ); - - });//navreadyDeferred done callback - -})( jQuery ); - -( function( $, window ) { - // For now, let's Monkeypatch this onto the end of $.mobile._registerInternalEvents - // Scope self to pushStateHandler so we can reference it sanely within the - // methods handed off as event handlers - var pushStateHandler = {}, - self = pushStateHandler, - $win = $( window ), - url = $.mobile.path.parseUrl( location.href ), - mobileinitDeferred = $.Deferred(), - domreadyDeferred = $.Deferred(); - - $( document ).ready( $.proxy( domreadyDeferred, "resolve" ) ); - - $( document ).one( "mobileinit", $.proxy( mobileinitDeferred, "resolve" ) ); - - $.extend( pushStateHandler, { - // TODO move to a path helper, this is rather common functionality - initialFilePath: (function() { - return url.pathname + url.search; - })(), - - hashChangeTimeout: 200, - - hashChangeEnableTimer: undefined, - - initialHref: url.hrefNoHash, - - state: function() { - return { - hash: location.hash || "#" + self.initialFilePath, - title: document.title, - - // persist across refresh - initialHref: self.initialHref - }; - }, - - resetUIKeys: function( url ) { - var dialog = $.mobile.dialogHashKey, - subkey = "&" + $.mobile.subPageUrlKey, - dialogIndex = url.indexOf( dialog ); - - if( dialogIndex > -1 ) { - url = url.slice( 0, dialogIndex ) + "#" + url.slice( dialogIndex ); - } else if( url.indexOf( subkey ) > -1 ) { - url = url.split( subkey ).join( "#" + subkey ); - } - - return url; - }, - - // TODO sort out a single barrier to hashchange functionality - nextHashChangePrevented: function( value ) { - $.mobile.urlHistory.ignoreNextHashChange = value; - self.onHashChangeDisabled = value; - }, - - // on hash change we want to clean up the url - // NOTE this takes place *after* the vanilla navigation hash change - // handling has taken place and set the state of the DOM - onHashChange: function( e ) { - // disable this hash change - if( self.onHashChangeDisabled ){ - return; - } - - var href, state, - hash = location.hash, - isPath = $.mobile.path.isPath( hash ), - resolutionUrl = isPath ? location.href : $.mobile.getDocumentUrl(); - - hash = isPath ? hash.replace( "#", "" ) : hash; - - - // propulate the hash when its not available - state = self.state(); - - // make the hash abolute with the current href - href = $.mobile.path.makeUrlAbsolute( hash, resolutionUrl ); - - if ( isPath ) { - href = self.resetUIKeys( href ); - } - - // replace the current url with the new href and store the state - // Note that in some cases we might be replacing an url with the - // same url. We do this anyways because we need to make sure that - // all of our history entries have a state object associated with - // them. This allows us to work around the case where window.history.back() - // is called to transition from an external page to an embedded page. - // In that particular case, a hashchange event is *NOT* generated by the browser. - // Ensuring each history entry has a state object means that onPopState() - // will always trigger our hashchange callback even when a hashchange event - // is not fired. - history.replaceState( state, document.title, href ); - }, - - // on popstate (ie back or forward) we need to replace the hash that was there previously - // cleaned up by the additional hash handling - onPopState: function( e ) { - var poppedState = e.originalEvent.state, - fromHash, toHash, hashChanged; - - // if there's no state its not a popstate we care about, eg chrome's initial popstate - if( poppedState ) { - // if we get two pop states in under this.hashChangeTimeout - // make sure to clear any timer set for the previous change - clearTimeout( self.hashChangeEnableTimer ); - - // make sure to enable hash handling for the the _handleHashChange call - self.nextHashChangePrevented( false ); - - // change the page based on the hash in the popped state - $.mobile._handleHashChange( poppedState.hash ); - - // prevent any hashchange in the next self.hashChangeTimeout - self.nextHashChangePrevented( true ); - - // re-enable hash change handling after swallowing a possible hash - // change event that comes on all popstates courtesy of browsers like Android - self.hashChangeEnableTimer = setTimeout( function() { - self.nextHashChangePrevented( false ); - }, self.hashChangeTimeout); - } - }, - - init: function() { - $win.bind( "hashchange", self.onHashChange ); - - // Handle popstate events the occur through history changes - $win.bind( "popstate", self.onPopState ); - - // if there's no hash, we need to replacestate for returning to home - if ( location.hash === "" ) { - history.replaceState( self.state(), document.title, location.href ); - } - } - }); - - // We need to init when "mobileinit", "domready", and "navready" have all happened - $.when( domreadyDeferred, mobileinitDeferred, $.mobile.navreadyDeferred ).done( function() { - if( $.mobile.pushStateEnabled && $.support.pushState ){ - pushStateHandler.init(); - } - }); -})( jQuery, this ); - -/* -* fallback transition for pop in non-3D supporting browsers (which tend to handle complex transitions poorly in general -*/ - -(function( $, window, undefined ) { - -$.mobile.transitionFallbacks.pop = "fade"; - -})( jQuery, this ); - -/* -* fallback transition for slide in non-3D supporting browsers (which tend to handle complex transitions poorly in general -*/ - -(function( $, window, undefined ) { - -// Use the simultaneous transition handler for slide transitions -$.mobile.transitionHandlers.slide = $.mobile.transitionHandlers.simultaneous; - -// Set the slide transition's fallback to "fade" -$.mobile.transitionFallbacks.slide = "fade"; - -})( jQuery, this ); - -/* -* fallback transition for slidedown in non-3D supporting browsers (which tend to handle complex transitions poorly in general -*/ - -(function( $, window, undefined ) { - -$.mobile.transitionFallbacks.slidedown = "fade"; - -})( jQuery, this ); - -/* -* fallback transition for slideup in non-3D supporting browsers (which tend to handle complex transitions poorly in general -*/ - -(function( $, window, undefined ) { - -$.mobile.transitionFallbacks.slideup = "fade"; - -})( jQuery, this ); - -/* -* fallback transition for flip in non-3D supporting browsers (which tend to handle complex transitions poorly in general -*/ - -(function( $, window, undefined ) { - -$.mobile.transitionFallbacks.flip = "fade"; - -})( jQuery, this ); - -/* -* fallback transition for flow in non-3D supporting browsers (which tend to handle complex transitions poorly in general -*/ - -(function( $, window, undefined ) { - -$.mobile.transitionFallbacks.flow = "fade"; - -})( jQuery, this ); - -/* -* fallback transition for turn in non-3D supporting browsers (which tend to handle complex transitions poorly in general -*/ - -(function( $, window, undefined ) { - -$.mobile.transitionFallbacks.turn = "fade"; - -})( jQuery, this ); - -(function( $, undefined ) { - -$.mobile.page.prototype.options.degradeInputs = { - color: false, - date: false, - datetime: false, - "datetime-local": false, - email: false, - month: false, - number: false, - range: "number", - search: "text", - tel: false, - time: false, - url: false, - week: false -}; - - -//auto self-init widgets -$( document ).bind( "pagecreate create", function( e ){ - - var page = $.mobile.closestPageData($(e.target)), options; - - if( !page ) { - return; - } - - options = page.options; - - // degrade inputs to avoid poorly implemented native functionality - $( e.target ).find( "input" ).not( page.keepNativeSelector() ).each(function() { - var $this = $( this ), - type = this.getAttribute( "type" ), - optType = options.degradeInputs[ type ] || "text"; - - if ( options.degradeInputs[ type ] ) { - var html = $( "
      " ).html( $this.clone() ).html(), - // In IE browsers, the type sometimes doesn't exist in the cloned markup, so we replace the closing tag instead - hasType = html.indexOf( " type=" ) > -1, - findstr = hasType ? /\s+type=["']?\w+['"]?/ : /\/?>/, - repstr = " type=\"" + optType + "\" data-" + $.mobile.ns + "type=\"" + type + "\"" + ( hasType ? "" : ">" ); - - $this.replaceWith( html.replace( findstr, repstr ) ); - } - }); - -}); - -})( jQuery ); - -(function( $, window, undefined ) { - -$.widget( "mobile.dialog", $.mobile.widget, { - options: { - closeBtnText : "Close", - overlayTheme : "a", - initSelector : ":jqmData(role='dialog')" - }, - _create: function() { - var self = this, - $el = this.element, - headerCloseButton = $( ""+ this.options.closeBtnText + "" ), - dialogWrap = $("
      ", { - "role" : "dialog", - "class" : "ui-dialog-contain ui-corner-all ui-overlay-shadow" - }); - - $el.addClass( "ui-dialog ui-overlay-" + this.options.overlayTheme ); - - // Class the markup for dialog styling - // Set aria role - $el - .wrapInner( dialogWrap ) - .children() - .find( ":jqmData(role='header')" ) - .prepend( headerCloseButton ) - .end() - .children( ':first-child') - .addClass( "ui-corner-top" ) - .end() - .children( ":last-child" ) - .addClass( "ui-corner-bottom" ); - - // this must be an anonymous function so that select menu dialogs can replace - // the close method. This is a change from previously just defining data-rel=back - // on the button and letting nav handle it - // - // Use click rather than vclick in order to prevent the possibility of unintentionally - // reopening the dialog if the dialog opening item was directly under the close button. - headerCloseButton.bind( "click", function() { - self.close(); - }); - - /* bind events - - clicks and submits should use the closing transition that the dialog opened with - unless a data-transition is specified on the link/form - - if the click was on the close button, or the link has a data-rel="back" it'll go back in history naturally - */ - $el.bind( "vclick submit", function( event ) { - var $target = $( event.target ).closest( event.type === "vclick" ? "a" : "form" ), - active; - - if ( $target.length && !$target.jqmData( "transition" ) ) { - - active = $.mobile.urlHistory.getActive() || {}; - - $target.attr( "data-" + $.mobile.ns + "transition", ( active.transition || $.mobile.defaultDialogTransition ) ) - .attr( "data-" + $.mobile.ns + "direction", "reverse" ); - } - }) - .bind( "pagehide", function( e, ui ) { - self._isClosed = false; - $( this ).find( "." + $.mobile.activeBtnClass ).not( ".ui-slider-bg" ).removeClass( $.mobile.activeBtnClass ); - }) - // Override the theme set by the page plugin on pageshow - .bind( "pagebeforeshow", function(){ - if( self.options.overlayTheme ){ - self.element - .page( "removeContainerBackground" ) - .page( "setContainerBackground", self.options.overlayTheme ); - } - }); - }, - - // Close method goes back in history - close: function() { - if ( !this._isClosed ) { - this._isClosed = true; - if ( $.mobile.hashListeningEnabled ) { - window.history.back(); - } - else { - $.mobile.changePage( $.mobile.urlHistory.getPrev().url ); - } - } - } -}); - -//auto self-init widgets -$( document ).delegate( $.mobile.dialog.prototype.options.initSelector, "pagecreate", function(){ - $.mobile.dialog.prototype.enhance( this ); -}); - -})( jQuery, this ); - -(function( $, undefined ) { - -$.mobile.page.prototype.options.backBtnText = "Back"; -$.mobile.page.prototype.options.addBackBtn = false; -$.mobile.page.prototype.options.backBtnTheme = null; -$.mobile.page.prototype.options.headerTheme = "a"; -$.mobile.page.prototype.options.footerTheme = "a"; -$.mobile.page.prototype.options.contentTheme = null; - -// NOTE bind used to force this binding to run before the buttonMarkup binding -// which expects .ui-footer top be applied in its gigantic selector -// TODO remove the buttonMarkup giant selector and move it to the various modules -// on which it depends -$( document ).bind( "pagecreate", function( e ) { - var $page = $( e.target ), - o = $page.data( "page" ).options, - pageRole = $page.jqmData( "role" ), - pageTheme = o.theme; - - $( ":jqmData(role='header'), :jqmData(role='footer'), :jqmData(role='content')", $page ) - .jqmEnhanceable() - .each(function() { - - var $this = $( this ), - role = $this.jqmData( "role" ), - theme = $this.jqmData( "theme" ), - contentTheme = theme || o.contentTheme || ( pageRole === "dialog" && pageTheme ), - $headeranchors, - leftbtn, - rightbtn, - backBtn; - - $this.addClass( "ui-" + role ); - - //apply theming and markup modifications to page,header,content,footer - if ( role === "header" || role === "footer" ) { - - var thisTheme = theme || ( role === "header" ? o.headerTheme : o.footerTheme ) || pageTheme; - - $this - //add theme class - .addClass( "ui-bar-" + thisTheme ) - // Add ARIA role - .attr( "role", role === "header" ? "banner" : "contentinfo" ); - - if( role === "header") { - // Right,left buttons - $headeranchors = $this.children( "a" ); - leftbtn = $headeranchors.hasClass( "ui-btn-left" ); - rightbtn = $headeranchors.hasClass( "ui-btn-right" ); - - leftbtn = leftbtn || $headeranchors.eq( 0 ).not( ".ui-btn-right" ).addClass( "ui-btn-left" ).length; - - rightbtn = rightbtn || $headeranchors.eq( 1 ).addClass( "ui-btn-right" ).length; - } - - // Auto-add back btn on pages beyond first view - if ( o.addBackBtn && - role === "header" && - $( ".ui-page" ).length > 1 && - $page.jqmData( "url" ) !== $.mobile.path.stripHash( location.hash ) && - !leftbtn ) { - - backBtn = $( ""+ o.backBtnText +"" ) - // If theme is provided, override default inheritance - .attr( "data-"+ $.mobile.ns +"theme", o.backBtnTheme || thisTheme ) - .prependTo( $this ); - } - - // Page title - $this.children( "h1, h2, h3, h4, h5, h6" ) - .addClass( "ui-title" ) - // Regardless of h element number in src, it becomes h1 for the enhanced page - .attr({ - "role": "heading", - "aria-level": "1" - }); - - } else if ( role === "content" ) { - if ( contentTheme ) { - $this.addClass( "ui-body-" + ( contentTheme ) ); - } - - // Add ARIA role - $this.attr( "role", "main" ); - } - }); -}); - -})( jQuery ); - -(function( $, undefined ) { - -// filter function removes whitespace between label and form element so we can use inline-block (nodeType 3 = text) -$.fn.fieldcontain = function( options ) { - return this - .addClass( "ui-field-contain ui-body ui-br" ) - .contents().filter( function() { - return ( this.nodeType === 3 && !/\S/.test( this.nodeValue ) ); - }).remove(); -}; - -//auto self-init widgets -$( document ).bind( "pagecreate create", function( e ){ - $( ":jqmData(role='fieldcontain')", e.target ).jqmEnhanceable().fieldcontain(); -}); - -})( jQuery ); - -(function( $, undefined ) { - -$.fn.grid = function( options ) { - return this.each(function() { - - var $this = $( this ), - o = $.extend({ - grid: null - },options), - $kids = $this.children(), - gridCols = {solo:1, a:2, b:3, c:4, d:5}, - grid = o.grid, - iterator; - - if ( !grid ) { - if ( $kids.length <= 5 ) { - for ( var letter in gridCols ) { - if ( gridCols[ letter ] === $kids.length ) { - grid = letter; - } - } - } else { - grid = "a"; - $this.addClass( "ui-grid-duo" ); - } - } - iterator = gridCols[grid]; - - $this.addClass( "ui-grid-" + grid ); - - $kids.filter( ":nth-child(" + iterator + "n+1)" ).addClass( "ui-block-a" ); - - if ( iterator > 1 ) { - $kids.filter( ":nth-child(" + iterator + "n+2)" ).addClass( "ui-block-b" ); - } - if ( iterator > 2 ) { - $kids.filter( ":nth-child(3n+3)" ).addClass( "ui-block-c" ); - } - if ( iterator > 3 ) { - $kids.filter( ":nth-child(4n+4)" ).addClass( "ui-block-d" ); - } - if ( iterator > 4 ) { - $kids.filter( ":nth-child(5n+5)" ).addClass( "ui-block-e" ); - } - }); -}; -})( jQuery ); - -(function( $, undefined ) { - -$( document ).bind( "pagecreate create", function( e ){ - $( ":jqmData(role='nojs')", e.target ).addClass( "ui-nojs" ); - -}); - -})( jQuery ); - -( function( $, undefined ) { - -$.fn.buttonMarkup = function( options ) { - var $workingSet = this; - - // Enforce options to be of type string - options = ( options && ( $.type( options ) == "object" ) )? options : {}; - for ( var i = 0; i < $workingSet.length; i++ ) { - var el = $workingSet.eq( i ), - e = el[ 0 ], - o = $.extend( {}, $.fn.buttonMarkup.defaults, { - icon: options.icon !== undefined ? options.icon : el.jqmData( "icon" ), - iconpos: options.iconpos !== undefined ? options.iconpos : el.jqmData( "iconpos" ), - theme: options.theme !== undefined ? options.theme : el.jqmData( "theme" ) || $.mobile.getInheritedTheme( el, "c" ), - inline: options.inline !== undefined ? options.inline : el.jqmData( "inline" ), - shadow: options.shadow !== undefined ? options.shadow : el.jqmData( "shadow" ), - corners: options.corners !== undefined ? options.corners : el.jqmData( "corners" ), - iconshadow: options.iconshadow !== undefined ? options.iconshadow : el.jqmData( "iconshadow" ), - mini: options.mini !== undefined ? options.mini : el.jqmData( "mini" ) - }, options ), - - // Classes Defined - innerClass = "ui-btn-inner", - textClass = "ui-btn-text", - buttonClass, iconClass, - // Button inner markup - buttonInner, - buttonText, - buttonIcon, - buttonElements; - - $.each(o, function(key, value) { - e.setAttribute( "data-" + $.mobile.ns + key, value ); - el.jqmData(key, value); - }); - - // Check if this element is already enhanced - buttonElements = $.data(((e.tagName === "INPUT" || e.tagName === "BUTTON") ? e.parentNode : e), "buttonElements"); - - if (buttonElements) { - e = buttonElements.outer; - el = $(e); - buttonInner = buttonElements.inner; - buttonText = buttonElements.text; - // We will recreate this icon below - $(buttonElements.icon).remove(); - buttonElements.icon = null; - } - else { - buttonInner = document.createElement( o.wrapperEls ); - buttonText = document.createElement( o.wrapperEls ); - } - buttonIcon = o.icon ? document.createElement( "span" ) : null; - - if ( attachEvents && !buttonElements) { - attachEvents(); - } - - // if not, try to find closest theme container - if ( !o.theme ) { - o.theme = $.mobile.getInheritedTheme( el, "c" ); - } - - buttonClass = "ui-btn ui-btn-up-" + o.theme; - buttonClass += o.inline ? " ui-btn-inline" : ""; - buttonClass += o.shadow ? " ui-shadow" : ""; - buttonClass += o.corners ? " ui-btn-corner-all" : ""; - - if ( o.mini !== undefined ) { - // Used to control styling in headers/footers, where buttons default to `mini` style. - buttonClass += o.mini ? " ui-mini" : " ui-fullsize"; - } - - if ( o.inline !== undefined ) { - // Used to control styling in headers/footers, where buttons default to `mini` style. - buttonClass += o.inline === false ? " ui-btn-block" : " ui-btn-inline"; - } - - - if ( o.icon ) { - o.icon = "ui-icon-" + o.icon; - o.iconpos = o.iconpos || "left"; - - iconClass = "ui-icon " + o.icon; - - if ( o.iconshadow ) { - iconClass += " ui-icon-shadow"; - } - } - - if ( o.iconpos ) { - buttonClass += " ui-btn-icon-" + o.iconpos; - - if ( o.iconpos == "notext" && !el.attr( "title" ) ) { - el.attr( "title", el.getEncodedText() ); - } - } - - innerClass += o.corners ? " ui-btn-corner-all" : ""; - - if ( o.iconpos && o.iconpos === "notext" && !el.attr( "title" ) ) { - el.attr( "title", el.getEncodedText() ); - } - - if ( buttonElements ) { - el.removeClass( buttonElements.bcls || "" ); - } - el.removeClass( "ui-link" ).addClass( buttonClass ); - - buttonInner.className = innerClass; - - buttonText.className = textClass; - if ( !buttonElements ) { - buttonInner.appendChild( buttonText ); - } - if ( buttonIcon ) { - buttonIcon.className = iconClass; - if ( !(buttonElements && buttonElements.icon) ) { - buttonIcon.appendChild( document.createTextNode("\u00a0") ); - buttonInner.appendChild( buttonIcon ); - } - } - - while ( e.firstChild && !buttonElements) { - buttonText.appendChild( e.firstChild ); - } - - if ( !buttonElements ) { - e.appendChild( buttonInner ); - } - - // Assign a structure containing the elements of this button to the elements of this button. This - // will allow us to recognize this as an already-enhanced button in future calls to buttonMarkup(). - buttonElements = { - bcls : buttonClass, - outer : e, - inner : buttonInner, - text : buttonText, - icon : buttonIcon - }; - - $.data(e, 'buttonElements', buttonElements); - $.data(buttonInner, 'buttonElements', buttonElements); - $.data(buttonText, 'buttonElements', buttonElements); - if (buttonIcon) { - $.data(buttonIcon, 'buttonElements', buttonElements); - } - } - - return this; -}; - -$.fn.buttonMarkup.defaults = { - corners: true, - shadow: true, - iconshadow: true, - wrapperEls: "span" -}; - -function closestEnabledButton( element ) { - var cname; - - while ( element ) { - // Note that we check for typeof className below because the element we - // handed could be in an SVG DOM where className on SVG elements is defined to - // be of a different type (SVGAnimatedString). We only operate on HTML DOM - // elements, so we look for plain "string". - cname = ( typeof element.className === 'string' ) && (element.className + ' '); - if ( cname && cname.indexOf("ui-btn ") > -1 && cname.indexOf("ui-disabled ") < 0 ) { - break; - } - - element = element.parentNode; - } - - return element; -} - -var attachEvents = function() { - var hoverDelay = $.mobile.buttonMarkup.hoverDelay, hov, foc; - - $( document ).bind( { - "vmousedown vmousecancel vmouseup vmouseover vmouseout focus blur scrollstart": function( event ) { - var theme, - $btn = $( closestEnabledButton( event.target ) ), - evt = event.type; - - if ( $btn.length ) { - theme = $btn.attr( "data-" + $.mobile.ns + "theme" ); - - if ( evt === "vmousedown" ) { - if ( $.support.touch ) { - hov = setTimeout(function() { - $btn.removeClass( "ui-btn-up-" + theme ).addClass( "ui-btn-down-" + theme ); - }, hoverDelay ); - } else { - $btn.removeClass( "ui-btn-up-" + theme ).addClass( "ui-btn-down-" + theme ); - } - } else if ( evt === "vmousecancel" || evt === "vmouseup" ) { - $btn.removeClass( "ui-btn-down-" + theme ).addClass( "ui-btn-up-" + theme ); - } else if ( evt === "vmouseover" || evt === "focus" ) { - if ( $.support.touch ) { - foc = setTimeout(function() { - $btn.removeClass( "ui-btn-up-" + theme ).addClass( "ui-btn-hover-" + theme ); - }, hoverDelay ); - } else { - $btn.removeClass( "ui-btn-up-" + theme ).addClass( "ui-btn-hover-" + theme ); - } - } else if ( evt === "vmouseout" || evt === "blur" || evt === "scrollstart" ) { - $btn.removeClass( "ui-btn-hover-" + theme + " ui-btn-down-" + theme ).addClass( "ui-btn-up-" + theme ); - if ( hov ) { - clearTimeout( hov ); - } - if ( foc ) { - clearTimeout( foc ); - } - } - } - }, - "focusin focus": function( event ){ - $( closestEnabledButton( event.target ) ).addClass( $.mobile.focusClass ); - }, - "focusout blur": function( event ){ - $( closestEnabledButton( event.target ) ).removeClass( $.mobile.focusClass ); - } - }); - - attachEvents = null; -}; - -//links in bars, or those with data-role become buttons -//auto self-init widgets -$( document ).bind( "pagecreate create", function( e ){ - - $( ":jqmData(role='button'), .ui-bar > a, .ui-header > a, .ui-footer > a, .ui-bar > :jqmData(role='controlgroup') > a", e.target ) - .not( ".ui-btn, :jqmData(role='none'), :jqmData(role='nojs')" ) - .buttonMarkup(); -}); - -})( jQuery ); - - -(function( $, undefined ) { - -$.widget( "mobile.collapsible", $.mobile.widget, { - options: { - expandCueText: " click to expand contents", - collapseCueText: " click to collapse contents", - collapsed: true, - heading: "h1,h2,h3,h4,h5,h6,legend", - theme: null, - contentTheme: null, - iconTheme: "d", - mini: false, - initSelector: ":jqmData(role='collapsible')" - }, - _create: function() { - - var $el = this.element, - o = this.options, - collapsible = $el.addClass( "ui-collapsible" ), - collapsibleHeading = $el.children( o.heading ).first(), - collapsibleContent = collapsible.wrapInner( "
      " ).find( ".ui-collapsible-content" ), - collapsibleSet = $el.closest( ":jqmData(role='collapsible-set')" ).addClass( "ui-collapsible-set" ); - - // Replace collapsibleHeading if it's a legend - if ( collapsibleHeading.is( "legend" ) ) { - collapsibleHeading = $( "
      "+ collapsibleHeading.html() +"
      " ).insertBefore( collapsibleHeading ); - collapsibleHeading.next().remove(); - } - - // If we are in a collapsible set - if ( collapsibleSet.length ) { - // Inherit the theme from collapsible-set - if ( !o.theme ) { - o.theme = collapsibleSet.jqmData("theme") || $.mobile.getInheritedTheme( collapsibleSet, "c" ); - } - // Inherit the content-theme from collapsible-set - if ( !o.contentTheme ) { - o.contentTheme = collapsibleSet.jqmData( "content-theme" ); - } - - // Gets the preference icon position in the set - if ( !o.iconPos ) { - o.iconPos = collapsibleSet.jqmData( "iconpos" ); - } - - if( !o.mini ) { - o.mini = collapsibleSet.jqmData( "mini" ); - } - } - collapsibleContent.addClass( ( o.contentTheme ) ? ( "ui-body-" + o.contentTheme ) : ""); - - collapsibleHeading - //drop heading in before content - .insertBefore( collapsibleContent ) - //modify markup & attributes - .addClass( "ui-collapsible-heading" ) - .append( "" ) - .wrapInner( "" ) - .find( "a" ) - .first() - .buttonMarkup({ - shadow: false, - corners: false, - iconpos: $el.jqmData( "iconpos" ) || o.iconPos || "left", - icon: "plus", - mini: o.mini, - theme: o.theme - }) - .add( ".ui-btn-inner", $el ) - .addClass( "ui-corner-top ui-corner-bottom" ); - - //events - collapsible - .bind( "expand collapse", function( event ) { - if ( !event.isDefaultPrevented() ) { - - event.preventDefault(); - - var $this = $( this ), - isCollapse = ( event.type === "collapse" ), - contentTheme = o.contentTheme; - - collapsibleHeading - .toggleClass( "ui-collapsible-heading-collapsed", isCollapse) - .find( ".ui-collapsible-heading-status" ) - .text( isCollapse ? o.expandCueText : o.collapseCueText ) - .end() - .find( ".ui-icon" ) - .toggleClass( "ui-icon-minus", !isCollapse ) - .toggleClass( "ui-icon-plus", isCollapse ) - .end() - .find( "a" ).first().removeClass( $.mobile.activeBtnClass ); - - $this.toggleClass( "ui-collapsible-collapsed", isCollapse ); - collapsibleContent.toggleClass( "ui-collapsible-content-collapsed", isCollapse ).attr( "aria-hidden", isCollapse ); - - if ( contentTheme && ( !collapsibleSet.length || collapsible.jqmData( "collapsible-last" ) ) ) { - collapsibleHeading - .find( "a" ).first().add( collapsibleHeading.find( ".ui-btn-inner" ) ) - .toggleClass( "ui-corner-bottom", isCollapse ); - collapsibleContent.toggleClass( "ui-corner-bottom", !isCollapse ); - } - collapsibleContent.trigger( "updatelayout" ); - } - }) - .trigger( o.collapsed ? "collapse" : "expand" ); - - collapsibleHeading - .bind( "tap", function( event ) { - collapsibleHeading.find( "a" ).first().addClass( $.mobile.activeBtnClass ); - }) - .bind( "click", function( event ) { - - var type = collapsibleHeading.is( ".ui-collapsible-heading-collapsed" ) ? - "expand" : "collapse"; - - collapsible.trigger( type ); - - event.preventDefault(); - event.stopPropagation(); - }); - } -}); - -//auto self-init widgets -$( document ).bind( "pagecreate create", function( e ){ - $.mobile.collapsible.prototype.enhanceWithin( e.target ); -}); - -})( jQuery ); - -(function( $, undefined ) { - -$.widget( "mobile.collapsibleset", $.mobile.widget, { - options: { - initSelector: ":jqmData(role='collapsible-set')" - }, - _create: function() { - var $el = this.element.addClass( "ui-collapsible-set" ), - o = this.options; - - // Inherit the theme from collapsible-set - if ( !o.theme ) { - o.theme = $.mobile.getInheritedTheme( $el, "c" ); - } - // Inherit the content-theme from collapsible-set - if ( !o.contentTheme ) { - o.contentTheme = $el.jqmData( "content-theme" ); - } - - if ( !o.corners ) { - o.corners = $el.jqmData( "corners" ) === undefined ? true : false; - } - - // Initialize the collapsible set if it's not already initialized - if ( !$el.jqmData( "collapsiblebound" ) ) { - $el - .jqmData( "collapsiblebound", true ) - .bind( "expand collapse", function( event ) { - var isCollapse = ( event.type === "collapse" ), - collapsible = $( event.target ).closest( ".ui-collapsible" ), - widget = collapsible.data( "collapsible" ), - contentTheme = widget.options.contentTheme; - if ( contentTheme && collapsible.jqmData( "collapsible-last" ) ) { - collapsible.find( widget.options.heading ).first() - .find( "a" ).first() - .toggleClass( "ui-corner-bottom", isCollapse ) - .find( ".ui-btn-inner" ) - .toggleClass( "ui-corner-bottom", isCollapse ); - collapsible.find( ".ui-collapsible-content" ).toggleClass( "ui-corner-bottom", !isCollapse ); - } - }) - .bind( "expand", function( event ) { - $( event.target ) - .closest( ".ui-collapsible" ) - .siblings( ".ui-collapsible" ) - .trigger( "collapse" ); - }); - } - }, - - _init: function() { - this.refresh(); - }, - - refresh: function() { - var $el = this.element, - o = this.options, - collapsiblesInSet = $el.children( ":jqmData(role='collapsible')" ); - - $.mobile.collapsible.prototype.enhance( collapsiblesInSet.not( ".ui-collapsible" ) ); - - // clean up borders - collapsiblesInSet.each( function() { - $( this ).find( $.mobile.collapsible.prototype.options.heading ) - .find( "a" ).first() - .removeClass( "ui-corner-top ui-corner-bottom" ) - .find( ".ui-btn-inner" ) - .removeClass( "ui-corner-top ui-corner-bottom" ); - }); - - collapsiblesInSet.first() - .find( "a" ) - .first() - .addClass( o.corners ? "ui-corner-top" : "" ) - .find( ".ui-btn-inner" ) - .addClass( "ui-corner-top" ); - - collapsiblesInSet.last() - .jqmData( "collapsible-last", true ) - .find( "a" ) - .first() - .addClass( o.corners ? "ui-corner-bottom" : "" ) - .find( ".ui-btn-inner" ) - .addClass( "ui-corner-bottom" ); - } -}); - -//auto self-init widgets -$( document ).bind( "pagecreate create", function( e ){ - $.mobile.collapsibleset.prototype.enhanceWithin( e.target ); -}); - -})( jQuery ); - -(function( $, undefined ) { - -$.widget( "mobile.navbar", $.mobile.widget, { - options: { - iconpos: "top", - grid: null, - initSelector: ":jqmData(role='navbar')" - }, - - _create: function(){ - - var $navbar = this.element, - $navbtns = $navbar.find( "a" ), - iconpos = $navbtns.filter( ":jqmData(icon)" ).length ? - this.options.iconpos : undefined; - - $navbar.addClass( "ui-navbar ui-mini" ) - .attr( "role","navigation" ) - .find( "ul" ) - .jqmEnhanceable() - .grid({ grid: this.options.grid }); - - $navbtns.buttonMarkup({ - corners: false, - shadow: false, - inline: true, - iconpos: iconpos - }); - - $navbar.delegate( "a", "vclick", function( event ) { - if( !$(event.target).hasClass("ui-disabled") ) { - $navbtns.removeClass( $.mobile.activeBtnClass ); - $( this ).addClass( $.mobile.activeBtnClass ); - } - }); - - // Buttons in the navbar with ui-state-persist class should regain their active state before page show - $navbar.closest( ".ui-page" ).bind( "pagebeforeshow", function() { - $navbtns.filter( ".ui-state-persist" ).addClass( $.mobile.activeBtnClass ); - }); - } -}); - -//auto self-init widgets -$( document ).bind( "pagecreate create", function( e ){ - $.mobile.navbar.prototype.enhanceWithin( e.target ); -}); - -})( jQuery ); - -(function( $, undefined ) { - -//Keeps track of the number of lists per page UID -//This allows support for multiple nested list in the same page -//https://github.com/jquery/jquery-mobile/issues/1617 -var listCountPerPage = {}; - -$.widget( "mobile.listview", $.mobile.widget, { - - options: { - theme: null, - countTheme: "c", - headerTheme: "b", - dividerTheme: "b", - splitIcon: "arrow-r", - splitTheme: "b", - inset: false, - initSelector: ":jqmData(role='listview')" - }, - - _create: function() { - var t = this, - listviewClasses = ""; - - listviewClasses += t.options.inset ? " ui-listview-inset ui-corner-all ui-shadow " : ""; - - // create listview markup - t.element.addClass(function( i, orig ) { - return orig + " ui-listview " + listviewClasses; - }); - - t.refresh( true ); - }, - - _removeCorners: function( li, which ) { - var top = "ui-corner-top ui-corner-tr ui-corner-tl", - bot = "ui-corner-bottom ui-corner-br ui-corner-bl"; - - li = li.add( li.find( ".ui-btn-inner, .ui-li-link-alt, .ui-li-thumb" ) ); - - if ( which === "top" ) { - li.removeClass( top ); - } else if ( which === "bottom" ) { - li.removeClass( bot ); - } else { - li.removeClass( top + " " + bot ); - } - }, - - _refreshCorners: function( create ) { - var $li, - $visibleli, - $topli, - $bottomli; - - if ( this.options.inset ) { - $li = this.element.children( "li" ); - // at create time the li are not visible yet so we need to rely on .ui-screen-hidden - $visibleli = create?$li.not( ".ui-screen-hidden" ):$li.filter( ":visible" ); - - this._removeCorners( $li ); - - // Select the first visible li element - $topli = $visibleli.first() - .addClass( "ui-corner-top" ); - - $topli.add( $topli.find( ".ui-btn-inner" ) - .not( ".ui-li-link-alt span:first-child" ) ) - .addClass( "ui-corner-top" ) - .end() - .find( ".ui-li-link-alt, .ui-li-link-alt span:first-child" ) - .addClass( "ui-corner-tr" ) - .end() - .find( ".ui-li-thumb" ) - .not(".ui-li-icon") - .addClass( "ui-corner-tl" ); - - // Select the last visible li element - $bottomli = $visibleli.last() - .addClass( "ui-corner-bottom" ); - - $bottomli.add( $bottomli.find( ".ui-btn-inner" ) ) - .find( ".ui-li-link-alt" ) - .addClass( "ui-corner-br" ) - .end() - .find( ".ui-li-thumb" ) - .not(".ui-li-icon") - .addClass( "ui-corner-bl" ); - } - if ( !create ) { - this.element.trigger( "updatelayout" ); - } - }, - - // This is a generic utility method for finding the first - // node with a given nodeName. It uses basic DOM traversal - // to be fast and is meant to be a substitute for simple - // $.fn.closest() and $.fn.children() calls on a single - // element. Note that callers must pass both the lowerCase - // and upperCase version of the nodeName they are looking for. - // The main reason for this is that this function will be - // called many times and we want to avoid having to lowercase - // the nodeName from the element every time to ensure we have - // a match. Note that this function lives here for now, but may - // be moved into $.mobile if other components need a similar method. - _findFirstElementByTagName: function( ele, nextProp, lcName, ucName ) - { - var dict = {}; - dict[ lcName ] = dict[ ucName ] = true; - while ( ele ) { - if ( dict[ ele.nodeName ] ) { - return ele; - } - ele = ele[ nextProp ]; - } - return null; - }, - _getChildrenByTagName: function( ele, lcName, ucName ) - { - var results = [], - dict = {}; - dict[ lcName ] = dict[ ucName ] = true; - ele = ele.firstChild; - while ( ele ) { - if ( dict[ ele.nodeName ] ) { - results.push( ele ); - } - ele = ele.nextSibling; - } - return $( results ); - }, - - _addThumbClasses: function( containers ) - { - var i, img, len = containers.length; - for ( i = 0; i < len; i++ ) { - img = $( this._findFirstElementByTagName( containers[ i ].firstChild, "nextSibling", "img", "IMG" ) ); - if ( img.length ) { - img.addClass( "ui-li-thumb" ); - $( this._findFirstElementByTagName( img[ 0 ].parentNode, "parentNode", "li", "LI" ) ).addClass( img.is( ".ui-li-icon" ) ? "ui-li-has-icon" : "ui-li-has-thumb" ); - } - } - }, - - refresh: function( create ) { - this.parentPage = this.element.closest( ".ui-page" ); - this._createSubPages(); - - var o = this.options, - $list = this.element, - self = this, - dividertheme = $list.jqmData( "dividertheme" ) || o.dividerTheme, - listsplittheme = $list.jqmData( "splittheme" ), - listspliticon = $list.jqmData( "spliticon" ), - li = this._getChildrenByTagName( $list[ 0 ], "li", "LI" ), - counter = $.support.cssPseudoElement || !$.nodeName( $list[ 0 ], "ol" ) ? 0 : 1, - itemClassDict = {}, - item, itemClass, itemTheme, - a, last, splittheme, countParent, icon, imgParents, img, linkIcon; - - if ( counter ) { - $list.find( ".ui-li-dec" ).remove(); - } - - if ( !o.theme ) { - o.theme = $.mobile.getInheritedTheme( this.element, "c" ); - } - - for ( var pos = 0, numli = li.length; pos < numli; pos++ ) { - item = li.eq( pos ); - itemClass = "ui-li"; - - // If we're creating the element, we update it regardless - if ( create || !item.hasClass( "ui-li" ) ) { - itemTheme = item.jqmData("theme") || o.theme; - a = this._getChildrenByTagName( item[ 0 ], "a", "A" ); - var isDivider = ( item.jqmData( "role" ) === "list-divider" ); - - if ( a.length && !isDivider ) { - icon = item.jqmData("icon"); - - item.buttonMarkup({ - wrapperEls: "div", - shadow: false, - corners: false, - iconpos: "right", - icon: a.length > 1 || icon === false ? false : icon || "arrow-r", - theme: itemTheme - }); - - if ( ( icon != false ) && ( a.length == 1 ) ) { - item.addClass( "ui-li-has-arrow" ); - } - - a.first().removeClass( "ui-link" ).addClass( "ui-link-inherit" ); - - if ( a.length > 1 ) { - itemClass += " ui-li-has-alt"; - - last = a.last(); - splittheme = listsplittheme || last.jqmData( "theme" ) || o.splitTheme; - linkIcon = last.jqmData("icon"); - - last.appendTo(item) - .attr( "title", last.getEncodedText() ) - .addClass( "ui-li-link-alt" ) - .empty() - .buttonMarkup({ - shadow: false, - corners: false, - theme: itemTheme, - icon: false, - iconpos: "notext" - }) - .find( ".ui-btn-inner" ) - .append( - $( document.createElement( "span" ) ).buttonMarkup({ - shadow: true, - corners: true, - theme: splittheme, - iconpos: "notext", - // link icon overrides list item icon overrides ul element overrides options - icon: linkIcon || icon || listspliticon || o.splitIcon - }) - ); - } - } else if ( isDivider ) { - - itemClass += " ui-li-divider ui-bar-" + dividertheme; - item.attr( "role", "heading" ); - - //reset counter when a divider heading is encountered - if ( counter ) { - counter = 1; - } - - } else { - itemClass += " ui-li-static ui-body-" + itemTheme; - } - } - - if ( counter && itemClass.indexOf( "ui-li-divider" ) < 0 ) { - countParent = item.is( ".ui-li-static:first" ) ? item : item.find( ".ui-link-inherit" ); - - countParent.addClass( "ui-li-jsnumbering" ) - .prepend( "" + (counter++) + ". " ); - } - - // Instead of setting item class directly on the list item and its - // btn-inner at this point in time, push the item into a dictionary - // that tells us what class to set on it so we can do this after this - // processing loop is finished. - - if ( !itemClassDict[ itemClass ] ) { - itemClassDict[ itemClass ] = []; - } - - itemClassDict[ itemClass ].push( item[ 0 ] ); - } - - // Set the appropriate listview item classes on each list item - // and their btn-inner elements. The main reason we didn't do this - // in the for-loop above is because we can eliminate per-item function overhead - // by calling addClass() and children() once or twice afterwards. This - // can give us a significant boost on platforms like WP7.5. - - for ( itemClass in itemClassDict ) { - $( itemClassDict[ itemClass ] ).addClass( itemClass ).children( ".ui-btn-inner" ).addClass( itemClass ); - } - - $list.find( "h1, h2, h3, h4, h5, h6" ).addClass( "ui-li-heading" ) - .end() - - .find( "p, dl" ).addClass( "ui-li-desc" ) - .end() - - .find( ".ui-li-aside" ).each(function() { - var $this = $(this); - $this.prependTo( $this.parent() ); //shift aside to front for css float - }) - .end() - - .find( ".ui-li-count" ).each( function() { - $( this ).closest( "li" ).addClass( "ui-li-has-count" ); - }).addClass( "ui-btn-up-" + ( $list.jqmData( "counttheme" ) || this.options.countTheme) + " ui-btn-corner-all" ); - - // The idea here is to look at the first image in the list item - // itself, and any .ui-link-inherit element it may contain, so we - // can place the appropriate classes on the image and list item. - // Note that we used to use something like: - // - // li.find(">img:eq(0), .ui-link-inherit>img:eq(0)").each( ... ); - // - // But executing a find() like that on Windows Phone 7.5 took a - // really long time. Walking things manually with the code below - // allows the 400 listview item page to load in about 3 seconds as - // opposed to 30 seconds. - - this._addThumbClasses( li ); - this._addThumbClasses( $list.find( ".ui-link-inherit" ) ); - - this._refreshCorners( create ); - }, - - //create a string for ID/subpage url creation - _idStringEscape: function( str ) { - return str.replace(/[^a-zA-Z0-9]/g, '-'); - }, - - _createSubPages: function() { - var parentList = this.element, - parentPage = parentList.closest( ".ui-page" ), - parentUrl = parentPage.jqmData( "url" ), - parentId = parentUrl || parentPage[ 0 ][ $.expando ], - parentListId = parentList.attr( "id" ), - o = this.options, - dns = "data-" + $.mobile.ns, - self = this, - persistentFooterID = parentPage.find( ":jqmData(role='footer')" ).jqmData( "id" ), - hasSubPages; - - if ( typeof listCountPerPage[ parentId ] === "undefined" ) { - listCountPerPage[ parentId ] = -1; - } - - parentListId = parentListId || ++listCountPerPage[ parentId ]; - - $( parentList.find( "li>ul, li>ol" ).toArray().reverse() ).each(function( i ) { - var self = this, - list = $( this ), - listId = list.attr( "id" ) || parentListId + "-" + i, - parent = list.parent(), - nodeEls = $( list.prevAll().toArray().reverse() ), - nodeEls = nodeEls.length ? nodeEls : $( "" + $.trim(parent.contents()[ 0 ].nodeValue) + "" ), - title = nodeEls.first().getEncodedText(),//url limits to first 30 chars of text - id = ( parentUrl || "" ) + "&" + $.mobile.subPageUrlKey + "=" + listId, - theme = list.jqmData( "theme" ) || o.theme, - countTheme = list.jqmData( "counttheme" ) || parentList.jqmData( "counttheme" ) || o.countTheme, - newPage, anchor; - - //define hasSubPages for use in later removal - hasSubPages = true; - - newPage = list.detach() - .wrap( "
      " ) - .parent() - .before( "
      " + title + "
      " ) - .after( persistentFooterID ? $( "
      ") : "" ) - .parent() - .appendTo( $.mobile.pageContainer ); - - newPage.page(); - - anchor = parent.find('a:first'); - - if ( !anchor.length ) { - anchor = $( "" ).html( nodeEls || title ).prependTo( parent.empty() ); - } - - anchor.attr( "href", "#" + id ); - - }).listview(); - - // on pagehide, remove any nested pages along with the parent page, as long as they aren't active - // and aren't embedded - if( hasSubPages && - parentPage.is( ":jqmData(external-page='true')" ) && - parentPage.data("page").options.domCache === false ) { - - var newRemove = function( e, ui ){ - var nextPage = ui.nextPage, npURL, - prEvent = new $.Event( "pageremove" ); - - if( ui.nextPage ){ - npURL = nextPage.jqmData( "url" ); - if( npURL.indexOf( parentUrl + "&" + $.mobile.subPageUrlKey ) !== 0 ){ - self.childPages().remove(); - parentPage.trigger( prEvent ); - if( !prEvent.isDefaultPrevented() ){ - parentPage.removeWithDependents(); - } - } - } - }; - - // unbind the original page remove and replace with our specialized version - parentPage - .unbind( "pagehide.remove" ) - .bind( "pagehide.remove", newRemove); - } - }, - - // TODO sort out a better way to track sub pages of the listview this is brittle - childPages: function(){ - var parentUrl = this.parentPage.jqmData( "url" ); - - return $( ":jqmData(url^='"+ parentUrl + "&" + $.mobile.subPageUrlKey +"')"); - } -}); - -//auto self-init widgets -$( document ).bind( "pagecreate create", function( e ){ - $.mobile.listview.prototype.enhanceWithin( e.target ); -}); - -})( jQuery ); - -/* -* "checkboxradio" plugin -*/ - -(function( $, undefined ) { - -$.widget( "mobile.checkboxradio", $.mobile.widget, { - options: { - theme: null, - initSelector: "input[type='checkbox'],input[type='radio']" - }, - _create: function() { - var self = this, - input = this.element, - inheritAttr = function( input, dataAttr ) { - return input.jqmData( dataAttr ) || input.closest( "form,fieldset" ).jqmData( dataAttr ) - }, - // NOTE: Windows Phone could not find the label through a selector - // filter works though. - parentLabel = $( input ).closest( "label" ), - label = parentLabel.length ? parentLabel : $( input ).closest( "form,fieldset,:jqmData(role='page'),:jqmData(role='dialog')" ).find( "label" ).filter( "[for='" + input[0].id + "']" ), - inputtype = input[0].type, - mini = inheritAttr( input, "mini" ), - checkedState = inputtype + "-on", - uncheckedState = inputtype + "-off", - icon = input.parents( ":jqmData(type='horizontal')" ).length ? undefined : uncheckedState, - iconpos = inheritAttr( input, "iconpos" ), - activeBtn = icon ? "" : " " + $.mobile.activeBtnClass, - checkedClass = "ui-" + checkedState + activeBtn, - uncheckedClass = "ui-" + uncheckedState, - checkedicon = "ui-icon-" + checkedState, - uncheckedicon = "ui-icon-" + uncheckedState; - - if ( inputtype !== "checkbox" && inputtype !== "radio" ) { - return; - } - - // Expose for other methods - $.extend( this, { - label: label, - inputtype: inputtype, - checkedClass: checkedClass, - uncheckedClass: uncheckedClass, - checkedicon: checkedicon, - uncheckedicon: uncheckedicon - }); - - // If there's no selected theme check the data attr - if( !this.options.theme ) { - this.options.theme = $.mobile.getInheritedTheme( this.element, "c" ); - } - - label.buttonMarkup({ - theme: this.options.theme, - icon: icon, - shadow: false, - mini: mini, - iconpos: iconpos - }); - - // Wrap the input + label in a div - var wrapper = document.createElement('div'); - wrapper.className = 'ui-' + inputtype; - - input.add( label ).wrapAll( wrapper ); - - label.bind({ - vmouseover: function( event ) { - if ( $( this ).parent().is( ".ui-disabled" ) ) { - event.stopPropagation(); - } - }, - - vclick: function( event ) { - if ( input.is( ":disabled" ) ) { - event.preventDefault(); - return; - } - - self._cacheVals(); - - input.prop( "checked", inputtype === "radio" && true || !input.prop( "checked" ) ); - - // trigger click handler's bound directly to the input as a substitute for - // how label clicks behave normally in the browsers - // TODO: it would be nice to let the browser's handle the clicks and pass them - // through to the associate input. we can swallow that click at the parent - // wrapper element level - input.triggerHandler( 'click' ); - - // Input set for common radio buttons will contain all the radio - // buttons, but will not for checkboxes. clearing the checked status - // of other radios ensures the active button state is applied properly - self._getInputSet().not( input ).prop( "checked", false ); - - self._updateAll(); - return false; - } - }); - - input - .bind({ - vmousedown: function() { - self._cacheVals(); - }, - - vclick: function() { - var $this = $(this); - - // Adds checked attribute to checked input when keyboard is used - if ( $this.is( ":checked" ) ) { - - $this.prop( "checked", true); - self._getInputSet().not($this).prop( "checked", false ); - } else { - - $this.prop( "checked", false ); - } - - self._updateAll(); - }, - - focus: function() { - label.addClass( $.mobile.focusClass ); - }, - - blur: function() { - label.removeClass( $.mobile.focusClass ); - } - }); - - this.refresh(); - }, - - _cacheVals: function() { - this._getInputSet().each(function() { - $(this).jqmData( "cacheVal", this.checked ); - }); - }, - - //returns either a set of radios with the same name attribute, or a single checkbox - _getInputSet: function(){ - if(this.inputtype === "checkbox") { - return this.element; - } - - return this.element.closest( "form,fieldset,:jqmData(role='page')" ) - .find( "input[name='"+ this.element[0].name +"'][type='"+ this.inputtype +"']" ); - }, - - _updateAll: function() { - var self = this; - - this._getInputSet().each(function() { - var $this = $(this); - - if ( this.checked || self.inputtype === "checkbox" ) { - $this.trigger( "change" ); - } - }) - .checkboxradio( "refresh" ); - }, - - refresh: function() { - var input = this.element[0], - label = this.label, - icon = label.find( ".ui-icon" ); - - if ( input.checked ) { - label.addClass( this.checkedClass ).removeClass( this.uncheckedClass ); - icon.addClass( this.checkedicon ).removeClass( this.uncheckedicon ); - } else { - label.removeClass( this.checkedClass ).addClass( this.uncheckedClass ); - icon.removeClass( this.checkedicon ).addClass( this.uncheckedicon ); - } - - if ( input.disabled ) { - this.disable(); - } else { - this.enable(); - } - }, - - disable: function() { - this.element.prop( "disabled", true ).parent().addClass( "ui-disabled" ); - }, - - enable: function() { - this.element.prop( "disabled", false ).parent().removeClass( "ui-disabled" ); - } -}); - -//auto self-init widgets -$( document ).bind( "pagecreate create", function( e ){ - $.mobile.checkboxradio.prototype.enhanceWithin( e.target, true ); -}); - -})( jQuery ); - -(function( $, undefined ) { - -$.widget( "mobile.button", $.mobile.widget, { - options: { - theme: null, - icon: null, - iconpos: null, - inline: false, - corners: true, - shadow: true, - iconshadow: true, - initSelector: "button, [type='button'], [type='submit'], [type='reset'], [type='image']", - mini: false - }, - _create: function() { - var $el = this.element, - $button, - o = this.options, - type, - name, - classes = "", - $buttonPlaceholder; - - // if this is a link, check if it's been enhanced and, if not, use the right function - if( $el[ 0 ].tagName === "A" ) { - !$el.hasClass( "ui-btn" ) && $el.buttonMarkup(); - return; - } - - // get the inherited theme - // TODO centralize for all widgets - if ( !this.options.theme ) { - this.options.theme = $.mobile.getInheritedTheme( this.element, "c" ); - } - - // TODO: Post 1.1--once we have time to test thoroughly--any classes manually applied to the original element should be carried over to the enhanced element, with an `-enhanced` suffix. See https://github.com/jquery/jquery-mobile/issues/3577 - /* if( $el[0].className.length ) { - classes = $el[0].className; - } */ - if( !!~$el[0].className.indexOf( "ui-btn-left" ) ) { - classes = "ui-btn-left"; - } - - if( !!~$el[0].className.indexOf( "ui-btn-right" ) ) { - classes = "ui-btn-right"; - } - - if( $el.attr( "type" ) === "submit" || $el.attr( "type" ) === "reset" ) { - classes ? classes += " ui-submit" : classes = "ui-submit"; - } - - $( "label[for='" + $el.attr( "id" ) + "']" ).addClass( "ui-submit" ); - - // Add ARIA role - this.button = $( "
      " ) - .text( $el.text() || $el.val() ) - .insertBefore( $el ) - .buttonMarkup({ - theme: o.theme, - icon: o.icon, - iconpos: o.iconpos, - inline: o.inline, - corners: o.corners, - shadow: o.shadow, - iconshadow: o.iconshadow, - mini: o.mini - }) - .addClass( classes ) - .append( $el.addClass( "ui-btn-hidden" ) ); - - $button = this.button; - type = $el.attr( "type" ); - name = $el.attr( "name" ); - - // Add hidden input during submit if input type="submit" has a name. - if ( type !== "button" && type !== "reset" && name ) { - $el.bind( "vclick", function() { - // Add hidden input if it doesn't already exist. - if( $buttonPlaceholder === undefined ) { - $buttonPlaceholder = $( "", { - type: "hidden", - name: $el.attr( "name" ), - value: $el.attr( "value" ) - }).insertBefore( $el ); - - // Bind to doc to remove after submit handling - $( document ).one("submit", function(){ - $buttonPlaceholder.remove(); - - // reset the local var so that the hidden input - // will be re-added on subsequent clicks - $buttonPlaceholder = undefined; - }); - } - }); - } - - $el.bind({ - focus: function() { - $button.addClass( $.mobile.focusClass ); - }, - - blur: function() { - $button.removeClass( $.mobile.focusClass ); - } - }); - - this.refresh(); - }, - - enable: function() { - this.element.attr( "disabled", false ); - this.button.removeClass( "ui-disabled" ).attr( "aria-disabled", false ); - return this._setOption( "disabled", false ); - }, - - disable: function() { - this.element.attr( "disabled", true ); - this.button.addClass( "ui-disabled" ).attr( "aria-disabled", true ); - return this._setOption( "disabled", true ); - }, - - refresh: function() { - var $el = this.element; - - if ( $el.prop("disabled") ) { - this.disable(); - } else { - this.enable(); - } - - // Grab the button's text element from its implementation-independent data item - $( this.button.data( 'buttonElements' ).text ).text( $el.text() || $el.val() ); - } -}); - -//auto self-init widgets -$( document ).bind( "pagecreate create", function( e ){ - $.mobile.button.prototype.enhanceWithin( e.target, true ); -}); - -})( jQuery ); - -(function( $, undefined ) { - -$.fn.controlgroup = function( options ) { - function flipClasses( els, flCorners ) { - els.removeClass( "ui-btn-corner-all ui-corner-top ui-corner-bottom ui-corner-left ui-corner-right ui-controlgroup-last ui-shadow" ) - .eq( 0 ).addClass( flCorners[ 0 ] ) - .end() - .last().addClass( flCorners[ 1 ] ).addClass( "ui-controlgroup-last" ); - } - - return this.each(function() { - var $el = $( this ), - o = $.extend({ - direction: $el.jqmData( "type" ) || "vertical", - shadow: false, - excludeInvisible: true, - mini: $el.jqmData( "mini" ) - }, options ), - groupheading = $el.children( "legend" ), - flCorners = o.direction == "horizontal" ? [ "ui-corner-left", "ui-corner-right" ] : [ "ui-corner-top", "ui-corner-bottom" ], - type = $el.find( "input" ).first().attr( "type" ); - - $el.wrapInner( "
      " ); - - // Replace legend with more stylable replacement div - if ( groupheading.length ) { - $( "
      " + groupheading.html() + "
      " ).insertBefore( $el.children(0) ); - groupheading.remove(); - } - - $el.addClass( "ui-corner-all ui-controlgroup ui-controlgroup-" + o.direction ); - - flipClasses( $el.find( ".ui-btn" + ( o.excludeInvisible ? ":visible" : "" ) ).not('.ui-slider-handle'), flCorners ); - flipClasses( $el.find( ".ui-btn-inner" ), flCorners ); - - if ( o.shadow ) { - $el.addClass( "ui-shadow" ); - } - - if ( o.mini ) { - $el.addClass( "ui-mini" ); - } - - }); -}; - -// The pagecreate handler for controlgroup is in jquery.mobile.init because of the soft-dependency on the wrapped widgets - -})(jQuery); - -(function( $, undefined ) { - -$( document ).bind( "pagecreate create", function( e ){ - - //links within content areas, tests included with page - $( e.target ) - .find( "a" ) - .jqmEnhanceable() - .not( ".ui-btn, .ui-link-inherit, :jqmData(role='none'), :jqmData(role='nojs')" ) - .addClass( "ui-link" ); - -}); - -})( jQuery ); - - -( function( $ ) { - var meta = $( "meta[name=viewport]" ), - initialContent = meta.attr( "content" ), - disabledZoom = initialContent + ",maximum-scale=1, user-scalable=no", - enabledZoom = initialContent + ",maximum-scale=10, user-scalable=yes", - disabledInitially = /(user-scalable[\s]*=[\s]*no)|(maximum-scale[\s]*=[\s]*1)[$,\s]/.test( initialContent ); - - $.mobile.zoom = $.extend( {}, { - enabled: !disabledInitially, - locked: false, - disable: function( lock ) { - if( !disabledInitially && !$.mobile.zoom.locked ){ - meta.attr( "content", disabledZoom ); - $.mobile.zoom.enabled = false; - $.mobile.zoom.locked = lock || false; - } - }, - enable: function( unlock ) { - if( !disabledInitially && ( !$.mobile.zoom.locked || unlock === true ) ){ - meta.attr( "content", enabledZoom ); - $.mobile.zoom.enabled = true; - $.mobile.zoom.locked = false; - } - }, - restore: function() { - if( !disabledInitially ){ - meta.attr( "content", initialContent ); - $.mobile.zoom.enabled = true; - } - } - }); - -}( jQuery )); - -(function( $, undefined ) { - -$.widget( "mobile.textinput", $.mobile.widget, { - options: { - theme: null, - // This option defaults to true on iOS devices. - preventFocusZoom: /iPhone|iPad|iPod/.test( navigator.platform ) && navigator.userAgent.indexOf( "AppleWebKit" ) > -1, - initSelector: "input[type='text'], input[type='search'], :jqmData(type='search'), input[type='number'], :jqmData(type='number'), input[type='password'], input[type='email'], input[type='url'], input[type='tel'], textarea, input[type='time'], input[type='date'], input[type='month'], input[type='week'], input[type='datetime'], input[type='datetime-local'], input[type='color'], input:not([type])", - clearSearchButtonText: "clear text" - }, - - _create: function() { - - var input = this.element, - o = this.options, - theme = o.theme || $.mobile.getInheritedTheme( this.element, "c" ), - themeclass = " ui-body-" + theme, - mini = input.jqmData("mini") == true, - miniclass = mini ? " ui-mini" : "", - focusedEl, clearbtn; - - $( "label[for='" + input.attr( "id" ) + "']" ).addClass( "ui-input-text" ); - - focusedEl = input.addClass("ui-input-text ui-body-"+ theme ); - - // XXX: Temporary workaround for issue 785 (Apple bug 8910589). - // Turn off autocorrect and autocomplete on non-iOS 5 devices - // since the popup they use can't be dismissed by the user. Note - // that we test for the presence of the feature by looking for - // the autocorrect property on the input element. We currently - // have no test for iOS 5 or newer so we're temporarily using - // the touchOverflow support flag for jQM 1.0. Yes, I feel dirty. - jblas - if ( typeof input[0].autocorrect !== "undefined" && !$.support.touchOverflow ) { - // Set the attribute instead of the property just in case there - // is code that attempts to make modifications via HTML. - input[0].setAttribute( "autocorrect", "off" ); - input[0].setAttribute( "autocomplete", "off" ); - } - - - //"search" input widget - if ( input.is( "[type='search'],:jqmData(type='search')" ) ) { - - focusedEl = input.wrap( "" ).parent(); - clearbtn = $( "
      " + o.clearSearchButtonText + "" ) - .bind('click', function( event ) { - input - .val( "" ) - .focus() - .trigger( "change" ); - clearbtn.addClass( "ui-input-clear-hidden" ); - event.preventDefault(); - }) - .appendTo( focusedEl ) - .buttonMarkup({ - icon: "delete", - iconpos: "notext", - corners: true, - shadow: true, - mini: mini - }); - - function toggleClear() { - setTimeout(function() { - clearbtn.toggleClass( "ui-input-clear-hidden", !input.val() ); - }, 0); - } - - toggleClear(); - - input.bind('paste cut keyup focus change blur', toggleClear); - - } else { - input.addClass( "ui-corner-all ui-shadow-inset" + themeclass + miniclass ); - } - - input.focus(function() { - focusedEl.addClass( $.mobile.focusClass ); - }) - .blur(function(){ - focusedEl.removeClass( $.mobile.focusClass ); - }) - // In many situations, iOS will zoom into the select upon tap, this prevents that from happening - .bind( "focus", function() { - if( o.preventFocusZoom ){ - $.mobile.zoom.disable( true ); - } - }) - .bind( "blur", function() { - if( o.preventFocusZoom ){ - $.mobile.zoom.enable( true ); - } - }); - - // Autogrow - if ( input.is( "textarea" ) ) { - var extraLineHeight = 15, - keyupTimeoutBuffer = 100, - keyup = function() { - var scrollHeight = input[ 0 ].scrollHeight, - clientHeight = input[ 0 ].clientHeight; - - if ( clientHeight < scrollHeight ) { - input.height(scrollHeight + extraLineHeight); - } - }, - keyupTimeout; - - input.keyup(function() { - clearTimeout( keyupTimeout ); - keyupTimeout = setTimeout( keyup, keyupTimeoutBuffer ); - }); - - // binding to pagechange here ensures that for pages loaded via - // ajax the height is recalculated without user input - $( document ).one( "pagechange", keyup ); - - // Issue 509: the browser is not providing scrollHeight properly until the styles load - if ( $.trim( input.val() ) ) { - // bind to the window load to make sure the height is calculated based on BOTH - // the DOM and CSS - $( window ).load( keyup ); - } - } - }, - - disable: function(){ - ( this.element.attr( "disabled", true ).is( "[type='search'],:jqmData(type='search')" ) ? - this.element.parent() : this.element ).addClass( "ui-disabled" ); - }, - - enable: function(){ - ( this.element.attr( "disabled", false).is( "[type='search'],:jqmData(type='search')" ) ? - this.element.parent() : this.element ).removeClass( "ui-disabled" ); - } -}); - -//auto self-init widgets -$( document ).bind( "pagecreate create", function( e ){ - $.mobile.textinput.prototype.enhanceWithin( e.target, true ); -}); - -})( jQuery ); - -(function( $, undefined ) { - -$.mobile.listview.prototype.options.filter = false; -$.mobile.listview.prototype.options.filterPlaceholder = "Filter items..."; -$.mobile.listview.prototype.options.filterTheme = "c"; -$.mobile.listview.prototype.options.filterCallback = function( text, searchValue ){ - return text.toLowerCase().indexOf( searchValue ) === -1; -}; - -$( document ).delegate( ":jqmData(role='listview')", "listviewcreate", function() { - - var list = $( this ), - listview = list.data( "listview" ); - - if ( !listview.options.filter ) { - return; - } - - var wrapper = $( "
      ", { - "class": "ui-listview-filter ui-bar-" + listview.options.filterTheme, - "role": "search" - }), - search = $( "", { - placeholder: listview.options.filterPlaceholder - }) - .attr( "data-" + $.mobile.ns + "type", "search" ) - .jqmData( "lastval", "" ) - .bind( "keyup change", function() { - - var $this = $(this), - val = this.value.toLowerCase(), - listItems = null, - lastval = $this.jqmData( "lastval" ) + "", - childItems = false, - itemtext = "", - item; - - // Change val as lastval for next execution - $this.jqmData( "lastval" , val ); - if ( val.length < lastval.length || val.indexOf(lastval) !== 0 ) { - - // Removed chars or pasted something totally different, check all items - listItems = list.children(); - } else { - - // Only chars added, not removed, only use visible subset - listItems = list.children( ":not(.ui-screen-hidden)" ); - } - - if ( val ) { - - // This handles hiding regular rows without the text we search for - // and any list dividers without regular rows shown under it - - for ( var i = listItems.length - 1; i >= 0; i-- ) { - item = $( listItems[ i ] ); - itemtext = item.jqmData( "filtertext" ) || item.text(); - - if ( item.is( "li:jqmData(role=list-divider)" ) ) { - - item.toggleClass( "ui-filter-hidequeue" , !childItems ); - - // New bucket! - childItems = false; - - } else if ( listview.options.filterCallback( itemtext, val ) ) { - - //mark to be hidden - item.toggleClass( "ui-filter-hidequeue" , true ); - } else { - - // There's a shown item in the bucket - childItems = true; - } - } - - // Show items, not marked to be hidden - listItems - .filter( ":not(.ui-filter-hidequeue)" ) - .toggleClass( "ui-screen-hidden", false ); - - // Hide items, marked to be hidden - listItems - .filter( ".ui-filter-hidequeue" ) - .toggleClass( "ui-screen-hidden", true ) - .toggleClass( "ui-filter-hidequeue", false ); - - } else { - - //filtervalue is empty => show all - listItems.toggleClass( "ui-screen-hidden", false ); - } - listview._refreshCorners(); - }) - .appendTo( wrapper ) - .textinput(); - - if ( listview.options.inset ) { - wrapper.addClass( "ui-listview-filter-inset" ); - } - - wrapper.bind( "submit", function() { - return false; - }) - .insertBefore( list ); -}); - -})( jQuery ); - -( function( $, undefined ) { - -$.widget( "mobile.slider", $.mobile.widget, { - options: { - theme: null, - trackTheme: null, - disabled: false, - initSelector: "input[type='range'], :jqmData(type='range'), :jqmData(role='slider')", - mini: false - }, - - _create: function() { - - // TODO: Each of these should have comments explain what they're for - var self = this, - - control = this.element, - - parentTheme = $.mobile.getInheritedTheme( control, "c" ), - - theme = this.options.theme || parentTheme, - - trackTheme = this.options.trackTheme || parentTheme, - - cType = control[ 0 ].nodeName.toLowerCase(), - - selectClass = ( cType == "select" ) ? "ui-slider-switch" : "", - - controlID = control.attr( "id" ), - - $label = $( "[for='" + controlID + "']" ), - - labelID = $label.attr( "id" ) || controlID + "-label", - - label = $label.attr( "id", labelID ), - - val = function() { - return cType == "input" ? parseFloat( control.val() ) : control[0].selectedIndex; - }, - - min = cType == "input" ? parseFloat( control.attr( "min" ) ) : 0, - - max = cType == "input" ? parseFloat( control.attr( "max" ) ) : control.find( "option" ).length-1, - - step = window.parseFloat( control.attr( "step" ) || 1 ), - - inlineClass = ( this.options.inline || control.jqmData("inline") == true ) ? " ui-slider-inline" : "", - - miniClass = ( this.options.mini || control.jqmData("mini") ) ? " ui-slider-mini" : "", - - - domHandle = document.createElement('a'), - handle = $( domHandle ), - domSlider = document.createElement('div'), - slider = $( domSlider ), - - valuebg = control.jqmData("highlight") && cType != "select" ? (function() { - var bg = document.createElement('div'); - bg.className = 'ui-slider-bg ' + $.mobile.activeBtnClass + ' ui-btn-corner-all'; - return $( bg ).prependTo( slider ); - })() : false, - - options; - - domHandle.setAttribute( 'href', "#" ); - domSlider.setAttribute('role','application'); - domSlider.className = ['ui-slider ',selectClass," ui-btn-down-",trackTheme,' ui-btn-corner-all', inlineClass, miniClass].join(""); - domHandle.className = 'ui-slider-handle'; - domSlider.appendChild(domHandle); - - handle.buttonMarkup({ corners: true, theme: theme, shadow: true }) - .attr({ - "role": "slider", - "aria-valuemin": min, - "aria-valuemax": max, - "aria-valuenow": val(), - "aria-valuetext": val(), - "title": val(), - "aria-labelledby": labelID - }); - - $.extend( this, { - slider: slider, - handle: handle, - valuebg: valuebg, - dragging: false, - beforeStart: null, - userModified: false, - mouseMoved: false - }); - - if ( cType == "select" ) { - var wrapper = document.createElement('div'); - wrapper.className = 'ui-slider-inneroffset'; - - for(var j = 0,length = domSlider.childNodes.length;j < length;j++){ - wrapper.appendChild(domSlider.childNodes[j]); - } - - domSlider.appendChild(wrapper); - - // slider.wrapInner( "
      " ); - - // make the handle move with a smooth transition - handle.addClass( "ui-slider-handle-snapping" ); - - options = control.find( "option" ); - - for(var i = 0, optionsCount = options.length; i < optionsCount; i++){ - var side = !i ? "b":"a", - sliderTheme = !i ? " ui-btn-down-" + trackTheme :( " " + $.mobile.activeBtnClass ), - sliderLabel = document.createElement('div'), - sliderImg = document.createElement('span'); - - sliderImg.className = ['ui-slider-label ui-slider-label-',side,sliderTheme," ui-btn-corner-all"].join(""); - sliderImg.setAttribute('role','img'); - sliderImg.appendChild(document.createTextNode(options[i].innerHTML)); - $(sliderImg).prependTo( slider ); - } - - self._labels = $( ".ui-slider-label", slider ); - - } - - label.addClass( "ui-slider" ); - - // monitor the input for updated values - control.addClass( cType === "input" ? "ui-slider-input" : "ui-slider-switch" ) - .change( function() { - // if the user dragged the handle, the "change" event was triggered from inside refresh(); don't call refresh() again - if (!self.mouseMoved) { - self.refresh( val(), true ); - } - }) - .keyup( function() { // necessary? - self.refresh( val(), true, true ); - }) - .blur( function() { - self.refresh( val(), true ); - }); - - // prevent screen drag when slider activated - $( document ).bind( "vmousemove", function( event ) { - if ( self.dragging ) { - // self.mouseMoved must be updated before refresh() because it will be used in the control "change" event - self.mouseMoved = true; - - if ( cType === "select" ) { - // make the handle move in sync with the mouse - handle.removeClass( "ui-slider-handle-snapping" ); - } - - self.refresh( event ); - - // only after refresh() you can calculate self.userModified - self.userModified = self.beforeStart !== control[0].selectedIndex; - return false; - } - }); - - slider.bind( "vmousedown", function( event ) { - self.dragging = true; - self.userModified = false; - self.mouseMoved = false; - - if ( cType === "select" ) { - self.beforeStart = control[0].selectedIndex; - } - - self.refresh( event ); - return false; - }) - .bind( "vclick", false ); - - slider.add( document ) - .bind( "vmouseup", function() { - if ( self.dragging ) { - - self.dragging = false; - - if ( cType === "select") { - - // make the handle move with a smooth transition - handle.addClass( "ui-slider-handle-snapping" ); - - if ( self.mouseMoved ) { - - // this is a drag, change the value only if user dragged enough - if ( self.userModified ) { - self.refresh( self.beforeStart == 0 ? 1 : 0 ); - } - else { - self.refresh( self.beforeStart ); - } - - } - else { - // this is just a click, change the value - self.refresh( self.beforeStart == 0 ? 1 : 0 ); - } - - } - - self.mouseMoved = false; - - return false; - } - }); - - slider.insertAfter( control ); - - // Only add focus class to toggle switch, sliders get it automatically from ui-btn - if( cType == 'select' ) { - this.handle.bind({ - focus: function() { - slider.addClass( $.mobile.focusClass ); - }, - - blur: function() { - slider.removeClass( $.mobile.focusClass ); - } - }); - } - - this.handle.bind({ - // NOTE force focus on handle - vmousedown: function() { - $( this ).focus(); - }, - - vclick: false, - - keydown: function( event ) { - var index = val(); - - if ( self.options.disabled ) { - return; - } - - // In all cases prevent the default and mark the handle as active - switch ( event.keyCode ) { - case $.mobile.keyCode.HOME: - case $.mobile.keyCode.END: - case $.mobile.keyCode.PAGE_UP: - case $.mobile.keyCode.PAGE_DOWN: - case $.mobile.keyCode.UP: - case $.mobile.keyCode.RIGHT: - case $.mobile.keyCode.DOWN: - case $.mobile.keyCode.LEFT: - event.preventDefault(); - - if ( !self._keySliding ) { - self._keySliding = true; - $( this ).addClass( "ui-state-active" ); - } - break; - } - - // move the slider according to the keypress - switch ( event.keyCode ) { - case $.mobile.keyCode.HOME: - self.refresh( min ); - break; - case $.mobile.keyCode.END: - self.refresh( max ); - break; - case $.mobile.keyCode.PAGE_UP: - case $.mobile.keyCode.UP: - case $.mobile.keyCode.RIGHT: - self.refresh( index + step ); - break; - case $.mobile.keyCode.PAGE_DOWN: - case $.mobile.keyCode.DOWN: - case $.mobile.keyCode.LEFT: - self.refresh( index - step ); - break; - } - }, // remove active mark - - keyup: function( event ) { - if ( self._keySliding ) { - self._keySliding = false; - $( this ).removeClass( "ui-state-active" ); - } - } - }); - - this.refresh(undefined, undefined, true); - }, - - refresh: function( val, isfromControl, preventInputUpdate ) { - - if ( this.options.disabled || this.element.attr('disabled')) { - this.disable(); - } - - var control = this.element, percent, - cType = control[0].nodeName.toLowerCase(), - min = cType === "input" ? parseFloat( control.attr( "min" ) ) : 0, - max = cType === "input" ? parseFloat( control.attr( "max" ) ) : control.find( "option" ).length - 1, - step = (cType === "input" && parseFloat( control.attr( "step" ) ) > 0) ? parseFloat(control.attr("step")) : 1; - - if ( typeof val === "object" ) { - var data = val, - // a slight tolerance helped get to the ends of the slider - tol = 8; - if ( !this.dragging || - data.pageX < this.slider.offset().left - tol || - data.pageX > this.slider.offset().left + this.slider.width() + tol ) { - return; - } - percent = Math.round( ( ( data.pageX - this.slider.offset().left ) / this.slider.width() ) * 100 ); - } else { - if ( val == null ) { - val = cType === "input" ? parseFloat( control.val() || 0 ) : control[0].selectedIndex; - } - percent = ( parseFloat( val ) - min ) / ( max - min ) * 100; - } - - if ( isNaN( percent ) ) { - return; - } - - if ( percent < 0 ) { - percent = 0; - } - - if ( percent > 100 ) { - percent = 100; - } - - var newval = ( percent / 100 ) * ( max - min ) + min; - - //from jQuery UI slider, the following source will round to the nearest step - var valModStep = ( newval - min ) % step; - var alignValue = newval - valModStep; - - if ( Math.abs( valModStep ) * 2 >= step ) { - alignValue += ( valModStep > 0 ) ? step : ( -step ); - } - // Since JavaScript has problems with large floats, round - // the final value to 5 digits after the decimal point (see jQueryUI: #4124) - newval = parseFloat( alignValue.toFixed(5) ); - - if ( newval < min ) { - newval = min; - } - - if ( newval > max ) { - newval = max; - } - - this.handle.css( "left", percent + "%" ); - this.handle.attr( { - "aria-valuenow": cType === "input" ? newval : control.find( "option" ).eq( newval ).attr( "value" ), - "aria-valuetext": cType === "input" ? newval : control.find( "option" ).eq( newval ).getEncodedText(), - title: cType === "input" ? newval : control.find( "option" ).eq( newval ).getEncodedText() - }); - this.valuebg && this.valuebg.css( "width", percent + "%" ); - - // drag the label widths - if ( this._labels ) { - var handlePercent = this.handle.width() / this.slider.width() * 100, - aPercent = percent && handlePercent + ( 100 - handlePercent ) * percent / 100, - bPercent = percent === 100 ? 0 : Math.min( handlePercent + 100 - aPercent, 100 ); - - this._labels.each(function(){ - var ab = $(this).is( ".ui-slider-label-a" ); - $( this ).width( ( ab ? aPercent : bPercent ) + "%" ); - }); - } - - if ( !preventInputUpdate ) { - var valueChanged = false; - - // update control"s value - if ( cType === "input" ) { - valueChanged = control.val() !== newval; - control.val( newval ); - } else { - valueChanged = control[ 0 ].selectedIndex !== newval; - control[ 0 ].selectedIndex = newval; - } - if ( !isfromControl && valueChanged ) { - control.trigger( "change" ); - } - } - }, - - enable: function() { - this.element.attr( "disabled", false ); - this.slider.removeClass( "ui-disabled" ).attr( "aria-disabled", false ); - return this._setOption( "disabled", false ); - }, - - disable: function() { - this.element.attr( "disabled", true ); - this.slider.addClass( "ui-disabled" ).attr( "aria-disabled", true ); - return this._setOption( "disabled", true ); - } - -}); - -//auto self-init widgets -$( document ).bind( "pagecreate create", function( e ){ - $.mobile.slider.prototype.enhanceWithin( e.target, true ); -}); - -})( jQuery ); - -(function( $, undefined ) { - -$.widget( "mobile.selectmenu", $.mobile.widget, { - options: { - theme: null, - disabled: false, - icon: "arrow-d", - iconpos: "right", - inline: false, - corners: true, - shadow: true, - iconshadow: true, - overlayTheme: "a", - hidePlaceholderMenuItems: true, - closeText: "Close", - nativeMenu: true, - // This option defaults to true on iOS devices. - preventFocusZoom: /iPhone|iPad|iPod/.test( navigator.platform ) && navigator.userAgent.indexOf( "AppleWebKit" ) > -1, - initSelector: "select:not(:jqmData(role='slider'))", - mini: false - }, - - _button: function(){ - return $( "
      " ); - }, - - _setDisabled: function( value ) { - this.element.attr( "disabled", value ); - this.button.attr( "aria-disabled", value ); - return this._setOption( "disabled", value ); - }, - - _focusButton : function() { - var self = this; - - setTimeout( function() { - self.button.focus(); - }, 40); - }, - - _selectOptions: function() { - return this.select.find( "option" ); - }, - - // setup items that are generally necessary for select menu extension - _preExtension: function(){ - var classes = ""; - // TODO: Post 1.1--once we have time to test thoroughly--any classes manually applied to the original element should be carried over to the enhanced element, with an `-enhanced` suffix. See https://github.com/jquery/jquery-mobile/issues/3577 - /* if( $el[0].className.length ) { - classes = $el[0].className; - } */ - if( !!~this.element[0].className.indexOf( "ui-btn-left" ) ) { - classes = " ui-btn-left"; - } - - if( !!~this.element[0].className.indexOf( "ui-btn-right" ) ) { - classes = " ui-btn-right"; - } - - this.select = this.element.wrap( "
      " ); - this.selectID = this.select.attr( "id" ); - this.label = $( "label[for='"+ this.selectID +"']" ).addClass( "ui-select" ); - this.isMultiple = this.select[ 0 ].multiple; - if ( !this.options.theme ) { - this.options.theme = $.mobile.getInheritedTheme( this.select, "c" ); - } - }, - - _create: function() { - this._preExtension(); - - // Allows for extension of the native select for custom selects and other plugins - // see select.custom for example extension - // TODO explore plugin registration - this._trigger( "beforeCreate" ); - - this.button = this._button(); - - var self = this, - - options = this.options, - - inline = options.inline || this.select.jqmData( "inline" ), - mini = options.mini || this.select.jqmData( "mini" ), - iconpos = options.icon ? ( options.iconpos || this.select.jqmData( "iconpos" ) ) : false, - - // IE throws an exception at options.item() function when - // there is no selected item - // select first in this case - selectedIndex = this.select[ 0 ].selectedIndex == -1 ? 0 : this.select[ 0 ].selectedIndex, - - // TODO values buttonId and menuId are undefined here - button = this.button - .text( $( this.select[ 0 ].options.item( selectedIndex ) ).text() ) - .insertBefore( this.select ) - .buttonMarkup( { - theme: options.theme, - icon: options.icon, - iconpos: iconpos, - inline: inline, - corners: options.corners, - shadow: options.shadow, - iconshadow: options.iconshadow, - mini: mini - }); - - // Opera does not properly support opacity on select elements - // In Mini, it hides the element, but not its text - // On the desktop,it seems to do the opposite - // for these reasons, using the nativeMenu option results in a full native select in Opera - if ( options.nativeMenu && window.opera && window.opera.version ) { - button.addClass( "ui-select-nativeonly" ); - } - - // Add counter for multi selects - if ( this.isMultiple ) { - this.buttonCount = $( "" ) - .addClass( "ui-li-count ui-btn-up-c ui-btn-corner-all" ) - .hide() - .appendTo( button.addClass('ui-li-has-count') ); - } - - // Disable if specified - if ( options.disabled || this.element.attr('disabled')) { - this.disable(); - } - - // Events on native select - this.select.change( function() { - self.refresh(); - }); - - this.build(); - }, - - build: function() { - var self = this; - - this.select - .appendTo( self.button ) - .bind( "vmousedown", function() { - // Add active class to button - self.button.addClass( $.mobile.activeBtnClass ); - }) - .bind( "focus", function() { - self.button.addClass( $.mobile.focusClass ); - }) - .bind( "blur", function() { - self.button.removeClass( $.mobile.focusClass ); - }) - .bind( "focus vmouseover", function() { - self.button.trigger( "vmouseover" ); - }) - .bind( "vmousemove", function() { - // Remove active class on scroll/touchmove - self.button.removeClass( $.mobile.activeBtnClass ); - }) - .bind( "change blur vmouseout", function() { - self.button.trigger( "vmouseout" ) - .removeClass( $.mobile.activeBtnClass ); - }) - .bind( "change blur", function() { - self.button.removeClass( "ui-btn-down-" + self.options.theme ); - }); - - // In many situations, iOS will zoom into the select upon tap, this prevents that from happening - self.button.bind( "vmousedown", function() { - if( self.options.preventFocusZoom ){ - $.mobile.zoom.disable( true ); - } - }) - .bind( "mouseup", function() { - if( self.options.preventFocusZoom ){ - $.mobile.zoom.enable( true ); - } - }); - }, - - selected: function() { - return this._selectOptions().filter( ":selected" ); - }, - - selectedIndices: function() { - var self = this; - - return this.selected().map( function() { - return self._selectOptions().index( this ); - }).get(); - }, - - setButtonText: function() { - var self = this, selected = this.selected(); - - this.button.find( ".ui-btn-text" ).text( function() { - if ( !self.isMultiple ) { - return selected.text(); - } - - return selected.length ? selected.map( function() { - return $( this ).text(); - }).get().join( ", " ) : self.placeholder; - }); - }, - - setButtonCount: function() { - var selected = this.selected(); - - // multiple count inside button - if ( this.isMultiple ) { - this.buttonCount[ selected.length > 1 ? "show" : "hide" ]().text( selected.length ); - } - }, - - refresh: function() { - this.setButtonText(); - this.setButtonCount(); - }, - - // open and close preserved in native selects - // to simplify users code when looping over selects - open: $.noop, - close: $.noop, - - disable: function() { - this._setDisabled( true ); - this.button.addClass( "ui-disabled" ); - }, - - enable: function() { - this._setDisabled( false ); - this.button.removeClass( "ui-disabled" ); - } -}); - -//auto self-init widgets -$( document ).bind( "pagecreate create", function( e ){ - $.mobile.selectmenu.prototype.enhanceWithin( e.target, true ); -}); -})( jQuery ); - -/* -* custom "selectmenu" plugin -*/ - -(function( $, undefined ) { - var extendSelect = function( widget ){ - - var select = widget.select, - selectID = widget.selectID, - label = widget.label, - thisPage = widget.select.closest( ".ui-page" ), - screen = $( "
      ", {"class": "ui-selectmenu-screen ui-screen-hidden"} ).appendTo( thisPage ), - selectOptions = widget._selectOptions(), - isMultiple = widget.isMultiple = widget.select[ 0 ].multiple, - buttonId = selectID + "-button", - menuId = selectID + "-menu", - menuPage = $( "
      " + - "
      " + - "
      " + label.getEncodedText() + "
      "+ - "
      "+ - "
      "+ - "
      " ), - - listbox = $("
      ", { "class": "ui-selectmenu ui-selectmenu-hidden ui-overlay-shadow ui-corner-all ui-body-" + widget.options.overlayTheme + " " + $.mobile.defaultDialogTransition } ).insertAfter(screen), - - list = $( "
        ", { - "class": "ui-selectmenu-list", - "id": menuId, - "role": "listbox", - "aria-labelledby": buttonId - }).attr( "data-" + $.mobile.ns + "theme", widget.options.theme ).appendTo( listbox ), - - header = $( "
        ", { - "class": "ui-header ui-bar-" + widget.options.theme - }).prependTo( listbox ), - - headerTitle = $( "

        ", { - "class": "ui-title" - }).appendTo( header ), - - menuPageContent, - menuPageClose, - headerClose; - - if( widget.isMultiple ) { - headerClose = $( "", { - "text": widget.options.closeText, - "href": "#", - "class": "ui-btn-left" - }).attr( "data-" + $.mobile.ns + "iconpos", "notext" ).attr( "data-" + $.mobile.ns + "icon", "delete" ).appendTo( header ).buttonMarkup(); - } - - $.extend( widget, { - select: widget.select, - selectID: selectID, - buttonId: buttonId, - menuId: menuId, - thisPage: thisPage, - menuPage: menuPage, - label: label, - screen: screen, - selectOptions: selectOptions, - isMultiple: isMultiple, - theme: widget.options.theme, - listbox: listbox, - list: list, - header: header, - headerTitle: headerTitle, - headerClose: headerClose, - menuPageContent: menuPageContent, - menuPageClose: menuPageClose, - placeholder: "", - - build: function() { - var self = this; - - // Create list from select, update state - self.refresh(); - - self.select.attr( "tabindex", "-1" ).focus(function() { - $( this ).blur(); - self.button.focus(); - }); - - // Button events - self.button.bind( "vclick keydown" , function( event ) { - if ( event.type == "vclick" || - event.keyCode && ( event.keyCode === $.mobile.keyCode.ENTER || - event.keyCode === $.mobile.keyCode.SPACE ) ) { - - self.open(); - event.preventDefault(); - } - }); - - // Events for list items - self.list.attr( "role", "listbox" ) - .bind( "focusin", function( e ){ - $( e.target ) - .attr( "tabindex", "0" ) - .trigger( "vmouseover" ); - - }) - .bind( "focusout", function( e ){ - $( e.target ) - .attr( "tabindex", "-1" ) - .trigger( "vmouseout" ); - }) - .delegate( "li:not(.ui-disabled, .ui-li-divider)", "click", function( event ) { - - // index of option tag to be selected - var oldIndex = self.select[ 0 ].selectedIndex, - newIndex = self.list.find( "li:not(.ui-li-divider)" ).index( this ), - option = self._selectOptions().eq( newIndex )[ 0 ]; - - // toggle selected status on the tag for multi selects - option.selected = self.isMultiple ? !option.selected : true; - - // toggle checkbox class for multiple selects - if ( self.isMultiple ) { - $( this ).find( ".ui-icon" ) - .toggleClass( "ui-icon-checkbox-on", option.selected ) - .toggleClass( "ui-icon-checkbox-off", !option.selected ); - } - - // trigger change if value changed - if ( self.isMultiple || oldIndex !== newIndex ) { - self.select.trigger( "change" ); - } - - // hide custom select for single selects only - otherwise focus clicked item - // We need to grab the clicked item the hard way, because the list may have been rebuilt - if ( self.isMultiple ) { - self.list.find( "li:not(.ui-li-divider)" ).eq( newIndex ) - .addClass( "ui-btn-down-" + widget.options.theme ).find( "a" ).first().focus(); - } - else { - self.close(); - } - - event.preventDefault(); - }) - .keydown(function( event ) { //keyboard events for menu items - var target = $( event.target ), - li = target.closest( "li" ), - prev, next; - - // switch logic based on which key was pressed - switch ( event.keyCode ) { - // up or left arrow keys - case 38: - prev = li.prev().not( ".ui-selectmenu-placeholder" ); - - if( prev.is( ".ui-li-divider" ) ) { - prev = prev.prev(); - } - - // if there's a previous option, focus it - if ( prev.length ) { - target - .blur() - .attr( "tabindex", "-1" ); - - prev.addClass( "ui-btn-down-" + widget.options.theme ).find( "a" ).first().focus(); - } - - return false; - break; - - // down or right arrow keys - case 40: - next = li.next(); - - if( next.is( ".ui-li-divider" ) ) { - next = next.next(); - } - - // if there's a next option, focus it - if ( next.length ) { - target - .blur() - .attr( "tabindex", "-1" ); - - next.addClass( "ui-btn-down-" + widget.options.theme ).find( "a" ).first().focus(); - } - - return false; - break; - - // If enter or space is pressed, trigger click - case 13: - case 32: - target.trigger( "click" ); - - return false; - break; - } - }); - - // button refocus ensures proper height calculation - // by removing the inline style and ensuring page inclusion - self.menuPage.bind( "pagehide", function() { - self.list.appendTo( self.listbox ); - self._focusButton(); - - // TODO centralize page removal binding / handling in the page plugin. - // Suggestion from @jblas to do refcounting - // - // TODO extremely confusing dependency on the open method where the pagehide.remove - // bindings are stripped to prevent the parent page from disappearing. The way - // we're keeping pages in the DOM right now sucks - // - // rebind the page remove that was unbound in the open function - // to allow for the parent page removal from actions other than the use - // of a dialog sized custom select - // - // doing this here provides for the back button on the custom select dialog - $.mobile._bindPageRemove.call( self.thisPage ); - }); - - // Events on "screen" overlay - self.screen.bind( "vclick", function( event ) { - self.close(); - }); - - // Close button on small overlays - if( self.isMultiple ){ - self.headerClose.click( function() { - if ( self.menuType == "overlay" ) { - self.close(); - return false; - } - }); - } - - // track this dependency so that when the parent page - // is removed on pagehide it will also remove the menupage - self.thisPage.addDependents( this.menuPage ); - }, - - _isRebuildRequired: function() { - var list = this.list.find( "li" ), - options = this._selectOptions(); - - // TODO exceedingly naive method to determine difference - // ignores value changes etc in favor of a forcedRebuild - // from the user in the refresh method - return options.text() !== list.text(); - }, - - selected: function() { - return this._selectOptions().filter( ":selected:not(:jqmData(placeholder='true'))" ); - }, - - refresh: function( forceRebuild , foo ){ - var self = this, - select = this.element, - isMultiple = this.isMultiple, - indicies; - - if ( forceRebuild || this._isRebuildRequired() ) { - self._buildList(); - } - - indicies = this.selectedIndices(); - - self.setButtonText(); - self.setButtonCount(); - - self.list.find( "li:not(.ui-li-divider)" ) - .removeClass( $.mobile.activeBtnClass ) - .attr( "aria-selected", false ) - .each(function( i ) { - - if ( $.inArray( i, indicies ) > -1 ) { - var item = $( this ); - - // Aria selected attr - item.attr( "aria-selected", true ); - - // Multiple selects: add the "on" checkbox state to the icon - if ( self.isMultiple ) { - item.find( ".ui-icon" ).removeClass( "ui-icon-checkbox-off" ).addClass( "ui-icon-checkbox-on" ); - } else { - if( item.is( ".ui-selectmenu-placeholder" ) ) { - item.next().addClass( $.mobile.activeBtnClass ); - } else { - item.addClass( $.mobile.activeBtnClass ); - } - } - } - }); - }, - - close: function() { - if ( this.options.disabled || !this.isOpen ) { - return; - } - - var self = this; - - if ( self.menuType == "page" ) { - // doesn't solve the possible issue with calling change page - // where the objects don't define data urls which prevents dialog key - // stripping - changePage has incoming refactor - window.history.back(); - } else { - self.screen.addClass( "ui-screen-hidden" ); - self.listbox.addClass( "ui-selectmenu-hidden" ).removeAttr( "style" ).removeClass( "in" ); - self.list.appendTo( self.listbox ); - self._focusButton(); - } - - // allow the dialog to be closed again - self.isOpen = false; - }, - - open: function() { - if ( this.options.disabled ) { - return; - } - - var self = this, - $window = $( window ), - selfListParent = self.list.parent(), - menuHeight = selfListParent.outerHeight(), - menuWidth = selfListParent.outerWidth(), - activePage = $( ".ui-page-active" ), - tScrollElem = activePage, - scrollTop = $window.scrollTop(), - btnOffset = self.button.offset().top, - screenHeight = $window.height(), - screenWidth = $window.width(); - - //add active class to button - self.button.addClass( $.mobile.activeBtnClass ); - - //remove after delay - setTimeout( function() { - self.button.removeClass( $.mobile.activeBtnClass ); - }, 300); - - function focusMenuItem() { - var selector = self.list.find( "." + $.mobile.activeBtnClass + " a" ); - if ( selector.length === 0 ) { - selector = self.list.find( "li.ui-btn:not(:jqmData(placeholder='true')) a" ); - } - selector.first().focus().closest( "li" ).addClass( "ui-btn-down-" + widget.options.theme ); - } - - if ( menuHeight > screenHeight - 80 || !$.support.scrollTop ) { - - self.menuPage.appendTo( $.mobile.pageContainer ).page(); - self.menuPageContent = menuPage.find( ".ui-content" ); - self.menuPageClose = menuPage.find( ".ui-header a" ); - - // prevent the parent page from being removed from the DOM, - // otherwise the results of selecting a list item in the dialog - // fall into a black hole - self.thisPage.unbind( "pagehide.remove" ); - - //for WebOS/Opera Mini (set lastscroll using button offset) - if ( scrollTop == 0 && btnOffset > screenHeight ) { - self.thisPage.one( "pagehide", function() { - $( this ).jqmData( "lastScroll", btnOffset ); - }); - } - - self.menuPage.one( "pageshow", function() { - focusMenuItem(); - self.isOpen = true; - }); - - self.menuType = "page"; - self.menuPageContent.append( self.list ); - self.menuPage.find("div .ui-title").text(self.label.text()); - $.mobile.changePage( self.menuPage, { - transition: $.mobile.defaultDialogTransition - }); - } else { - self.menuType = "overlay"; - - self.screen.height( $(document).height() ) - .removeClass( "ui-screen-hidden" ); - - // Try and center the overlay over the button - var roomtop = btnOffset - scrollTop, - roombot = scrollTop + screenHeight - btnOffset, - halfheight = menuHeight / 2, - maxwidth = parseFloat( self.list.parent().css( "max-width" ) ), - newtop, newleft; - - if ( roomtop > menuHeight / 2 && roombot > menuHeight / 2 ) { - newtop = btnOffset + ( self.button.outerHeight() / 2 ) - halfheight; - } else { - // 30px tolerance off the edges - newtop = roomtop > roombot ? scrollTop + screenHeight - menuHeight - 30 : scrollTop + 30; - } - - // If the menuwidth is smaller than the screen center is - if ( menuWidth < maxwidth ) { - newleft = ( screenWidth - menuWidth ) / 2; - } else { - - //otherwise insure a >= 30px offset from the left - newleft = self.button.offset().left + self.button.outerWidth() / 2 - menuWidth / 2; - - // 30px tolerance off the edges - if ( newleft < 30 ) { - newleft = 30; - } else if ( (newleft + menuWidth) > screenWidth ) { - newleft = screenWidth - menuWidth - 30; - } - } - - self.listbox.append( self.list ) - .removeClass( "ui-selectmenu-hidden" ) - .css({ - top: newtop, - left: newleft - }) - .addClass( "in" ); - - focusMenuItem(); - - // duplicate with value set in page show for dialog sized selects - self.isOpen = true; - } - }, - - _buildList: function() { - var self = this, - o = this.options, - placeholder = this.placeholder, - needPlaceholder = true, - optgroups = [], - lis = [], - dataIcon = self.isMultiple ? "checkbox-off" : "false"; - - self.list.empty().filter( ".ui-listview" ).listview( "destroy" ); - - var $options = self.select.find("option"), - numOptions = $options.length, - select = this.select[ 0 ], - dataPrefix = 'data-' + $.mobile.ns, - dataIndexAttr = dataPrefix + 'option-index', - dataIconAttr = dataPrefix + 'icon', - dataRoleAttr = dataPrefix + 'role', - dataPlaceholderAttr = dataPrefix + 'placeholder', - fragment = document.createDocumentFragment(), - isPlaceholderItem = false, - optGroup; - - for (var i = 0; i < numOptions;i++, isPlaceholderItem = false){ - var option = $options[i], - $option = $(option), - parent = option.parentNode, - text = $option.text(), - anchor = document.createElement('a'), - classes = []; - - anchor.setAttribute('href','#'); - anchor.appendChild(document.createTextNode(text)); - - // Are we inside an optgroup? - if (parent !== select && parent.nodeName.toLowerCase() === "optgroup"){ - var optLabel = parent.getAttribute('label'); - if ( optLabel != optGroup) { - var divider = document.createElement('li'); - divider.setAttribute(dataRoleAttr,'list-divider'); - divider.setAttribute('role','option'); - divider.setAttribute('tabindex','-1'); - divider.appendChild(document.createTextNode(optLabel)); - fragment.appendChild(divider); - optGroup = optLabel; - } - } - - if (needPlaceholder && (!option.getAttribute( "value" ) || text.length == 0 || $option.jqmData( "placeholder" ))) { - needPlaceholder = false; - isPlaceholderItem = true; - - // If we have identified a placeholder, mark it retroactively in the select as well - option.setAttribute( dataPlaceholderAttr, true ); - if ( o.hidePlaceholderMenuItems ) { - classes.push( "ui-selectmenu-placeholder" ); - } - if (!placeholder) { - placeholder = self.placeholder = text; - } - } - - var item = document.createElement('li'); - if ( option.disabled ) { - classes.push( "ui-disabled" ); - item.setAttribute('aria-disabled',true); - } - item.setAttribute(dataIndexAttr,i); - item.setAttribute(dataIconAttr,dataIcon); - if ( isPlaceholderItem ) { - item.setAttribute( dataPlaceholderAttr, true ); - } - item.className = classes.join(" "); - item.setAttribute('role','option'); - anchor.setAttribute('tabindex','-1'); - item.appendChild(anchor); - fragment.appendChild(item); - } - - self.list[0].appendChild(fragment); - - // Hide header if it's not a multiselect and there's no placeholder - if ( !this.isMultiple && !placeholder.length ) { - this.header.hide(); - } else { - this.headerTitle.text( this.placeholder ); - } - - // Now populated, create listview - self.list.listview(); - }, - - _button: function(){ - return $( "", { - "href": "#", - "role": "button", - // TODO value is undefined at creation - "id": this.buttonId, - "aria-haspopup": "true", - - // TODO value is undefined at creation - "aria-owns": this.menuId - }); - } - }); - }; - - // issue #3894 - core doesn't triggered events on disabled delegates - $( document ).bind( "selectmenubeforecreate", function( event ){ - var selectmenuWidget = $( event.target ).data( "selectmenu" ); - - if( !selectmenuWidget.options.nativeMenu ){ - extendSelect( selectmenuWidget ); - } - }); -})( jQuery ); - -(function( $, undefined ) { - - - $.widget( "mobile.fixedtoolbar", $.mobile.widget, { - options: { - visibleOnPageShow: true, - disablePageZoom: true, - transition: "slide", //can be none, fade, slide (slide maps to slideup or slidedown) - fullscreen: false, - tapToggle: true, - tapToggleBlacklist: "a, button, input, select, textarea, .ui-header-fixed, .ui-footer-fixed", - hideDuringFocus: "input, textarea, select", - updatePagePadding: true, - trackPersistentToolbars: true, - - // Browser detection! Weeee, here we go... - // Unfortunately, position:fixed is costly, not to mention probably impossible, to feature-detect accurately. - // Some tests exist, but they currently return false results in critical devices and browsers, which could lead to a broken experience. - // Testing fixed positioning is also pretty obtrusive to page load, requiring injected elements and scrolling the window - // The following function serves to rule out some popular browsers with known fixed-positioning issues - // This is a plugin option like any other, so feel free to improve or overwrite it - supportBlacklist: function(){ - var w = window, - ua = navigator.userAgent, - platform = navigator.platform, - // Rendering engine is Webkit, and capture major version - wkmatch = ua.match( /AppleWebKit\/([0-9]+)/ ), - wkversion = !!wkmatch && wkmatch[ 1 ], - ffmatch = ua.match( /Fennec\/([0-9]+)/ ), - ffversion = !!ffmatch && ffmatch[ 1 ], - operammobilematch = ua.match( /Opera Mobi\/([0-9]+)/ ), - omversion = !!operammobilematch && operammobilematch[ 1 ]; - - if( - // iOS 4.3 and older : Platform is iPhone/Pad/Touch and Webkit version is less than 534 (ios5) - ( ( platform.indexOf( "iPhone" ) > -1 || platform.indexOf( "iPad" ) > -1 || platform.indexOf( "iPod" ) > -1 ) && wkversion && wkversion < 534 ) - || - // Opera Mini - ( w.operamini && ({}).toString.call( w.operamini ) === "[object OperaMini]" ) - || - ( operammobilematch && omversion < 7458 ) - || - //Android lte 2.1: Platform is Android and Webkit version is less than 533 (Android 2.2) - ( ua.indexOf( "Android" ) > -1 && wkversion && wkversion < 533 ) - || - // Firefox Mobile before 6.0 - - ( ffversion && ffversion < 6 ) - || - // WebOS less than 3 - ( "palmGetResource" in window && wkversion && wkversion < 534 ) - || - // MeeGo - ( ua.indexOf( "MeeGo" ) > -1 && ua.indexOf( "NokiaBrowser/8.5.0" ) > -1 ) - ){ - return true; - } - - return false; - }, - initSelector: ":jqmData(position='fixed')" - }, - - _create: function() { - - var self = this, - o = self.options, - $el = self.element, - tbtype = $el.is( ":jqmData(role='header')" ) ? "header" : "footer", - $page = $el.closest(".ui-page"); - - // Feature detecting support for - if( o.supportBlacklist() ){ - self.destroy(); - return; - } - - $el.addClass( "ui-"+ tbtype +"-fixed" ); - - // "fullscreen" overlay positioning - if( o.fullscreen ){ - $el.addClass( "ui-"+ tbtype +"-fullscreen" ); - $page.addClass( "ui-page-" + tbtype + "-fullscreen" ); - } - // If not fullscreen, add class to page to set top or bottom padding - else{ - $page.addClass( "ui-page-" + tbtype + "-fixed" ); - } - - self._addTransitionClass(); - self._bindPageEvents(); - self._bindToggleHandlers(); - }, - - _addTransitionClass: function(){ - var tclass = this.options.transition; - - if( tclass && tclass !== "none" ){ - // use appropriate slide for header or footer - if( tclass === "slide" ){ - tclass = this.element.is( ".ui-header" ) ? "slidedown" : "slideup"; - } - - this.element.addClass( tclass ); - } - }, - - _bindPageEvents: function(){ - var self = this, - o = self.options, - $el = self.element; - - //page event bindings - // Fixed toolbars require page zoom to be disabled, otherwise usability issues crop up - // This method is meant to disable zoom while a fixed-positioned toolbar page is visible - $el.closest( ".ui-page" ) - .bind( "pagebeforeshow", function(){ - if( o.disablePageZoom ){ - $.mobile.zoom.disable( true ); - } - if( !o.visibleOnPageShow ){ - self.hide( true ); - } - } ) - .bind( "webkitAnimationStart animationstart updatelayout", function(){ - var thisPage = this; - if( o.updatePagePadding ){ - self.updatePagePadding( thisPage ); - } - }) - .bind( "pageshow", function(){ - var thisPage = this; - self.updatePagePadding( thisPage ); - if( o.updatePagePadding ){ - $( window ).bind( "throttledresize." + self.widgetName, function(){ - self.updatePagePadding( thisPage ); - }); - } - }) - .bind( "pagebeforehide", function( e, ui ){ - if( o.disablePageZoom ){ - $.mobile.zoom.enable( true ); - } - if( o.updatePagePadding ){ - $( window ).unbind( "throttledresize." + self.widgetName ); - } - - if( o.trackPersistentToolbars ){ - var thisFooter = $( ".ui-footer-fixed:jqmData(id)", this ), - thisHeader = $( ".ui-header-fixed:jqmData(id)", this ), - nextFooter = thisFooter.length && ui.nextPage && $( ".ui-footer-fixed:jqmData(id='" + thisFooter.jqmData( "id" ) + "')", ui.nextPage ), - nextHeader = thisHeader.length && ui.nextPage && $( ".ui-header-fixed:jqmData(id='" + thisHeader.jqmData( "id" ) + "')", ui.nextPage ); - - nextFooter = nextFooter || $(); - - if( nextFooter.length || nextHeader.length ){ - - nextFooter.add( nextHeader ).appendTo( $.mobile.pageContainer ); - - ui.nextPage.one( "pageshow", function(){ - nextFooter.add( nextHeader ).appendTo( this ); - }); - } - } - }); - }, - - _visible: true, - - // This will set the content element's top or bottom padding equal to the toolbar's height - updatePagePadding: function( tbPage ) { - var $el = this.element, - header = $el.is( ".ui-header" ); - - // This behavior only applies to "fixed", not "fullscreen" - if( this.options.fullscreen ){ return; } - - tbPage = tbPage || $el.closest( ".ui-page" ); - $( tbPage ).css( "padding-" + ( header ? "top" : "bottom" ), $el.outerHeight() ); - }, - - _useTransition: function( notransition ){ - var $win = $( window ), - $el = this.element, - scroll = $win.scrollTop(), - elHeight = $el.height(), - pHeight = $el.closest( ".ui-page" ).height(), - viewportHeight = $.mobile.getScreenHeight(), - tbtype = $el.is( ":jqmData(role='header')" ) ? "header" : "footer"; - - return !notransition && - ( this.options.transition && this.options.transition !== "none" && - ( - ( tbtype === "header" && !this.options.fullscreen && scroll > elHeight ) || - ( tbtype === "footer" && !this.options.fullscreen && scroll + viewportHeight < pHeight - elHeight ) - ) || this.options.fullscreen - ); - }, - - show: function( notransition ){ - var hideClass = "ui-fixed-hidden", - $el = this.element; - - if( this._useTransition( notransition ) ){ - $el - .removeClass( "out " + hideClass ) - .addClass( "in" ); - } - else { - $el.removeClass( hideClass ); - } - this._visible = true; - }, - - hide: function( notransition ){ - var hideClass = "ui-fixed-hidden", - $el = this.element, - // if it's a slide transition, our new transitions need the reverse class as well to slide outward - outclass = "out" + ( this.options.transition === "slide" ? " reverse" : "" ); - - if( this._useTransition( notransition ) ){ - $el - .addClass( outclass ) - .removeClass( "in" ) - .animationComplete( function(){ - $el.addClass( hideClass ).removeClass( outclass ); - }); - } - else { - $el.addClass( hideClass ).removeClass( outclass ); - } - this._visible = false; - }, - - toggle: function(){ - this[ this._visible ? "hide" : "show" ](); - }, - - _bindToggleHandlers: function(){ - var self = this, - o = self.options, - $el = self.element; - - // tap toggle - $el.closest( ".ui-page" ) - .bind( "vclick", function( e ){ - if( o.tapToggle && !$( e.target ).closest( o.tapToggleBlacklist ).length ){ - self.toggle(); - } - }) - .bind( "focusin focusout", function( e ){ - if( screen.width < 500 && $( e.target ).is( o.hideDuringFocus ) && !$( e.target ).closest( ".ui-header-fixed, .ui-footer-fixed" ).length ){ - self[ ( e.type === "focusin" && self._visible ) ? "hide" : "show" ](); - } - }); - }, - - destroy: function(){ - this.element.removeClass( "ui-header-fixed ui-footer-fixed ui-header-fullscreen ui-footer-fullscreen in out fade slidedown slideup ui-fixed-hidden" ); - this.element.closest( ".ui-page" ).removeClass( "ui-page-header-fixed ui-page-footer-fixed ui-page-header-fullscreen ui-page-footer-fullscreen" ); - } - - }); - - //auto self-init widgets - $( document ) - .bind( "pagecreate create", function( e ){ - - // DEPRECATED in 1.1: support for data-fullscreen=true|false on the page element. - // This line ensures it still works, but we recommend moving the attribute to the toolbars themselves. - if( $( e.target ).jqmData( "fullscreen" ) ){ - $( $.mobile.fixedtoolbar.prototype.options.initSelector, e.target ).not( ":jqmData(fullscreen)" ).jqmData( "fullscreen", true ); - } - - $.mobile.fixedtoolbar.prototype.enhanceWithin( e.target ); - }); - -})( jQuery ); - -( function( $, window ) { - - // This fix addresses an iOS bug, so return early if the UA claims it's something else. - if( !(/iPhone|iPad|iPod/.test( navigator.platform ) && navigator.userAgent.indexOf( "AppleWebKit" ) > -1 ) ){ - return; - } - - var zoom = $.mobile.zoom, - evt, x, y, z, aig; - - function checkTilt( e ){ - evt = e.originalEvent; - aig = evt.accelerationIncludingGravity; - - x = Math.abs( aig.x ); - y = Math.abs( aig.y ); - z = Math.abs( aig.z ); - - // If portrait orientation and in one of the danger zones - if( !window.orientation && ( x > 7 || ( ( z > 6 && y < 8 || z < 8 && y > 6 ) && x > 5 ) ) ){ - if( zoom.enabled ){ - zoom.disable(); - } - } - else if( !zoom.enabled ){ - zoom.enable(); - } - } - - $( window ) - .bind( "orientationchange.iosorientationfix", zoom.enable ) - .bind( "devicemotion.iosorientationfix", checkTilt ); - -}( jQuery, this )); - -( function( $, window, undefined ) { - var $html = $( "html" ), - $head = $( "head" ), - $window = $( window ); - - // trigger mobileinit event - useful hook for configuring $.mobile settings before they're used - $( window.document ).trigger( "mobileinit" ); - - // support conditions - // if device support condition(s) aren't met, leave things as they are -> a basic, usable experience, - // otherwise, proceed with the enhancements - if ( !$.mobile.gradeA() ) { - return; - } - - // override ajaxEnabled on platforms that have known conflicts with hash history updates - // or generally work better browsing in regular http for full page refreshes (BB5, Opera Mini) - if ( $.mobile.ajaxBlacklist ) { - $.mobile.ajaxEnabled = false; - } - - // Add mobile, initial load "rendering" classes to docEl - $html.addClass( "ui-mobile ui-mobile-rendering" ); - - // This is a fallback. If anything goes wrong (JS errors, etc), or events don't fire, - // this ensures the rendering class is removed after 5 seconds, so content is visible and accessible - setTimeout( hideRenderingClass, 5000 ); - - // loading div which appears during Ajax requests - // will not appear if $.mobile.loadingMessage is false - var loaderClass = "ui-loader", - $loader = $( "

        " ); - - // For non-fixed supportin browsers. Position at y center (if scrollTop supported), above the activeBtn (if defined), or just 100px from top - function fakeFixLoader(){ - var activeBtn = $( "." + $.mobile.activeBtnClass ).first(); - - $loader - .css({ - top: $.support.scrollTop && $window.scrollTop() + $window.height() / 2 || - activeBtn.length && activeBtn.offset().top || 100 - }); - } - - // check position of loader to see if it appears to be "fixed" to center - // if not, use abs positioning - function checkLoaderPosition(){ - var offset = $loader.offset(), - scrollTop = $window.scrollTop(), - screenHeight = $.mobile.getScreenHeight(); - - if( offset.top < scrollTop || (offset.top - scrollTop) > screenHeight ) { - $loader.addClass( "ui-loader-fakefix" ); - fakeFixLoader(); - $window - .unbind( "scroll", checkLoaderPosition ) - .bind( "scroll", fakeFixLoader ); - } - } - - //remove initial build class (only present on first pageshow) - function hideRenderingClass(){ - $html.removeClass( "ui-mobile-rendering" ); - } - - $.extend($.mobile, { - // turn on/off page loading message. - showPageLoadingMsg: function( theme, msgText, textonly ) { - $html.addClass( "ui-loading" ); - - if ( $.mobile.loadingMessage ) { - // text visibility from argument takes priority - var textVisible = textonly || $.mobile.loadingMessageTextVisible; - - theme = theme || $.mobile.loadingMessageTheme, - - $loader - .attr( "class", loaderClass + " ui-corner-all ui-body-" + ( theme || "a" ) + " ui-loader-" + ( textVisible ? "verbose" : "default" ) + ( textonly ? " ui-loader-textonly" : "" ) ) - .find( "h1" ) - .text( msgText || $.mobile.loadingMessage ) - .end() - .appendTo( $.mobile.pageContainer ); - - checkLoaderPosition(); - $window.bind( "scroll", checkLoaderPosition ); - } - }, - - hidePageLoadingMsg: function() { - $html.removeClass( "ui-loading" ); - - if( $.mobile.loadingMessage ){ - $loader.removeClass( "ui-loader-fakefix" ); - } - - $( window ).unbind( "scroll", fakeFixLoader ); - $( window ).unbind( "scroll", checkLoaderPosition ); - }, - - // find and enhance the pages in the dom and transition to the first page. - initializePage: function() { - // find present pages - var $pages = $( ":jqmData(role='page'), :jqmData(role='dialog')" ); - - // if no pages are found, create one with body's inner html - if ( !$pages.length ) { - $pages = $( "body" ).wrapInner( "
        " ).children( 0 ); - } - - // add dialogs, set data-url attrs - $pages.each(function() { - var $this = $(this); - - // unless the data url is already set set it to the pathname - if ( !$this.jqmData("url") ) { - $this.attr( "data-" + $.mobile.ns + "url", $this.attr( "id" ) || location.pathname + location.search ); - } - }); - - // define first page in dom case one backs out to the directory root (not always the first page visited, but defined as fallback) - $.mobile.firstPage = $pages.first(); - - // define page container - $.mobile.pageContainer = $pages.first().parent().addClass( "ui-mobile-viewport" ); - - // alert listeners that the pagecontainer has been determined for binding - // to events triggered on it - $window.trigger( "pagecontainercreate" ); - - // cue page loading message - $.mobile.showPageLoadingMsg(); - - //remove initial build class (only present on first pageshow) - hideRenderingClass(); - - // if hashchange listening is disabled, there's no hash deeplink, - // the hash is not valid (contains more than one # or does not start with #) - // or there is no page with that hash, change to the first page in the DOM - // Remember, however, that the hash can also be a path! - if ( ! ( $.mobile.hashListeningEnabled && - $.mobile.path.isHashValid( location.hash ) && - ( $( location.hash + ':jqmData(role="page")' ).length || - $.mobile.path.isPath( location.hash ) ) ) ) { - $.mobile.changePage( $.mobile.firstPage, { transition: "none", reverse: true, changeHash: false, fromHashChange: true } ); - } - // otherwise, trigger a hashchange to load a deeplink - else { - $window.trigger( "hashchange", [ true ] ); - } - } - }); - - // initialize events now, after mobileinit has occurred - $.mobile.navreadyDeferred.resolve(); - - // check which scrollTop value should be used by scrolling to 1 immediately at domready - // then check what the scroll top is. Android will report 0... others 1 - // note that this initial scroll won't hide the address bar. It's just for the check. - $(function() { - window.scrollTo( 0, 1 ); - - // if defaultHomeScroll hasn't been set yet, see if scrollTop is 1 - // it should be 1 in most browsers, but android treats 1 as 0 (for hiding addr bar) - // so if it's 1, use 0 from now on - $.mobile.defaultHomeScroll = ( !$.support.scrollTop || $(window).scrollTop() === 1 ) ? 0 : 1; - - - // TODO: Implement a proper registration mechanism with dependency handling in order to not have exceptions like the one below - //auto self-init widgets for those widgets that have a soft dependency on others - if ( $.fn.controlgroup ) { - $( document ).bind( "pagecreate create", function( e ){ - $( ":jqmData(role='controlgroup')", e.target ) - .jqmEnhanceable() - .controlgroup({ excludeInvisible: false }); - }); - } - - //dom-ready inits - if( $.mobile.autoInitializePage ){ - $.mobile.initializePage(); - } - - // window load event - // hide iOS browser chrome on load - $window.load( $.mobile.silentScroll ); - - if ( !$.support.cssPointerEvents ) { - // IE and Opera don't support CSS pointer-events: none that we use to disable link-based buttons - // by adding the 'ui-disabled' class to them. Using a JavaScript workaround for those browser. - // https://github.com/jquery/jquery-mobile/issues/3558 - - $( document ).delegate( ".ui-disabled", "vclick", - function( e ) { - e.preventDefault(); - e.stopImmediatePropagation(); - } - ); - } - }); -}( jQuery, this )); - - -})); diff --git a/app/assets/javascripts/shared/jquery.mousewheel-3.0.4.pack.js b/app/assets/javascripts/shared/jquery.mousewheel-3.0.4.pack.js deleted file mode 100755 index cb66588..0000000 --- a/app/assets/javascripts/shared/jquery.mousewheel-3.0.4.pack.js +++ /dev/null @@ -1,14 +0,0 @@ -/*! Copyright (c) 2010 Brandon Aaron (http://brandonaaron.net) -* Licensed under the MIT License (LICENSE.txt). -* -* Thanks to: http://adomas.org/javascript-mouse-wheel/ for some pointers. -* Thanks to: Mathias Bank(http://www.mathias-bank.de) for a scope bug fix. -* Thanks to: Seamus Leahy for adding deltaX and deltaY -* -* Version: 3.0.4 -* -* Requires: 1.2.2+ -*/ - -(function(d){function g(a){var b=a||window.event,i=[].slice.call(arguments,1),c=0,h=0,e=0;a=d.event.fix(b);a.type="mousewheel";if(a.wheelDelta)c=a.wheelDelta/120;if(a.detail)c=-a.detail/3;e=c;if(b.axis!==undefined&&b.axis===b.HORIZONTAL_AXIS){e=0;h=-1*c}if(b.wheelDeltaY!==undefined)e=b.wheelDeltaY/120;if(b.wheelDeltaX!==undefined)h=-1*b.wheelDeltaX/120;i.unshift(a,c,h,e);return d.event.handle.apply(this,i)}var f=["DOMMouseScroll","mousewheel"];d.event.special.mousewheel={setup:function(){if(this.addEventListener)for(var a= -f.length;a;)this.addEventListener(f[--a],g,false);else this.onmousewheel=g},teardown:function(){if(this.removeEventListener)for(var a=f.length;a;)this.removeEventListener(f[--a],g,false);else this.onmousewheel=null}};d.fn.extend({mousewheel:function(a){return a?this.bind("mousewheel",a):this.trigger("mousewheel")},unmousewheel:function(a){return this.unbind("mousewheel",a)}})})(jQuery); \ No newline at end of file diff --git a/app/assets/javascripts/shared/jquery.strings.js b/app/assets/javascripts/shared/jquery.strings.js deleted file mode 100644 index 9252ca7..0000000 --- a/app/assets/javascripts/shared/jquery.strings.js +++ /dev/null @@ -1,291 +0,0 @@ -/* - jQuery strings - 0.3 - http://code.google.com/p/jquery-utils/ - - (c) Maxime Haineault - http://haineault.com - - MIT License (http://www.opensource.org/licenses/mit-license.php) - - Implementation of Python3K advanced string formatting - http://www.python.org/dev/peps/pep-3101/ - - Documentation: http://code.google.com/p/jquery-utils/wiki/StringFormat - -*/ -(function($){ - var strings = { - strConversion: { - // tries to translate any objects type into string gracefully - __repr: function(i){ - switch(this.__getType(i)) { - case 'array':case 'date':case 'number': - return i.toString(); - case 'object': - var o = []; - for (x=0; x 0) { - o = new Array(Math.ceil(l / p.length)).join(p).substr(0, t = !t ? l : t == 1 ? 0 : Math.ceil(l / 2)) + str + p.substr(0, l - t); - } - return o; - }, - __getInput: function(arg, args) { - var key = arg.getKey(); - switch(this.__getType(args)){ - case 'object': // Thanks to Jonathan Works for the patch - var keys = key.split('.'); - var obj = args; - for(var subkey = 0; subkey < keys.length; subkey++){ - obj = obj[keys[subkey]]; - } - if (typeof(obj) != 'undefined') { - if (strings.strConversion.__getType(obj) == 'array') { - return arg.getFormat().match(/\.\*/) && obj[1] || obj; - } - return obj; - } - else { - // TODO: try by numerical index - } - break; - case 'array': - key = parseInt(key, 10); - if (arg.getFormat().match(/\.\*/) && typeof args[key+1] != 'undefined') { return args[key+1]; } - else if (typeof args[key] != 'undefined') { return args[key]; } - else { return key; } - break; - } - return '{'+key+'}'; - }, - __formatToken: function(token, args) { - var arg = new Argument(token, args); - return strings.strConversion[arg.getFormat().slice(-1)](this.__getInput(arg, args), arg); - }, - - // Signed integer decimal. - d: function(input, arg){ - var o = parseInt(input, 10); // enforce base 10 - var p = arg.getPaddingLength(); - if (p) { return this.__pad(o.toString(), p, arg.getPaddingString(), 0); } - else { return o; } - }, - // Signed integer decimal. - i: function(input, args){ - return this.d(input, args); - }, - // Unsigned octal - o: function(input, arg){ - var o = input.toString(8); - if (arg.isAlternate()) { o = this.__pad(o, o.length+1, '0', 0); } - return this.__pad(o, arg.getPaddingLength(), arg.getPaddingString(), 0); - }, - // Unsigned decimal - u: function(input, args) { - return Math.abs(this.d(input, args)); - }, - // Unsigned hexadecimal (lowercase) - x: function(input, arg){ - var o = parseInt(input, 10).toString(16); - o = this.__pad(o, arg.getPaddingLength(), arg.getPaddingString(),0); - return arg.isAlternate() ? '0x'+o : o; - }, - // Unsigned hexadecimal (uppercase) - X: function(input, arg){ - return this.x(input, arg).toUpperCase(); - }, - // Floating point exponential format (lowercase) - e: function(input, arg){ - return parseFloat(input, 10).toExponential(arg.getPrecision()); - }, - // Floating point exponential format (uppercase) - E: function(input, arg){ - return this.e(input, arg).toUpperCase(); - }, - // Floating point decimal format - f: function(input, arg){ - return this.__pad(parseFloat(input, 10).toFixed(arg.getPrecision()), arg.getPaddingLength(), arg.getPaddingString(),0); - }, - // Floating point decimal format (alias) - F: function(input, args){ - return this.f(input, args); - }, - // Floating point format. Uses exponential format if exponent is greater than -4 or less than precision, decimal format otherwise - g: function(input, arg){ - var o = parseFloat(input, 10); - return (o.toString().length > 6) ? Math.round(o.toExponential(arg.getPrecision())): o; - }, - // Floating point format. Uses exponential format if exponent is greater than -4 or less than precision, decimal format otherwise - G: function(input, args){ - return this.g(input, args); - }, - // Single character (accepts integer or single character string). - c: function(input, args) { - var match = input.match(/\w|\d/); - return match && match[0] || ''; - }, - // String (converts any JavaScript object to anotated format) - r: function(input, args) { - return this.__repr(input); - }, - // String (converts any JavaScript object using object.toString()) - s: function(input, args) { - return input.toString && input.toString() || ''+input; - } - }, - - format: function(str, args) { - var end = 0; - var start = 0; - var match = false; - var buffer = []; - var token = ''; - var tmp = (str||'').split(''); - for(start=0; start < tmp.length; start++) { - if (tmp[start] == '{' && tmp[start+1] !='{') { - end = str.indexOf('}', start); - token = tmp.slice(start+1, end).join(''); - if (tmp[start-1] != '{' && tmp[end+1] != '}') { - var tokenArgs = (typeof arguments[1] != 'object')? arguments2Array(arguments, 2): args || []; - buffer.push(strings.strConversion.__formatToken(token, tokenArgs)); - } - else { - buffer.push(token); - } - } - else if (start > end || buffer.length < 1) { buffer.push(tmp[start]); } - } - return (buffer.length > 1)? buffer.join(''): buffer[0]; - }, - - calc: function(str, args) { - return eval(format(str, args)); - }, - - repeat: function(s, n) { - return new Array(n+1).join(s); - }, - - UTF8encode: function(s) { - return unescape(encodeURIComponent(s)); - }, - - UTF8decode: function(s) { - return decodeURIComponent(escape(s)); - }, - - tpl: function() { - var out = ''; - var render = true; - // Set - // $.tpl('ui.test', ['', helloWorld ,'']); - if (arguments.length == 2 && $.isArray(arguments[1])) { - this[arguments[0]] = arguments[1].join(''); - return $(this[arguments[0]]); - } - // $.tpl('ui.test', 'hello world'); - if (arguments.length == 2 && $.isString(arguments[1])) { - this[arguments[0]] = arguments[1]; - return $(this[arguments[0]]); - } - // Call - // $.tpl('ui.test'); - if (arguments.length == 1) { - return $(this[arguments[0]]); - } - // $.tpl('ui.test', false); - if (arguments.length == 2 && arguments[1] == false) { - return this[arguments[0]]; - } - // $.tpl('ui.test', {value:blah}); - if (arguments.length == 2 && $.isObject(arguments[1])) { - return $($.format(this[arguments[0]], arguments[1])); - } - // $.tpl('ui.test', {value:blah}, false); - if (arguments.length == 3 && $.isObject(arguments[1])) { - return (arguments[2] == true) - ? $.format(this[arguments[0]], arguments[1]) - : $($.format(this[arguments[0]], arguments[1])); - } - } - }; - - var Argument = function(arg, args) { - this.__arg = arg; - this.__args = args; - this.__max_precision = parseFloat('1.'+ (new Array(32)).join('1'), 10).toString().length-3; - this.__def_precision = 6; - this.getString = function(){ - return this.__arg; - }; - this.getKey = function(){ - return this.__arg.split(':')[0]; - }; - this.getFormat = function(){ - var match = this.getString().split(':'); - return (match && match[1])? match[1]: 's'; - }; - this.getPrecision = function(){ - var match = this.getFormat().match(/\.(\d+|\*)/g); - if (!match) { return this.__def_precision; } - else { - match = match[0].slice(1); - if (match != '*') { return parseInt(match, 10); } - else if(strings.strConversion.__getType(this.__args) == 'array') { - return this.__args[1] && this.__args[0] || this.__def_precision; - } - else if(strings.strConversion.__getType(this.__args) == 'object') { - return this.__args[this.getKey()] && this.__args[this.getKey()][0] || this.__def_precision; - } - else { return this.__def_precision; } - } - }; - this.getPaddingLength = function(){ - var match = false; - if (this.isAlternate()) { - match = this.getString().match(/0?#0?(\d+)/); - if (match && match[1]) { return parseInt(match[1], 10); } - } - match = this.getString().match(/(0|\.)(\d+|\*)/g); - return match && parseInt(match[0].slice(1), 10) || 0; - }; - this.getPaddingString = function(){ - var o = ''; - if (this.isAlternate()) { o = ' '; } - // 0 take precedence on alternate format - if (this.getFormat().match(/#0|0#|^0|\.\d+/)) { o = '0'; } - return o; - }; - this.getFlags = function(){ - var match = this.getString().matc(/^(0|\#|\-|\+|\s)+/); - return match && match[0].split('') || []; - }; - this.isAlternate = function() { - return !!this.getFormat().match(/^0?#/); - }; - }; - - var arguments2Array = function(args, shift) { - var o = []; - for (l=args.length, x=(shift || 0)-1; x - http://haineault.com - - MIT License (http://www.opensource.org/licenses/mit-license.php - -*/ - -(function($){ - $.extend($.expr[':'], { - // case insensitive version of :contains - icontains: function(a,i,m){return (a.textContent||a.innerText||jQuery(a).text()||"").toLowerCase().indexOf(m[3].toLowerCase())>=0;} - }); - - $.iterators = { - getText: function() { return $(this).text(); }, - parseInt: function(v){ return parseInt(v, 10); } - }; - - $.extend({ - - // Returns a range object - // Author: Matthias Miller - // Site: http://blog.outofhanwell.com/2006/03/29/javascript-range-function/ - range: function() { - if (!arguments.length) { return []; } - var min, max, step; - if (arguments.length == 1) { - min = 0; - max = arguments[0]-1; - step = 1; - } - else { - // default step to 1 if it's zero or undefined - min = arguments[0]; - max = arguments[1]-1; - step = arguments[2] || 1; - } - // convert negative steps to positive and reverse min/max - if (step < 0 && min >= max) { - step *= -1; - var tmp = min; - min = max; - max = tmp; - min += ((max-min) % step); - } - var a = []; - for (var i = min; i <= max; i += step) { a.push(i); } - return a; - }, - - // Taken from ui.core.js. - // Why are you keeping this gem for yourself guys ? :| - keyCode: { - BACKSPACE: 8, CAPS_LOCK: 20, COMMA: 188, CONTROL: 17, DELETE: 46, DOWN: 40, - END: 35, ENTER: 13, ESCAPE: 27, HOME: 36, INSERT: 45, LEFT: 37, - NUMPAD_ADD: 107, NUMPAD_DECIMAL: 110, NUMPAD_DIVIDE: 111, NUMPAD_ENTER: 108, - NUMPAD_MULTIPLY: 106, NUMPAD_SUBTRACT: 109, PAGE_DOWN: 34, PAGE_UP: 33, - PERIOD: 190, RIGHT: 39, SHIFT: 16, SPACE: 32, TAB: 9, UP: 38 - }, - - // Takes a keyboard event and return true if the keycode match the specified keycode - keyIs: function(k, e) { - return parseInt($.keyCode[k.toUpperCase()], 10) == parseInt((typeof(e) == 'number' )? e: e.keyCode, 10); - }, - - // Returns the key of an array - keys: function(arr) { - var o = []; - for (k in arr) { o.push(k); } - return o; - }, - - // Redirect to a specified url - redirect: function(url) { - window.location.href = url; - return url; - }, - - // Stop event shorthand - stop: function(e, preventDefault, stopPropagation) { - if (preventDefault) { e.preventDefault(); } - if (stopPropagation) { e.stopPropagation(); } - return preventDefault && false || true; - }, - - // Returns the basename of a path - basename: function(path) { - var t = path.split('/'); - return t[t.length] === '' && s || t.slice(0, t.length).join('/'); - }, - - // Returns the filename of a path - filename: function(path) { - return path.split('/').pop(); - }, - - // Returns a formated file size - filesizeformat: function(bytes, suffixes){ - var b = parseInt(bytes, 10); - var s = suffixes || ['byte', 'bytes', 'KB', 'MB', 'GB']; - if (isNaN(b) || b === 0) { return '0 ' + s[0]; } - if (b == 1) { return '1 ' + s[0]; } - if (b < 1024) { return b.toFixed(2) + ' ' + s[1]; } - if (b < 1048576) { return (b / 1024).toFixed(2) + ' ' + s[2]; } - if (b < 1073741824) { return (b / 1048576).toFixed(2) + ' '+ s[3]; } - else { return (b / 1073741824).toFixed(2) + ' '+ s[4]; } - }, - - fileExtension: function(s) { - var tokens = s.split('.'); - return tokens[tokens.length-1] || false; - }, - - // Returns true if an object is a String - isString: function(o) { - return typeof(o) == 'string' && true || false; - }, - - // Returns true if an object is a RegExp - isRegExp: function(o) { - return o && o.constructor.toString().indexOf('RegExp()') != -1 || false; - }, - - isObject: function(o) { - return (typeof(o) == 'object'); - }, - - // Convert input to currency (two decimal fixed number) - toCurrency: function(i) { - i = parseFloat(i, 10).toFixed(2); - return (i=='NaN') ? '0.00' : i; - }, - - /*-------------------------------------------------------------------- - * javascript method: "pxToEm" - * by: - Scott Jehl (scott@filamentgroup.com) - Maggie Wachs (maggie@filamentgroup.com) - http://www.filamentgroup.com - * - * Copyright (c) 2008 Filament Group - * Dual licensed under the MIT (filamentgroup.com/examples/mit-license.txt) and GPL (filamentgroup.com/examples/gpl-license.txt) licenses. - * - * Description: pxToEm converts a pixel value to ems depending on inherited font size. - * Article: http://www.filamentgroup.com/lab/retaining_scalable_interfaces_with_pixel_to_em_conversion/ - * Demo: http://www.filamentgroup.com/examples/pxToEm/ - * - * Options: - scope: string or jQuery selector for font-size scoping - reverse: Boolean, true reverses the conversion to em-px - * Dependencies: jQuery library - * Usage Example: myPixelValue.pxToEm(); or myPixelValue.pxToEm({'scope':'#navigation', reverse: true}); - * - * Version: 2.1, 18.12.2008 - * Changelog: - * 08.02.2007 initial Version 1.0 - * 08.01.2008 - fixed font-size calculation for IE - * 18.12.2008 - removed native object prototyping to stay in jQuery's spirit, jsLinted (Maxime Haineault ) - --------------------------------------------------------------------*/ - - pxToEm: function(i, settings){ - //set defaults - settings = jQuery.extend({ - scope: 'body', - reverse: false - }, settings); - - var pxVal = (i === '') ? 0 : parseFloat(i); - var scopeVal; - var getWindowWidth = function(){ - var de = document.documentElement; - return self.innerWidth || (de && de.clientWidth) || document.body.clientWidth; - }; - - /* When a percentage-based font-size is set on the body, IE returns that percent of the window width as the font-size. - For example, if the body font-size is 62.5% and the window width is 1000px, IE will return 625px as the font-size. - When this happens, we calculate the correct body font-size (%) and multiply it by 16 (the standard browser font size) - to get an accurate em value. */ - - if (settings.scope == 'body' && $.browser.msie && (parseFloat($('body').css('font-size')) / getWindowWidth()).toFixed(1) > 0.0) { - var calcFontSize = function(){ - return (parseFloat($('body').css('font-size'))/getWindowWidth()).toFixed(3) * 16; - }; - scopeVal = calcFontSize(); - } - else { scopeVal = parseFloat(jQuery(settings.scope).css("font-size")); } - - var result = (settings.reverse === true) ? (pxVal * scopeVal).toFixed(2) + 'px' : (pxVal / scopeVal).toFixed(2) + 'em'; - return result; - } - }); - - $.extend($.fn, { - type: function() { - try { return $(this).get(0).nodeName.toLowerCase(); } - catch(e) { return false; } - }, - // Select a text range in a textarea - selectRange: function(start, end){ - // use only the first one since only one input can be focused - if ($(this).get(0).createTextRange) { - var range = $(this).get(0).createTextRange(); - range.collapse(true); - range.moveEnd('character', end); - range.moveStart('character', start); - range.select(); - } - else if ($(this).get(0).setSelectionRange) { - $(this).bind('focus', function(e){ - e.preventDefault(); - }).get(0).setSelectionRange(start, end); - } - return $(this); - }, - - /*-------------------------------------------------------------------- - * JQuery Plugin: "EqualHeights" - * by: Scott Jehl, Todd Parker, Maggie Costello Wachs (http://www.filamentgroup.com) - * - * Copyright (c) 2008 Filament Group - * Licensed under GPL (http://www.opensource.org/licenses/gpl-license.php) - * - * Description: Compares the heights or widths of the top-level children of a provided element - and sets their min-height to the tallest height (or width to widest width). Sets in em units - by default if pxToEm() method is available. - * Dependencies: jQuery library, pxToEm method (article: - http://www.filamentgroup.com/lab/retaining_scalable_interfaces_with_pixel_to_em_conversion/) - * Usage Example: $(element).equalHeights(); - Optional: to set min-height in px, pass a true argument: $(element).equalHeights(true); - * Version: 2.1, 18.12.2008 - * - * Note: Changed pxToEm call to call $.pxToEm instead, jsLinted (Maxime Haineault ) - --------------------------------------------------------------------*/ - - equalHeights: function(px){ - $(this).each(function(){ - var currentTallest = 0; - $(this).children().each(function(i){ - if ($(this).height() > currentTallest) { currentTallest = $(this).height(); } - }); - if (!px || !$.pxToEm) { currentTallest = $.pxToEm(currentTallest); } //use ems unless px is specified - // for ie6, set height since min-height isn't supported - if ($.browser.msie && $.browser.version == 6.0) { $(this).children().css({'height': currentTallest}); } - $(this).children().css({'min-height': currentTallest}); - }); - return this; - }, - - // Copyright (c) 2009 James Padolsey - // http://james.padolsey.com/javascript/jquery-delay-plugin/ - delay: function(time, callback){ - jQuery.fx.step.delay = function(){}; - return this.animate({delay:1}, time, callback); - } - }); -})(jQuery); \ No newline at end of file diff --git a/app/assets/javascripts/shared/jquery.utils.ui.min.js b/app/assets/javascripts/shared/jquery.utils.ui.min.js deleted file mode 100644 index ac76815..0000000 --- a/app/assets/javascripts/shared/jquery.utils.ui.min.js +++ /dev/null @@ -1,26 +0,0 @@ -/* - jQuery utils - 0.5 - http://code.google.com/p/jquery-utils/ - - (c) Maxime Haineault - http://haineault.com - - MIT License (http://www.opensource.org/licenses/mit-license.php - -*/ -(function($){$.extend($.expr[':'],{icontains:function(a,i,m){return(a.textContent||a.innerText||jQuery(a).text()||"").toLowerCase().indexOf(m[3].toLowerCase())>=0;}});$.extend({basename:function(s){var t=s.split('/');return t[t.length]==''&&s||t.slice(0,t.length).join('/');},filename:function(s){return s.split('/').pop();},isRegExp:function(o){return o&&o.constructor.toString().indexOf('RegExp()')!=-1||false;},isArray:function(o){return o&&o.constructor.toString().indexOf('Array()')!=-1||false;},toCurrency:function(o){o=parseFloat(o,10).toFixed(2);return(o=='NaN')?'0.00':o;},range:function(){if(!arguments.length){return[];}var min,max,step;if(arguments.length==1){min=0;max=arguments[0]-1;step=1;}else{min=arguments[0];max=arguments[1]-1;step=arguments[2]||1;}if(step<0&&min>=max){step*=-1;var tmp=min;min=max;max=tmp;min+=((max-min)%step);}var a=[];for(var i=min;i<=max;i+=step){a.push(i);}return a;}});$.extend($.fn,{selectRange:function(start,end){if($(this).get(0).createTextRange){var range=$(this).get(0).createTextRange();range.collapse(true);range.moveEnd('character',end);range.moveStart('character',start);range.select();}else if($(this).get(0).setSelectionRange){$(this).bind('focus',function(e){e.preventDefault();}).get(0).setSelectionRange(start,end);}return $(this);}});})(jQuery);(function($){var hash=window.location.hash;var handlers=[];var opt={};$.extend({anchorHandler:{apply:function(){$.map(handlers,function(handler){var match=hash.match(handler.r)&&hash.match(handler.r)[0]||false;if(match){handler.cb.apply($('a[href~='+match+']').get(0),[handler.r,hash||'']);}});return $.anchorHandler;},add:function(regexp,callback,options){var opt=$.extend({handleClick:true,preserveHash:true},options);if(opt.handleClick){$('a[href~=#]').each(function(i,a){if(a.href.match(regexp)){$(a).bind('click.anchorHandler',function(){if(opt.preserveHash){window.location.hash=a.hash;}return callback.apply(this,[regexp,a.href]);});}});}handlers.push({r:regexp,cb:callback});$($.anchorHandler.apply);return $.anchorHandler;}}});})(jQuery);jQuery.cookie=function(name,value,options){if(typeof value!='undefined'){options=options||{};if(value===null){value='';options.expires=-1;}var expires='';if(options.expires&&(typeof options.expires=='number'||options.expires.toUTCString)){var date;if(typeof options.expires=='number'){date=new Date();date.setTime(date.getTime()+(options.expires*24*60*60*1000));}else{date=options.expires;}expires='; expires='+date.toUTCString();}var path=options.path?'; path='+(options.path):'';var domain=options.domain?'; domain='+(options.domain):'';var secure=options.secure?'; secure':'';document.cookie=[name,'=',encodeURIComponent(value),expires,path,domain,secure].join('');}else{var cookieValue=null;if(document.cookie&&document.cookie!=''){var cookies=document.cookie.split(';');for(var i=0;i=options.elements.length){log('invalid slide index: '+num);return;}options.nextSlide=num;if(this.cycleTimeout){clearTimeout(this.cycleTimeout);this.cycleTimeout=0;}go(options.elements,options,1,1);return;}if(this.cycleTimeout)clearTimeout(this.cycleTimeout);this.cycleTimeout=0;this.cyclePause=0;var $cont=$(this);var $slides=options.slideExpr?$(options.slideExpr,this):$cont.children();var els=$slides.get();if(els.length<2){log('terminating; too few slides: '+els.length);return;}var opts=$.extend({},$.fn.cycle.defaults,options||{},$.metadata?$cont.metadata():$.meta?$cont.data():{});if(opts.autostop)opts.countdown=opts.autostopCount||els.length;$cont.data('cycle.opts',opts);opts.container=this;opts.elements=els;opts.before=opts.before?[opts.before]:[];opts.after=opts.after?[opts.after]:[];opts.after.unshift(function(){opts.busy=0;});if(opts.continuous)opts.after.push(function(){go(els,opts,0,!opts.rev);});if(ie6&&opts.cleartype&&!opts.cleartypeNoBg)clearTypeFix($slides);var cls=this.className;opts.width=parseInt((cls.match(/w:(\d+)/)||[])[1])||opts.width;opts.height=parseInt((cls.match(/h:(\d+)/)||[])[1])||opts.height;opts.timeout=parseInt((cls.match(/t:(\d+)/)||[])[1])||opts.timeout;if($cont.css('position')=='static')$cont.css('position','relative');if(opts.width)$cont.width(opts.width);if(opts.height&&opts.height!='auto')$cont.height(opts.height);if(opts.random){opts.randomMap=[];for(var i=0;i=els.length)opts.startingSlide=0;var first=opts.startingSlide||0;$slides.css({position:'absolute',top:0,left:0}).hide().each(function(i){var z=first?i>=first?els.length-(i-first):first-i:els.length-i;$(this).css('z-index',z)});$(els[first]).css('opacity',1).show();if($.browser.msie)els[first].style.removeAttribute('filter');if(opts.fit&&opts.width)$slides.width(opts.width);if(opts.fit&&opts.height&&opts.height!='auto')$slides.height(opts.height);if(opts.pause)$cont.hover(function(){this.cyclePause=1;},function(){this.cyclePause=0;});var init=$.fn.cycle.transitions[opts.fx];if($.isFunction(init))init($cont,$slides,opts);else if(opts.fx!='custom')log('unknown transition: '+opts.fx);$slides.each(function(){var $el=$(this);this.cycleH=(opts.fit&&opts.height)?opts.height:$el.height();this.cycleW=(opts.fit&&opts.width)?opts.width:$el.width();});opts.cssBefore=opts.cssBefore||{};opts.animIn=opts.animIn||{};opts.animOut=opts.animOut||{};$slides.not(':eq('+first+')').css(opts.cssBefore);if(opts.cssFirst)$($slides[first]).css(opts.cssFirst);if(opts.timeout){if(opts.speed.constructor==String)opts.speed={slow:600,fast:200}[opts.speed]||400;if(!opts.sync)opts.speed=opts.speed/2;while((opts.timeout-opts.speed)<250)opts.timeout+=opts.speed;}if(opts.easing)opts.easeIn=opts.easeOut=opts.easing;if(!opts.speedIn)opts.speedIn=opts.speed;if(!opts.speedOut)opts.speedOut=opts.speed;opts.slideCount=els.length;opts.currSlide=first;if(opts.random){opts.nextSlide=opts.currSlide;if(++opts.randomIndex==els.length)opts.randomIndex=0;opts.nextSlide=opts.randomMap[opts.randomIndex];}else -opts.nextSlide=opts.startingSlide>=(els.length-1)?0:opts.startingSlide+1;var e0=$slides[first];if(opts.before.length)opts.before[0].apply(e0,[e0,e0,opts,true]);if(opts.after.length>1)opts.after[1].apply(e0,[e0,e0,opts,true]);if(opts.click&&!opts.next)opts.next=opts.click;if(opts.next)$(opts.next).bind('click',function(){return advance(els,opts,opts.rev?-1:1)});if(opts.prev)$(opts.prev).bind('click',function(){return advance(els,opts,opts.rev?1:-1)});if(opts.pager)buildPager(els,opts);opts.addSlide=function(newSlide){var $s=$(newSlide),s=$s[0];if(!opts.autostopCount)opts.countdown++;els.push(s);if(opts.els)opts.els.push(s);opts.slideCount=els.length;$s.css('position','absolute').appendTo($cont);if(ie6&&opts.cleartype&&!opts.cleartypeNoBg)clearTypeFix($s);if(opts.fit&&opts.width)$s.width(opts.width);if(opts.fit&&opts.height&&opts.height!='auto')$slides.height(opts.height);s.cycleH=(opts.fit&&opts.height)?opts.height:$s.height();s.cycleW=(opts.fit&&opts.width)?opts.width:$s.width();$s.css(opts.cssBefore);if(opts.pager)$.fn.cycle.createPagerAnchor(els.length-1,s,$(opts.pager),els,opts);if(typeof opts.onAddSlide=='function')opts.onAddSlide($s);};if(opts.timeout||opts.continuous)this.cycleTimeout=setTimeout(function(){go(els,opts,0,!opts.rev)},opts.continuous?10:opts.timeout+(opts.delay||0));});};function go(els,opts,manual,fwd){if(opts.busy)return;var p=opts.container,curr=els[opts.currSlide],next=els[opts.nextSlide];if(p.cycleTimeout===0&&!manual)return;if(!manual&&!p.cyclePause&&((opts.autostop&&(--opts.countdown<=0))||(opts.nowrap&&!opts.random&&opts.nextSlide=els.length){if(opts.nowrap)return false;opts.nextSlide=0;}}log('nextSlide: '+opts.nextSlide+'; randomIndex: '+opts.randomIndex);if(opts.prevNextClick&&typeof opts.prevNextClick=='function')opts.prevNextClick(val>0,opts.nextSlide,els[opts.nextSlide]);go(els,opts,1,val>=0);return false;};function buildPager(els,opts){var $p=$(opts.pager);$.each(els,function(i,o){$.fn.cycle.createPagerAnchor(i,o,$p,els,opts);});$.fn.cycle.updateActivePagerLink(opts.pager,opts.startingSlide);};$.fn.cycle.createPagerAnchor=function(i,el,$p,els,opts){var $a=(typeof opts.pagerAnchorBuilder=='function')?$(opts.pagerAnchorBuilder(i,el)):$('
        '+(i+1)+'');if($a.parents('body').length==0)$a.appendTo($p);$a.bind(opts.pagerEvent,function(){opts.nextSlide=i;var p=opts.container,timeout=p.cycleTimeout;if(timeout){clearTimeout(timeout);p.cycleTimeout=0;}if(typeof opts.pagerClick=='function')opts.pagerClick(opts.nextSlide,els[opts.nextSlide]);go(els,opts,1,opts.currSlide=0){var rgb=v.match(/\d+/g);return'#'+hex(rgb[0])+hex(rgb[1])+hex(rgb[2]);}if(v&&v!='transparent')return v;}return'#ffffff';};$slides.each(function(){$(this).css('background-color',getBg(this));});};$.fn.cycle.custom=function(curr,next,opts,cb){var $l=$(curr),$n=$(next);$n.css(opts.cssBefore);var fn=function(){$n.animate(opts.animIn,opts.speedIn,opts.easeIn,cb)};$l.animate(opts.animOut,opts.speedOut,opts.easeOut,function(){if(opts.cssAfter)$l.css(opts.cssAfter);if(!opts.sync)fn();});if(opts.sync)fn();};$.fn.cycle.transitions={fade:function($cont,$slides,opts){$slides.not(':eq('+opts.startingSlide+')').css('opacity',0);opts.before.push(function(){$(this).show()});opts.animIn={opacity:1};opts.animOut={opacity:0};opts.cssBefore={opacity:0};opts.cssAfter={display:'none'};}};$.fn.cycle.ver=function(){return ver;};$.fn.cycle.defaults={fx:'fade',timeout:4000,continuous:0,speed:1000,speedIn:null,speedOut:null,next:null,prev:null,prevNextClick:null,pager:null,pagerClick:null,pagerEvent:'click',pagerAnchorBuilder:null,before:null,after:null,end:null,easing:null,easeIn:null,easeOut:null,shuffle:null,animIn:null,animOut:null,cssBefore:null,cssAfter:null,fxFn:null,height:'auto',startingSlide:0,sync:1,random:0,fit:0,pause:0,autostop:0,autostopCount:0,delay:0,slideExpr:null,cleartype:0,nowrap:0};})(jQuery);(function($){$.fn.cycle.transitions.scrollUp=function($cont,$slides,opts){$cont.css('overflow','hidden');opts.before.push(function(curr,next,opts){$(this).show();opts.cssBefore.top=next.offsetHeight;opts.animOut.top=0-curr.offsetHeight;});opts.cssFirst={top:0};opts.animIn={top:0};opts.cssAfter={display:'none'};};$.fn.cycle.transitions.scrollDown=function($cont,$slides,opts){$cont.css('overflow','hidden');opts.before.push(function(curr,next,opts){$(this).show();opts.cssBefore.top=0-next.offsetHeight;opts.animOut.top=curr.offsetHeight;});opts.cssFirst={top:0};opts.animIn={top:0};opts.cssAfter={display:'none'};};$.fn.cycle.transitions.scrollLeft=function($cont,$slides,opts){$cont.css('overflow','hidden');opts.before.push(function(curr,next,opts){$(this).show();opts.cssBefore.left=next.offsetWidth;opts.animOut.left=0-curr.offsetWidth;});opts.cssFirst={left:0};opts.animIn={left:0};};$.fn.cycle.transitions.scrollRight=function($cont,$slides,opts){$cont.css('overflow','hidden');opts.before.push(function(curr,next,opts){$(this).show();opts.cssBefore.left=0-next.offsetWidth;opts.animOut.left=curr.offsetWidth;});opts.cssFirst={left:0};opts.animIn={left:0};};$.fn.cycle.transitions.scrollHorz=function($cont,$slides,opts){$cont.css('overflow','hidden').width();opts.before.push(function(curr,next,opts,fwd){$(this).show();var currW=curr.offsetWidth,nextW=next.offsetWidth;opts.cssBefore=fwd?{left:nextW}:{left:-nextW};opts.animIn.left=0;opts.animOut.left=fwd?-currW:currW;$slides.not(curr).css(opts.cssBefore);});opts.cssFirst={left:0};opts.cssAfter={display:'none'}};$.fn.cycle.transitions.scrollVert=function($cont,$slides,opts){$cont.css('overflow','hidden');opts.before.push(function(curr,next,opts,fwd){$(this).show();var currH=curr.offsetHeight,nextH=next.offsetHeight;opts.cssBefore=fwd?{top:-nextH}:{top:nextH};opts.animIn.top=0;opts.animOut.top=fwd?currH:-currH;$slides.not(curr).css(opts.cssBefore);});opts.cssFirst={top:0};opts.cssAfter={display:'none'}};$.fn.cycle.transitions.slideX=function($cont,$slides,opts){opts.before.push(function(curr,next,opts){$(curr).css('zIndex',1);});opts.onAddSlide=function($s){$s.hide();};opts.cssBefore={zIndex:2};opts.animIn={width:'show'};opts.animOut={width:'hide'};};$.fn.cycle.transitions.slideY=function($cont,$slides,opts){opts.before.push(function(curr,next,opts){$(curr).css('zIndex',1);});opts.onAddSlide=function($s){$s.hide();};opts.cssBefore={zIndex:2};opts.animIn={height:'show'};opts.animOut={height:'hide'};};$.fn.cycle.transitions.shuffle=function($cont,$slides,opts){var w=$cont.css('overflow','visible').width();$slides.css({left:0,top:0});opts.before.push(function(){$(this).show()});opts.speed=opts.speed/2;opts.random=0;opts.shuffle=opts.shuffle||{left:-w,top:15};opts.els=[];for(var i=0;i<$slides.length;i++)opts.els.push($slides[i]);for(var i=0;irv[i])return true;}return true;};$$.hasFlash.playerVersion=function(){try{try{var axo=new ActiveXObject('ShockwaveFlash.ShockwaveFlash.6');try{axo.AllowScriptAccess='always';}catch(e){return'6,0,0';}}catch(e){}return new ActiveXObject('ShockwaveFlash.ShockwaveFlash').GetVariable('$version').replace(/\D+/g,',').match(/^,?(.+),?$/)[1];}catch(e){try{if(navigator.mimeTypes["application/x-shockwave-flash"].enabledPlugin){return(navigator.plugins["Shockwave Flash 2.0"]||navigator.plugins["Shockwave Flash"]).description.replace(/\D+/g,",").match(/^,?(.+),?$/)[1];}}catch(e){}}return'0,0,0';};$$.htmlOptions={height:240,flashvars:{},pluginspage:'http://www.adobe.com/go/getflashplayer',src:'#',type:'application/x-shockwave-flash',width:320};$$.pluginOptions={expressInstall:false,update:true,version:'6.0.65'};$$.replace=function(htmlOptions){this.innerHTML='
        '+this.innerHTML+'
        ';jQuery(this).addClass('flash-replaced').prepend($$.transform(htmlOptions));};$$.update=function(htmlOptions){var url=String(location).split('?');url.splice(1,0,'?hasFlash=true&');url=url.join('');var msg='

        This content requires the Flash Player. Download Flash Player. Already have Flash Player? Click here.

        ';this.innerHTML=''+this.innerHTML+'';jQuery(this).addClass('flash-update').prepend(msg);};function toAttributeString(){var s='';for(var key in this)if(typeof this[key]!='function')s+=key+'="'+this[key]+'" ';return s;};function toFlashvarsString(){var s='';for(var key in this)if(typeof this[key]!='function')s+=key+'='+encodeURIComponent(this[key])+'&';return s.replace(/&$/,'');};$$.transform=function(htmlOptions){htmlOptions.toString=toAttributeString;if(htmlOptions.flashvars)htmlOptions.flashvars.toString=toFlashvarsString;return'';};if(window.attachEvent){window.attachEvent("onbeforeunload",function(){__flash_unloadHandler=function(){};__flash_savedUnloadHandler=function(){};});}})();(function($){$._i18n={trans:{},'default':'en',language:'en'};$.i18n=function(){var getTrans=function(ns,str){var trans=false;if($._i18n.trans[$._i18n.language]&&$._i18n.trans[$._i18n.language][ns]&&$._i18n.trans[$._i18n.language][ns][str]){trans=$._i18n.trans[$._i18n.language][ns][str];}else if($._i18n.trans[$._i18n['default']]&&$._i18n.trans[$._i18n['default']][ns]&&$._i18n.trans[$._i18n['default']][ns][str]){trans=$._i18n.trans[$._i18n['default']][ns][str];}return trans||str;};if(arguments.length<2&&arguments[0].length==2){return $._i18n.language=arguments[0];}else{if(typeof(arguments[1])=='string'){var trans=getTrans(arguments[0],arguments[1]);if(arguments[2]&&typeof(arguments[2])=='object'){return $.format(trans,arguments[2]);}else{return trans;}}else{var tmp=arguments[0].split('.');var lang=tmp[0];var ns=tmp[1]||'jQuery';if(!$._i18n.trans[lang]){$._i18n.trans[lang]={};$._i18n.trans[lang][ns]=arguments[1];}else{$.extend($._i18n.trans[lang][ns],arguments[1]);}}}};})(jQuery);(function($){$.ifixpng=function(customPixel){$.ifixpng.pixel=customPixel;};$.ifixpng.getPixel=function(){return $.ifixpng.pixel||'images/pixel.gif';};var hack={ltie7:$.browser.msie&&$.browser.version<7,filter:function(src){return"progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=true,sizingMethod=crop,src='"+src+"')";}};$.fn.ifixpng=hack.ltie7?function(){return this.each(function(){var $$=$(this);var base=$('base').attr('href');if($$.is('img')||$$.is('input')){if($$.attr('src')){if($$.attr('src').match(/.*\.png([?].*)?$/i)){var source=(base&&$$.attr('src').substring(0,1)!='/')?base+$$.attr('src'):$$.attr('src');$$.css({filter:hack.filter(source),width:$$.width(),height:$$.height()}).attr({src:$.ifixpng.getPixel()}).positionFix();}}}else{var image=$$.css('backgroundImage');if(image.match(/^url\(["']?(.*\.png([?].*)?)["']?\)$/i)){image=RegExp.$1;$$.css({backgroundImage:'none',filter:hack.filter(image)}).children().children().positionFix();}}});}:function(){return this;};$.fn.iunfixpng=hack.ltie7?function(){return this.each(function(){var $$=$(this);var src=$$.css('filter');if(src.match(/src=["']?(.*\.png([?].*)?)["']?/i)){src=RegExp.$1;if($$.is('img')||$$.is('input')){$$.attr({src:src}).css({filter:''});}else{$$.css({filter:'',background:'url('+src+')'});}}});}:function(){return this;};$.fn.positionFix=function(){return this.each(function(){var $$=$(this);var position=$$.css('position');if(position!='absolute'&&position!='relative'){$$.css({position:'relative'});}});};})(jQuery);(function($){$.event.special.mousewheel={setup:function(){var handler=$.event.special.mousewheel.handler;if($.browser.mozilla)$(this).bind('mousemove.mousewheel',function(event){$.data(this,'mwcursorposdata',{pageX:event.pageX,pageY:event.pageY,clientX:event.clientX,clientY:event.clientY});});if(this.addEventListener)this.addEventListener(($.browser.mozilla?'DOMMouseScroll':'mousewheel'),handler,false);else -this.onmousewheel=handler;},teardown:function(){var handler=$.event.special.mousewheel.handler;$(this).unbind('mousemove.mousewheel');if(this.removeEventListener)this.removeEventListener(($.browser.mozilla?'DOMMouseScroll':'mousewheel'),handler,false);else -this.onmousewheel=function(){};$.removeData(this,'mwcursorposdata');},handler:function(event){var args=Array.prototype.slice.call(arguments,1);event=$.event.fix(event||window.event);$.extend(event,$.data(this,'mwcursorposdata')||{});var delta=0,returnValue=true;if(event.wheelDelta)delta=event.wheelDelta/120;if(event.detail)delta=-event.detail/3;if($.browser.opera)delta=-event.wheelDelta;event.data=event.data||{};event.type="mousewheel";args.unshift(delta);args.unshift(event);return $.event.handle.apply(this,args);}};$.fn.extend({mousewheel:function(fn){return fn?this.bind("mousewheel",fn):this.trigger("mousewheel");},unmousewheel:function(fn){return this.unbind("mousewheel",fn);}});})(jQuery);(function($){var conversion={__repr:function(i){switch(this.__getType(i)){case'array':case'date':case'number':return i.toString();case'object':var o=[];for(x=0;x0){o=new Array(Math.ceil(l/p.length)).join(p).substr(0,t=!t?l:t==1?0:Math.ceil(l/2))+str+p.substr(0,l-t);}return o;},__getInput:function(arg,args){var key=arg.getKey();switch(this.__getType(args)){case'object':var keys=key.split('.');var obj=args;for(var subkey=0;subkey6)?Math.round(o.toExponential(arg.getPrecision())):o;},G:function(input,args){return this.g(input,args);},c:function(input,args){var match=input.match(/\w|\d/);return match&&match[0]||'';},r:function(input,args){return this.__repr(input);},s:function(input,args){return input.toString&&input.toString()||''+input;}};var Argument=function(arg,args){this.__arg=arg;this.__args=args;this.__max_precision=parseFloat('1.'+(new Array(32)).join('1'),10).toString().length-3;this.__def_precision=6;this.getString=function(){return this.__arg;};this.getKey=function(){return this.__arg.split(':')[0];};this.getFormat=function(){var match=this.getString().split(':');return(match&&match[1])?match[1]:'s';};this.getPrecision=function(){var match=this.getFormat().match(/\.(\d+|\*)/g);if(!match){return this.__def_precision;}else{match=match[0].slice(1);if(match!='*'){return parseInt(match,10);}else if(conversion.__getType(this.__args)=='array'){return this.__args[1]&&this.__args[0]||this.__def_precision;}else if(conversion.__getType(this.__args)=='object'){return this.__args[this.getKey()]&&this.__args[this.getKey()][0]||this.__def_precision;}else{return this.__def_precision;}}};this.getPaddingLength=function(){var match=false;if(this.isAlternate()){match=this.getString().match(/0?#0?(\d+)/);if(match&&match[1]){return parseInt(match[1],10);}}match=this.getString().match(/(0|\.)(\d+|\*)/g);return match&&parseInt(match[0].slice(1),10)||0;};this.getPaddingString=function(){var o='';if(this.isAlternate()){o=' ';}if(this.getFormat().match(/#0|0#|^0|\.\d+/)){o='0';}return o;};this.getFlags=function(){var match=this.getString().matc(/^(0|\#|\-|\+|\s)+/);return match&&match[0].split('')||[];};this.isAlternate=function(){return!!this.getFormat().match(/^0?#/);};};var arguments2Array=function(args,shift){var o=[];for(l=args.length,x=(shift||0)-1;xend||buffer.length<1){buffer.push(tmp[start]);}}return(buffer.length>1)?buffer.join(''):buffer[0];};var calc=function(str,args){return eval(format(str,args));};$.extend({format:format,calc:calc,strConversion:conversion,repeat:function(s,n){return new Array(n+1).join(s);},UTF8encode:function(s){return unescape(encodeURIComponent(s));},UTF8decode:function(s){return decodeURIComponent(escape(s));}});})(jQuery);(function($){$.timeago=function(timestamp){if(timestamp instanceof Date)return inWords(timestamp);else if(typeof timestamp=="string")return inWords($.timeago.parse(timestamp));else return inWords($.timeago.parse($(timestamp).attr("title")));};var $t=$.timeago;$.extend($.timeago,{settings:{refreshMillis:60000,allowFuture:false,strings:{ago:"ago",fromNow:"from now",seconds:"less than a minute",minute:"about a minute",minutes:"%d minutes",hour:"about an hour",hours:"about %d hours",day:"a day",days:"%d days",month:"about a month",months:"%d months",year:"about a year",years:"%d years"}},inWords:function(distanceMillis){var $l=this.settings.strings;var suffix=$l.ago;if(this.settings.allowFuture){if(distanceMillis<0)suffix=$l.fromNow;distanceMillis=Math.abs(distanceMillis);}var seconds=distanceMillis/1000;var minutes=seconds/60;var hours=minutes/60;var days=hours/24;var years=days/365;var words=seconds<45&&sprintf($l.seconds,Math.round(seconds))||seconds<90&&$l.minute||minutes<45&&sprintf($l.minutes,Math.round(minutes))||minutes<90&&$l.hour||hours<24&&sprintf($l.hours,Math.round(hours))||hours<48&&$l.day||days<30&&sprintf($l.days,Math.floor(days))||days<60&&$l.month||days<365&&sprintf($l.months,Math.floor(days/30))||years<2&&$l.year||sprintf($l.years,Math.floor(years));return words+" "+suffix;},parse:function(iso8601){var s=$.trim(iso8601);s=s.replace(/-/,"/").replace(/-/,"/");s=s.replace(/T/," ").replace(/Z/," UTC");s=s.replace(/([\+-]\d\d)\:?(\d\d)/," $1$2");return new Date(s);}});$.fn.timeago=function(){var self=this;self.each(refresh);var $s=$t.settings;if($s.refreshMillis>0){setInterval(function(){self.each(refresh);},$s.refreshMillis);}return self;};function refresh(){var date=$t.parse(this.title);if(!isNaN(date)){$(this).text(inWords(date));}return this;}function inWords(date){return $t.inWords(distance(date));}function distance(date){return(new Date().getTime()-date.getTime());}function sprintf(string,value){return string.replace(/%d/i,value);}if($.browser.msie&&$.browser.version<7.0){document.createElement('abbr');}})(jQuery);(function($){var youtubeURL='http://www.youtube.com/v/';var yl2e={onclick:function(){if($(this).next().hasClass('youtubeLinksToEmbed')){return false;}href=youtubeURL+this.href.match(/[a-zA-Z0-9-_]+$/)+'&rel=1';wrapper=$('');player=$('div:first',wrapper);player.flash({src:href,width:425,height:355});$(this).after(wrapper);wrapper.queue(function(){$(this).css('height',40);$(this).dequeue();$(this).slideDown();$(this).dequeue();});setTimeout(function(){wrapper.queue(function(){$(this).find('span').hide().end();$(this).dequeue();$(this).animate({height:375});$(this).dequeue();});setTimeout(function(){player.show();},500);},1500);return false;}};$.fn.youtubeLinksToEmbed=function(options){var opt=$.extend({autoOpen:false},options);$(this).find('a[href~=youtube.com/watch?v=]').addClass('youtubeLinksToEmbed').each(function(){$(this).click(yl2e.onclick);if(opt.autoOpen){$(this).trigger('click');}});};$.fn.youtubeInputsToEmbed=function(options){$(this).find('input[value~=youtube.com/watch?v=]').addClass('youtubeLinksToEmbed').each(function(){$('watch').insertAfter(this);});$(this).youtubeLinksToEmbed(options);};})(jQuery);$(document).ready(function(){$('body').youtubeLinksToEmbed();});(function($){$.extend($.expr[':'],{icontains:function(a,i,m){return(a.textContent||a.innerText||jQuery(a).text()||"").toLowerCase().indexOf(m[3].toLowerCase())>=0;}});$.extend({basename:function(s){var t=s.split('/');return t[t.length]==''&&s||t.slice(0,t.length).join('/');},filename:function(s){return s.split('/').pop();},isRegExp:function(o){return o&&o.constructor.toString().indexOf('RegExp()')!=-1||false;},isArray:function(o){return o&&o.constructor.toString().indexOf('Array()')!=-1||false;},toCurrency:function(o){o=parseFloat(o,10).toFixed(2);return(o=='NaN')?'0.00':o;},range:function(){if(!arguments.length){return[];}var min,max,step;if(arguments.length==1){min=0;max=arguments[0]-1;step=1;}else{min=arguments[0];max=arguments[1]-1;step=arguments[2]||1;}if(step<0&&min>=max){step*=-1;var tmp=min;min=max;max=tmp;min+=((max-min)%step);}var a=[];for(var i=min;i<=max;i+=step){a.push(i);}return a;}});$.extend($.fn,{selectRange:function(start,end){if($(this).get(0).createTextRange){var range=$(this).get(0).createTextRange();range.collapse(true);range.moveEnd('character',end);range.moveStart('character',start);range.select();}else if($(this).get(0).setSelectionRange){$(this).bind('focus',function(e){e.preventDefault();}).get(0).setSelectionRange(start,end);}return $(this);}});})(jQuery);(function($){$.extend($.expr[':'],{icontains:function(a,i,m){return(a.textContent||a.innerText||jQuery(a).text()||"").toLowerCase().indexOf(m[3].toLowerCase())>=0;}});$.extend({basename:function(s){var t=s.split('/');return t[t.length]==''&&s||t.slice(0,t.length).join('/');},filename:function(s){return s.split('/').pop();},isRegExp:function(o){return o&&o.constructor.toString().indexOf('RegExp()')!=-1||false;},isArray:function(o){return o&&o.constructor.toString().indexOf('Array()')!=-1||false;},toCurrency:function(o){o=parseFloat(o,10).toFixed(2);return(o=='NaN')?'0.00':o;},range:function(){if(!arguments.length){return[];}var min,max,step;if(arguments.length==1){min=0;max=arguments[0]-1;step=1;}else{min=arguments[0];max=arguments[1]-1;step=arguments[2]||1;}if(step<0&&min>=max){step*=-1;var tmp=min;min=max;max=tmp;min+=((max-min)%step);}var a=[];for(var i=min;i<=max;i+=step){a.push(i);}return a;}});$.extend($.fn,{selectRange:function(start,end){if($(this).get(0).createTextRange){var range=$(this).get(0).createTextRange();range.collapse(true);range.moveEnd('character',end);range.moveStart('character',start);range.select();}else if($(this).get(0).setSelectionRange){$(this).bind('focus',function(e){e.preventDefault();}).get(0).setSelectionRange(start,end);}return $(this);}});})(jQuery);(function($){var hash=window.location.hash;var handlers=[];var opt={};$.extend({anchorHandler:{apply:function(){$.map(handlers,function(handler){var match=hash.match(handler.r)&&hash.match(handler.r)[0]||false;if(match){handler.cb.apply($('a[href~='+match+']').get(0),[handler.r,hash||'']);}});return $.anchorHandler;},add:function(regexp,callback,options){var opt=$.extend({handleClick:true,preserveHash:true},options);if(opt.handleClick){$('a[href~=#]').each(function(i,a){if(a.href.match(regexp)){$(a).bind('click.anchorHandler',function(){if(opt.preserveHash){window.location.hash=a.hash;}return callback.apply(this,[regexp,a.href]);});}});}handlers.push({r:regexp,cb:callback});$($.anchorHandler.apply);return $.anchorHandler;}}});})(jQuery);jQuery.cookie=function(name,value,options){if(typeof value!='undefined'){options=options||{};if(value===null){value='';options.expires=-1;}var expires='';if(options.expires&&(typeof options.expires=='number'||options.expires.toUTCString)){var date;if(typeof options.expires=='number'){date=new Date();date.setTime(date.getTime()+(options.expires*24*60*60*1000));}else{date=options.expires;}expires='; expires='+date.toUTCString();}var path=options.path?'; path='+(options.path):'';var domain=options.domain?'; domain='+(options.domain):'';var secure=options.secure?'; secure':'';document.cookie=[name,'=',encodeURIComponent(value),expires,path,domain,secure].join('');}else{var cookieValue=null;if(document.cookie&&document.cookie!=''){var cookies=document.cookie.split(';');for(var i=0;i=options.elements.length){log('invalid slide index: '+num);return;}options.nextSlide=num;if(this.cycleTimeout){clearTimeout(this.cycleTimeout);this.cycleTimeout=0;}go(options.elements,options,1,1);return;}if(this.cycleTimeout)clearTimeout(this.cycleTimeout);this.cycleTimeout=0;this.cyclePause=0;var $cont=$(this);var $slides=options.slideExpr?$(options.slideExpr,this):$cont.children();var els=$slides.get();if(els.length<2){log('terminating; too few slides: '+els.length);return;}var opts=$.extend({},$.fn.cycle.defaults,options||{},$.metadata?$cont.metadata():$.meta?$cont.data():{});if(opts.autostop)opts.countdown=opts.autostopCount||els.length;$cont.data('cycle.opts',opts);opts.container=this;opts.elements=els;opts.before=opts.before?[opts.before]:[];opts.after=opts.after?[opts.after]:[];opts.after.unshift(function(){opts.busy=0;});if(opts.continuous)opts.after.push(function(){go(els,opts,0,!opts.rev);});if(ie6&&opts.cleartype&&!opts.cleartypeNoBg)clearTypeFix($slides);var cls=this.className;opts.width=parseInt((cls.match(/w:(\d+)/)||[])[1])||opts.width;opts.height=parseInt((cls.match(/h:(\d+)/)||[])[1])||opts.height;opts.timeout=parseInt((cls.match(/t:(\d+)/)||[])[1])||opts.timeout;if($cont.css('position')=='static')$cont.css('position','relative');if(opts.width)$cont.width(opts.width);if(opts.height&&opts.height!='auto')$cont.height(opts.height);if(opts.random){opts.randomMap=[];for(var i=0;i=els.length)opts.startingSlide=0;var first=opts.startingSlide||0;$slides.css({position:'absolute',top:0,left:0}).hide().each(function(i){var z=first?i>=first?els.length-(i-first):first-i:els.length-i;$(this).css('z-index',z)});$(els[first]).css('opacity',1).show();if($.browser.msie)els[first].style.removeAttribute('filter');if(opts.fit&&opts.width)$slides.width(opts.width);if(opts.fit&&opts.height&&opts.height!='auto')$slides.height(opts.height);if(opts.pause)$cont.hover(function(){this.cyclePause=1;},function(){this.cyclePause=0;});var init=$.fn.cycle.transitions[opts.fx];if($.isFunction(init))init($cont,$slides,opts);else if(opts.fx!='custom')log('unknown transition: '+opts.fx);$slides.each(function(){var $el=$(this);this.cycleH=(opts.fit&&opts.height)?opts.height:$el.height();this.cycleW=(opts.fit&&opts.width)?opts.width:$el.width();});opts.cssBefore=opts.cssBefore||{};opts.animIn=opts.animIn||{};opts.animOut=opts.animOut||{};$slides.not(':eq('+first+')').css(opts.cssBefore);if(opts.cssFirst)$($slides[first]).css(opts.cssFirst);if(opts.timeout){if(opts.speed.constructor==String)opts.speed={slow:600,fast:200}[opts.speed]||400;if(!opts.sync)opts.speed=opts.speed/2;while((opts.timeout-opts.speed)<250)opts.timeout+=opts.speed;}if(opts.easing)opts.easeIn=opts.easeOut=opts.easing;if(!opts.speedIn)opts.speedIn=opts.speed;if(!opts.speedOut)opts.speedOut=opts.speed;opts.slideCount=els.length;opts.currSlide=first;if(opts.random){opts.nextSlide=opts.currSlide;if(++opts.randomIndex==els.length)opts.randomIndex=0;opts.nextSlide=opts.randomMap[opts.randomIndex];}else -opts.nextSlide=opts.startingSlide>=(els.length-1)?0:opts.startingSlide+1;var e0=$slides[first];if(opts.before.length)opts.before[0].apply(e0,[e0,e0,opts,true]);if(opts.after.length>1)opts.after[1].apply(e0,[e0,e0,opts,true]);if(opts.click&&!opts.next)opts.next=opts.click;if(opts.next)$(opts.next).bind('click',function(){return advance(els,opts,opts.rev?-1:1)});if(opts.prev)$(opts.prev).bind('click',function(){return advance(els,opts,opts.rev?1:-1)});if(opts.pager)buildPager(els,opts);opts.addSlide=function(newSlide){var $s=$(newSlide),s=$s[0];if(!opts.autostopCount)opts.countdown++;els.push(s);if(opts.els)opts.els.push(s);opts.slideCount=els.length;$s.css('position','absolute').appendTo($cont);if(ie6&&opts.cleartype&&!opts.cleartypeNoBg)clearTypeFix($s);if(opts.fit&&opts.width)$s.width(opts.width);if(opts.fit&&opts.height&&opts.height!='auto')$slides.height(opts.height);s.cycleH=(opts.fit&&opts.height)?opts.height:$s.height();s.cycleW=(opts.fit&&opts.width)?opts.width:$s.width();$s.css(opts.cssBefore);if(opts.pager)$.fn.cycle.createPagerAnchor(els.length-1,s,$(opts.pager),els,opts);if(typeof opts.onAddSlide=='function')opts.onAddSlide($s);};if(opts.timeout||opts.continuous)this.cycleTimeout=setTimeout(function(){go(els,opts,0,!opts.rev)},opts.continuous?10:opts.timeout+(opts.delay||0));});};function go(els,opts,manual,fwd){if(opts.busy)return;var p=opts.container,curr=els[opts.currSlide],next=els[opts.nextSlide];if(p.cycleTimeout===0&&!manual)return;if(!manual&&!p.cyclePause&&((opts.autostop&&(--opts.countdown<=0))||(opts.nowrap&&!opts.random&&opts.nextSlide=els.length){if(opts.nowrap)return false;opts.nextSlide=0;}}log('nextSlide: '+opts.nextSlide+'; randomIndex: '+opts.randomIndex);if(opts.prevNextClick&&typeof opts.prevNextClick=='function')opts.prevNextClick(val>0,opts.nextSlide,els[opts.nextSlide]);go(els,opts,1,val>=0);return false;};function buildPager(els,opts){var $p=$(opts.pager);$.each(els,function(i,o){$.fn.cycle.createPagerAnchor(i,o,$p,els,opts);});$.fn.cycle.updateActivePagerLink(opts.pager,opts.startingSlide);};$.fn.cycle.createPagerAnchor=function(i,el,$p,els,opts){var $a=(typeof opts.pagerAnchorBuilder=='function')?$(opts.pagerAnchorBuilder(i,el)):$(''+(i+1)+'');if($a.parents('body').length==0)$a.appendTo($p);$a.bind(opts.pagerEvent,function(){opts.nextSlide=i;var p=opts.container,timeout=p.cycleTimeout;if(timeout){clearTimeout(timeout);p.cycleTimeout=0;}if(typeof opts.pagerClick=='function')opts.pagerClick(opts.nextSlide,els[opts.nextSlide]);go(els,opts,1,opts.currSlide=0){var rgb=v.match(/\d+/g);return'#'+hex(rgb[0])+hex(rgb[1])+hex(rgb[2]);}if(v&&v!='transparent')return v;}return'#ffffff';};$slides.each(function(){$(this).css('background-color',getBg(this));});};$.fn.cycle.custom=function(curr,next,opts,cb){var $l=$(curr),$n=$(next);$n.css(opts.cssBefore);var fn=function(){$n.animate(opts.animIn,opts.speedIn,opts.easeIn,cb)};$l.animate(opts.animOut,opts.speedOut,opts.easeOut,function(){if(opts.cssAfter)$l.css(opts.cssAfter);if(!opts.sync)fn();});if(opts.sync)fn();};$.fn.cycle.transitions={fade:function($cont,$slides,opts){$slides.not(':eq('+opts.startingSlide+')').css('opacity',0);opts.before.push(function(){$(this).show()});opts.animIn={opacity:1};opts.animOut={opacity:0};opts.cssBefore={opacity:0};opts.cssAfter={display:'none'};}};$.fn.cycle.ver=function(){return ver;};$.fn.cycle.defaults={fx:'fade',timeout:4000,continuous:0,speed:1000,speedIn:null,speedOut:null,next:null,prev:null,prevNextClick:null,pager:null,pagerClick:null,pagerEvent:'click',pagerAnchorBuilder:null,before:null,after:null,end:null,easing:null,easeIn:null,easeOut:null,shuffle:null,animIn:null,animOut:null,cssBefore:null,cssAfter:null,fxFn:null,height:'auto',startingSlide:0,sync:1,random:0,fit:0,pause:0,autostop:0,autostopCount:0,delay:0,slideExpr:null,cleartype:0,nowrap:0};})(jQuery);(function($){$.fn.cycle.transitions.scrollUp=function($cont,$slides,opts){$cont.css('overflow','hidden');opts.before.push(function(curr,next,opts){$(this).show();opts.cssBefore.top=next.offsetHeight;opts.animOut.top=0-curr.offsetHeight;});opts.cssFirst={top:0};opts.animIn={top:0};opts.cssAfter={display:'none'};};$.fn.cycle.transitions.scrollDown=function($cont,$slides,opts){$cont.css('overflow','hidden');opts.before.push(function(curr,next,opts){$(this).show();opts.cssBefore.top=0-next.offsetHeight;opts.animOut.top=curr.offsetHeight;});opts.cssFirst={top:0};opts.animIn={top:0};opts.cssAfter={display:'none'};};$.fn.cycle.transitions.scrollLeft=function($cont,$slides,opts){$cont.css('overflow','hidden');opts.before.push(function(curr,next,opts){$(this).show();opts.cssBefore.left=next.offsetWidth;opts.animOut.left=0-curr.offsetWidth;});opts.cssFirst={left:0};opts.animIn={left:0};};$.fn.cycle.transitions.scrollRight=function($cont,$slides,opts){$cont.css('overflow','hidden');opts.before.push(function(curr,next,opts){$(this).show();opts.cssBefore.left=0-next.offsetWidth;opts.animOut.left=curr.offsetWidth;});opts.cssFirst={left:0};opts.animIn={left:0};};$.fn.cycle.transitions.scrollHorz=function($cont,$slides,opts){$cont.css('overflow','hidden').width();opts.before.push(function(curr,next,opts,fwd){$(this).show();var currW=curr.offsetWidth,nextW=next.offsetWidth;opts.cssBefore=fwd?{left:nextW}:{left:-nextW};opts.animIn.left=0;opts.animOut.left=fwd?-currW:currW;$slides.not(curr).css(opts.cssBefore);});opts.cssFirst={left:0};opts.cssAfter={display:'none'}};$.fn.cycle.transitions.scrollVert=function($cont,$slides,opts){$cont.css('overflow','hidden');opts.before.push(function(curr,next,opts,fwd){$(this).show();var currH=curr.offsetHeight,nextH=next.offsetHeight;opts.cssBefore=fwd?{top:-nextH}:{top:nextH};opts.animIn.top=0;opts.animOut.top=fwd?currH:-currH;$slides.not(curr).css(opts.cssBefore);});opts.cssFirst={top:0};opts.cssAfter={display:'none'}};$.fn.cycle.transitions.slideX=function($cont,$slides,opts){opts.before.push(function(curr,next,opts){$(curr).css('zIndex',1);});opts.onAddSlide=function($s){$s.hide();};opts.cssBefore={zIndex:2};opts.animIn={width:'show'};opts.animOut={width:'hide'};};$.fn.cycle.transitions.slideY=function($cont,$slides,opts){opts.before.push(function(curr,next,opts){$(curr).css('zIndex',1);});opts.onAddSlide=function($s){$s.hide();};opts.cssBefore={zIndex:2};opts.animIn={height:'show'};opts.animOut={height:'hide'};};$.fn.cycle.transitions.shuffle=function($cont,$slides,opts){var w=$cont.css('overflow','visible').width();$slides.css({left:0,top:0});opts.before.push(function(){$(this).show()});opts.speed=opts.speed/2;opts.random=0;opts.shuffle=opts.shuffle||{left:-w,top:15};opts.els=[];for(var i=0;i<$slides.length;i++)opts.els.push($slides[i]);for(var i=0;irv[i])return true;}return true;};$$.hasFlash.playerVersion=function(){try{try{var axo=new ActiveXObject('ShockwaveFlash.ShockwaveFlash.6');try{axo.AllowScriptAccess='always';}catch(e){return'6,0,0';}}catch(e){}return new ActiveXObject('ShockwaveFlash.ShockwaveFlash').GetVariable('$version').replace(/\D+/g,',').match(/^,?(.+),?$/)[1];}catch(e){try{if(navigator.mimeTypes["application/x-shockwave-flash"].enabledPlugin){return(navigator.plugins["Shockwave Flash 2.0"]||navigator.plugins["Shockwave Flash"]).description.replace(/\D+/g,",").match(/^,?(.+),?$/)[1];}}catch(e){}}return'0,0,0';};$$.htmlOptions={height:240,flashvars:{},pluginspage:'http://www.adobe.com/go/getflashplayer',src:'#',type:'application/x-shockwave-flash',width:320};$$.pluginOptions={expressInstall:false,update:true,version:'6.0.65'};$$.replace=function(htmlOptions){this.innerHTML='
        '+this.innerHTML+'
        ';jQuery(this).addClass('flash-replaced').prepend($$.transform(htmlOptions));};$$.update=function(htmlOptions){var url=String(location).split('?');url.splice(1,0,'?hasFlash=true&');url=url.join('');var msg='

        This content requires the Flash Player. Download Flash Player. Already have Flash Player? Click here.

        ';this.innerHTML=''+this.innerHTML+'';jQuery(this).addClass('flash-update').prepend(msg);};function toAttributeString(){var s='';for(var key in this)if(typeof this[key]!='function')s+=key+'="'+this[key]+'" ';return s;};function toFlashvarsString(){var s='';for(var key in this)if(typeof this[key]!='function')s+=key+'='+encodeURIComponent(this[key])+'&';return s.replace(/&$/,'');};$$.transform=function(htmlOptions){htmlOptions.toString=toAttributeString;if(htmlOptions.flashvars)htmlOptions.flashvars.toString=toFlashvarsString;return'';};if(window.attachEvent){window.attachEvent("onbeforeunload",function(){__flash_unloadHandler=function(){};__flash_savedUnloadHandler=function(){};});}})();(function($){$._i18n={trans:{},'default':'en',language:'en'};$.i18n=function(){var getTrans=function(ns,str){var trans=false;if($._i18n.trans[$._i18n.language]&&$._i18n.trans[$._i18n.language][ns]&&$._i18n.trans[$._i18n.language][ns][str]){trans=$._i18n.trans[$._i18n.language][ns][str];}else if($._i18n.trans[$._i18n['default']]&&$._i18n.trans[$._i18n['default']][ns]&&$._i18n.trans[$._i18n['default']][ns][str]){trans=$._i18n.trans[$._i18n['default']][ns][str];}return trans||str;};if(arguments.length<2&&arguments[0].length==2){return $._i18n.language=arguments[0];}else{if(typeof(arguments[1])=='string'){var trans=getTrans(arguments[0],arguments[1]);if(arguments[2]&&typeof(arguments[2])=='object'){return $.format(trans,arguments[2]);}else{return trans;}}else{var tmp=arguments[0].split('.');var lang=tmp[0];var ns=tmp[1]||'jQuery';if(!$._i18n.trans[lang]){$._i18n.trans[lang]={};$._i18n.trans[lang][ns]=arguments[1];}else{$.extend($._i18n.trans[lang][ns],arguments[1]);}}}};})(jQuery);(function($){$.ifixpng=function(customPixel){$.ifixpng.pixel=customPixel;};$.ifixpng.getPixel=function(){return $.ifixpng.pixel||'images/pixel.gif';};var hack={ltie7:$.browser.msie&&$.browser.version<7,filter:function(src){return"progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=true,sizingMethod=crop,src='"+src+"')";}};$.fn.ifixpng=hack.ltie7?function(){return this.each(function(){var $$=$(this);var base=$('base').attr('href');if($$.is('img')||$$.is('input')){if($$.attr('src')){if($$.attr('src').match(/.*\.png([?].*)?$/i)){var source=(base&&$$.attr('src').substring(0,1)!='/')?base+$$.attr('src'):$$.attr('src');$$.css({filter:hack.filter(source),width:$$.width(),height:$$.height()}).attr({src:$.ifixpng.getPixel()}).positionFix();}}}else{var image=$$.css('backgroundImage');if(image.match(/^url\(["']?(.*\.png([?].*)?)["']?\)$/i)){image=RegExp.$1;$$.css({backgroundImage:'none',filter:hack.filter(image)}).children().children().positionFix();}}});}:function(){return this;};$.fn.iunfixpng=hack.ltie7?function(){return this.each(function(){var $$=$(this);var src=$$.css('filter');if(src.match(/src=["']?(.*\.png([?].*)?)["']?/i)){src=RegExp.$1;if($$.is('img')||$$.is('input')){$$.attr({src:src}).css({filter:''});}else{$$.css({filter:'',background:'url('+src+')'});}}});}:function(){return this;};$.fn.positionFix=function(){return this.each(function(){var $$=$(this);var position=$$.css('position');if(position!='absolute'&&position!='relative'){$$.css({position:'relative'});}});};})(jQuery);(function($){$.event.special.mousewheel={setup:function(){var handler=$.event.special.mousewheel.handler;if($.browser.mozilla)$(this).bind('mousemove.mousewheel',function(event){$.data(this,'mwcursorposdata',{pageX:event.pageX,pageY:event.pageY,clientX:event.clientX,clientY:event.clientY});});if(this.addEventListener)this.addEventListener(($.browser.mozilla?'DOMMouseScroll':'mousewheel'),handler,false);else -this.onmousewheel=handler;},teardown:function(){var handler=$.event.special.mousewheel.handler;$(this).unbind('mousemove.mousewheel');if(this.removeEventListener)this.removeEventListener(($.browser.mozilla?'DOMMouseScroll':'mousewheel'),handler,false);else -this.onmousewheel=function(){};$.removeData(this,'mwcursorposdata');},handler:function(event){var args=Array.prototype.slice.call(arguments,1);event=$.event.fix(event||window.event);$.extend(event,$.data(this,'mwcursorposdata')||{});var delta=0,returnValue=true;if(event.wheelDelta)delta=event.wheelDelta/120;if(event.detail)delta=-event.detail/3;if($.browser.opera)delta=-event.wheelDelta;event.data=event.data||{};event.type="mousewheel";args.unshift(delta);args.unshift(event);return $.event.handle.apply(this,args);}};$.fn.extend({mousewheel:function(fn){return fn?this.bind("mousewheel",fn):this.trigger("mousewheel");},unmousewheel:function(fn){return this.unbind("mousewheel",fn);}});})(jQuery);(function($){var conversion={__repr:function(i){switch(this.__getType(i)){case'array':case'date':case'number':return i.toString();case'object':var o=[];for(x=0;x0){o=new Array(Math.ceil(l/p.length)).join(p).substr(0,t=!t?l:t==1?0:Math.ceil(l/2))+str+p.substr(0,l-t);}return o;},__getInput:function(arg,args){var key=arg.getKey();switch(this.__getType(args)){case'object':var keys=key.split('.');var obj=args;for(var subkey=0;subkey6)?Math.round(o.toExponential(arg.getPrecision())):o;},G:function(input,args){return this.g(input,args);},c:function(input,args){var match=input.match(/\w|\d/);return match&&match[0]||'';},r:function(input,args){return this.__repr(input);},s:function(input,args){return input.toString&&input.toString()||''+input;}};var Argument=function(arg,args){this.__arg=arg;this.__args=args;this.__max_precision=parseFloat('1.'+(new Array(32)).join('1'),10).toString().length-3;this.__def_precision=6;this.getString=function(){return this.__arg;};this.getKey=function(){return this.__arg.split(':')[0];};this.getFormat=function(){var match=this.getString().split(':');return(match&&match[1])?match[1]:'s';};this.getPrecision=function(){var match=this.getFormat().match(/\.(\d+|\*)/g);if(!match){return this.__def_precision;}else{match=match[0].slice(1);if(match!='*'){return parseInt(match,10);}else if(conversion.__getType(this.__args)=='array'){return this.__args[1]&&this.__args[0]||this.__def_precision;}else if(conversion.__getType(this.__args)=='object'){return this.__args[this.getKey()]&&this.__args[this.getKey()][0]||this.__def_precision;}else{return this.__def_precision;}}};this.getPaddingLength=function(){var match=false;if(this.isAlternate()){match=this.getString().match(/0?#0?(\d+)/);if(match&&match[1]){return parseInt(match[1],10);}}match=this.getString().match(/(0|\.)(\d+|\*)/g);return match&&parseInt(match[0].slice(1),10)||0;};this.getPaddingString=function(){var o='';if(this.isAlternate()){o=' ';}if(this.getFormat().match(/#0|0#|^0|\.\d+/)){o='0';}return o;};this.getFlags=function(){var match=this.getString().matc(/^(0|\#|\-|\+|\s)+/);return match&&match[0].split('')||[];};this.isAlternate=function(){return!!this.getFormat().match(/^0?#/);};};var arguments2Array=function(args,shift){var o=[];for(l=args.length,x=(shift||0)-1;xend||buffer.length<1){buffer.push(tmp[start]);}}return(buffer.length>1)?buffer.join(''):buffer[0];};var calc=function(str,args){return eval(format(str,args));};$.extend({format:format,calc:calc,strConversion:conversion,repeat:function(s,n){return new Array(n+1).join(s);},UTF8encode:function(s){return unescape(encodeURIComponent(s));},UTF8decode:function(s){return decodeURIComponent(escape(s));}});})(jQuery);(function($){$.timeago=function(timestamp){if(timestamp instanceof Date)return inWords(timestamp);else if(typeof timestamp=="string")return inWords($.timeago.parse(timestamp));else return inWords($.timeago.parse($(timestamp).attr("title")));};var $t=$.timeago;$.extend($.timeago,{settings:{refreshMillis:60000,allowFuture:false,strings:{ago:"ago",fromNow:"from now",seconds:"less than a minute",minute:"about a minute",minutes:"%d minutes",hour:"about an hour",hours:"about %d hours",day:"a day",days:"%d days",month:"about a month",months:"%d months",year:"about a year",years:"%d years"}},inWords:function(distanceMillis){var $l=this.settings.strings;var suffix=$l.ago;if(this.settings.allowFuture){if(distanceMillis<0)suffix=$l.fromNow;distanceMillis=Math.abs(distanceMillis);}var seconds=distanceMillis/1000;var minutes=seconds/60;var hours=minutes/60;var days=hours/24;var years=days/365;var words=seconds<45&&sprintf($l.seconds,Math.round(seconds))||seconds<90&&$l.minute||minutes<45&&sprintf($l.minutes,Math.round(minutes))||minutes<90&&$l.hour||hours<24&&sprintf($l.hours,Math.round(hours))||hours<48&&$l.day||days<30&&sprintf($l.days,Math.floor(days))||days<60&&$l.month||days<365&&sprintf($l.months,Math.floor(days/30))||years<2&&$l.year||sprintf($l.years,Math.floor(years));return words+" "+suffix;},parse:function(iso8601){var s=$.trim(iso8601);s=s.replace(/-/,"/").replace(/-/,"/");s=s.replace(/T/," ").replace(/Z/," UTC");s=s.replace(/([\+-]\d\d)\:?(\d\d)/," $1$2");return new Date(s);}});$.fn.timeago=function(){var self=this;self.each(refresh);var $s=$t.settings;if($s.refreshMillis>0){setInterval(function(){self.each(refresh);},$s.refreshMillis);}return self;};function refresh(){var date=$t.parse(this.title);if(!isNaN(date)){$(this).text(inWords(date));}return this;}function inWords(date){return $t.inWords(distance(date));}function distance(date){return(new Date().getTime()-date.getTime());}function sprintf(string,value){return string.replace(/%d/i,value);}if($.browser.msie&&$.browser.version<7.0){document.createElement('abbr');}})(jQuery);(function($){var youtubeURL='http://www.youtube.com/v/';var yl2e={onclick:function(){if($(this).next().hasClass('youtubeLinksToEmbed')){return false;}href=youtubeURL+this.href.match(/[a-zA-Z0-9-_]+$/)+'&rel=1';wrapper=$('');player=$('div:first',wrapper);player.flash({src:href,width:425,height:355});$(this).after(wrapper);wrapper.queue(function(){$(this).css('height',40);$(this).dequeue();$(this).slideDown();$(this).dequeue();});setTimeout(function(){wrapper.queue(function(){$(this).find('span').hide().end();$(this).dequeue();$(this).animate({height:375});$(this).dequeue();});setTimeout(function(){player.show();},500);},1500);return false;}};$.fn.youtubeLinksToEmbed=function(options){var opt=$.extend({autoOpen:false},options);$(this).find('a[href~=youtube.com/watch?v=]').addClass('youtubeLinksToEmbed').each(function(){$(this).click(yl2e.onclick);if(opt.autoOpen){$(this).trigger('click');}});};$.fn.youtubeInputsToEmbed=function(options){$(this).find('input[value~=youtube.com/watch?v=]').addClass('youtubeLinksToEmbed').each(function(){$('watch').insertAfter(this);});$(this).youtubeLinksToEmbed(options);};})(jQuery);$(document).ready(function(){$('body').youtubeLinksToEmbed();});if($.ui){$.widget('ui.toaster',{init:function(){var self=this;var wrapper='#ui-toaster-'+self.options.position;if(!$(wrapper).get(0)){$('
        ').attr('id','ui-toaster-'+self.options.position).appendTo('body');}self.toaster=$('