From 86d4d6669bb21fd220f6a2d0d0b2ad0e27954ed7 Mon Sep 17 00:00:00 2001
From: Rafael Reggiani Manzo
Date: Tue, 23 Oct 2012 15:21:17 -0200
Subject: [PATCH] Assets moved from the public and adapted to Rails 3 standard
---
app/assets/images/balloon-footer.png | Bin 0 -> 1953 bytes
app/assets/images/balloon-header.png | Bin 0 -> 1037 bytes
app/assets/images/balloon-middle.png | Bin 0 -> 267 bytes
app/assets/images/beta.gif | Bin 0 -> 60 bytes
app/assets/images/black-alpha-pixel-5.png | Bin 0 -> 178 bytes
app/assets/images/black-alpha-pixel.png | Bin 0 -> 178 bytes
app/assets/images/blocks/1.png | Bin 0 -> 1079 bytes
app/assets/images/blocks/1.svg | 77 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/images/blocks/2.png | Bin 0 -> 1350 bytes
app/assets/images/blocks/2.svg | 77 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/images/blocks/3.png | Bin 0 -> 1383 bytes
app/assets/images/blocks/3.svg | 77 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/images/bolota.gif | Bin 0 -> 70 bytes
app/assets/images/borda-esq-aba-azul.gif | Bin 0 -> 179 bytes
app/assets/images/bt-bookmark.gif | Bin 0 -> 1287 bytes
app/assets/images/calendar_date_select/calendar.gif | Bin 0 -> 581 bytes
app/assets/images/calendar_date_select/calendar.png | Bin 0 -> 1780 bytes
app/assets/images/catalog-expanders.png | Bin 0 -> 777 bytes
app/assets/images/ccc.gif | Bin 0 -> 149 bytes
app/assets/images/colorbox/border.png | Bin 0 -> 112 bytes
app/assets/images/colorbox/controls.png | Bin 0 -> 1249 bytes
app/assets/images/colorbox/ie6/borderBottomCenter.png | Bin 0 -> 111 bytes
app/assets/images/colorbox/ie6/borderBottomLeft.png | Bin 0 -> 215 bytes
app/assets/images/colorbox/ie6/borderBottomRight.png | Bin 0 -> 217 bytes
app/assets/images/colorbox/ie6/borderMiddleLeft.png | Bin 0 -> 108 bytes
app/assets/images/colorbox/ie6/borderMiddleRight.png | Bin 0 -> 108 bytes
app/assets/images/colorbox/ie6/borderTopCenter.png | Bin 0 -> 111 bytes
app/assets/images/colorbox/ie6/borderTopLeft.png | Bin 0 -> 216 bytes
app/assets/images/colorbox/ie6/borderTopRight.png | Bin 0 -> 214 bytes
app/assets/images/colorbox/loading.gif | Bin 0 -> 9427 bytes
app/assets/images/colorbox/loading_background.png | Bin 0 -> 157 bytes
app/assets/images/colorbox/overlay.png | Bin 0 -> 182 bytes
app/assets/images/colorpicker/apply.png | Bin 0 -> 955 bytes
app/assets/images/colorpicker/gradiente.png | Bin 0 -> 595 bytes
app/assets/images/colorpicker/indic.gif | Bin 0 -> 86 bytes
app/assets/images/colorpicker/overlay.png | Bin 0 -> 10355 bytes
app/assets/images/colorpicker/select.gif | Bin 0 -> 78 bytes
app/assets/images/comment-owner-bg-L.png | Bin 0 -> 188 bytes
app/assets/images/comment-owner-bg-N.png | Bin 0 -> 167 bytes
app/assets/images/comment-owner-bg-NL.png | Bin 0 -> 255 bytes
app/assets/images/comment-owner-bg-NO.png | Bin 0 -> 518 bytes
app/assets/images/comment-owner-bg-O.png | Bin 0 -> 198 bytes
app/assets/images/comment-owner-bg-S.png | Bin 0 -> 475 bytes
app/assets/images/comment-owner-bg-SL.png | Bin 0 -> 259 bytes
app/assets/images/comment-owner-bg-SO.png | Bin 0 -> 271 bytes
app/assets/images/comment-reply-owner-bg.png | Bin 0 -> 279 bytes
app/assets/images/control-panel/Makefile | 13 +++++++++++++
app/assets/images/control-panel/application-certificate.gif | Bin 0 -> 1802 bytes
app/assets/images/control-panel/application-certificate.png | Bin 0 -> 3278 bytes
app/assets/images/control-panel/application-certificate.svg | 443 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/images/control-panel/blocks.gif | Bin 0 -> 691 bytes
app/assets/images/control-panel/blocks.png | Bin 0 -> 651 bytes
app/assets/images/control-panel/blocks.svg | 334 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/images/control-panel/contact.gif | Bin 0 -> 1388 bytes
app/assets/images/control-panel/contact.png | Bin 0 -> 2707 bytes
app/assets/images/control-panel/contact.svg | 795 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/images/control-panel/edit-profile-enterprise.gif | Bin 0 -> 2126 bytes
app/assets/images/control-panel/edit-profile-enterprise.png | Bin 0 -> 3969 bytes
app/assets/images/control-panel/edit-profile-enterprise.svg | 549 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/images/control-panel/edit-profile-group.gif | Bin 0 -> 2093 bytes
app/assets/images/control-panel/edit-profile-group.png | Bin 0 -> 4065 bytes
app/assets/images/control-panel/edit-profile-group.svg | 675 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/images/control-panel/edit-profile.gif | Bin 0 -> 1809 bytes
app/assets/images/control-panel/edit-profile.png | Bin 0 -> 3251 bytes
app/assets/images/control-panel/edit-profile.svg | 590 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/images/control-panel/editpaste.gif | Bin 0 -> 1365 bytes
app/assets/images/control-panel/editpaste.png | Bin 0 -> 1765 bytes
app/assets/images/control-panel/editpaste.svg | 1 +
app/assets/images/control-panel/email.gif | Bin 0 -> 1873 bytes
app/assets/images/control-panel/email.png | Bin 0 -> 2500 bytes
app/assets/images/control-panel/email.svg | 1 +
app/assets/images/control-panel/emblem-favorite.gif | Bin 0 -> 1054 bytes
app/assets/images/control-panel/emblem-favorite.png | Bin 0 -> 2394 bytes
app/assets/images/control-panel/emblem-favorite.svg | 1 +
app/assets/images/control-panel/header-footer.gif | Bin 0 -> 899 bytes
app/assets/images/control-panel/header-footer.png | Bin 0 -> 773 bytes
app/assets/images/control-panel/header-footer.svg | 325 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/images/control-panel/important.gif | Bin 0 -> 1070 bytes
app/assets/images/control-panel/important.png | Bin 0 -> 2311 bytes
app/assets/images/control-panel/important.svg | 1 +
app/assets/images/control-panel/mail-mark-junk.png | Bin 0 -> 4035 bytes
app/assets/images/control-panel/mail-mark-junk.svg | 504 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/images/control-panel/package.gif | Bin 0 -> 1567 bytes
app/assets/images/control-panel/package.png | Bin 0 -> 2053 bytes
app/assets/images/control-panel/package.svg | 485 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/images/control-panel/password.gif | Bin 0 -> 1652 bytes
app/assets/images/control-panel/password.png | Bin 0 -> 2000 bytes
app/assets/images/control-panel/password.svg | 1 +
app/assets/images/control-panel/preferences-desktop-wallpaper.gif | Bin 0 -> 2086 bytes
app/assets/images/control-panel/preferences-desktop-wallpaper.png | Bin 0 -> 3253 bytes
app/assets/images/control-panel/preferences-desktop-wallpaper.svg | 1 +
app/assets/images/control-panel/set-geolocation.gif | Bin 0 -> 2219 bytes
app/assets/images/control-panel/set-geolocation.png | Bin 0 -> 4305 bytes
app/assets/images/control-panel/stop.gif | Bin 0 -> 1454 bytes
app/assets/images/control-panel/stop.png | Bin 0 -> 3136 bytes
app/assets/images/control-panel/stop.svg | 336 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/images/control-panel/system-file-manager.gif | Bin 0 -> 1095 bytes
app/assets/images/control-panel/system-file-manager.png | Bin 0 -> 1403 bytes
app/assets/images/control-panel/system-file-manager.svg | 1 +
app/assets/images/control-panel/system-users.gif | Bin 0 -> 1925 bytes
app/assets/images/control-panel/system-users.png | Bin 0 -> 3562 bytes
app/assets/images/control-panel/system-users.svg | 1 +
app/assets/images/control-panel/text-editor-disabled.gif | Bin 0 -> 1878 bytes
app/assets/images/control-panel/text-editor-disabled.png | 1 +
app/assets/images/control-panel/text-editor-disabled.svg | 1 +
app/assets/images/control-panel/text-editor.gif | Bin 0 -> 1833 bytes
app/assets/images/control-panel/text-editor.png | Bin 0 -> 2565 bytes
app/assets/images/control-panel/text-editor.svg | 1 +
app/assets/images/doc/activation-conlusion.en.png | Bin 0 -> 9668 bytes
app/assets/images/doc/activation-conlusion.pt.png | Bin 0 -> 11603 bytes
app/assets/images/doc/activation-question.en.png | Bin 0 -> 21710 bytes
app/assets/images/doc/activation-question.pt.png | Bin 0 -> 23004 bytes
app/assets/images/doc/add-member-enterprise.en.png | Bin 0 -> 19239 bytes
app/assets/images/doc/add-member-enterprise.pt.png | Bin 0 -> 20421 bytes
app/assets/images/doc/admin-panel-export-users.en.png | Bin 0 -> 9744 bytes
app/assets/images/doc/admin-panel-export-users.pt.png | Bin 0 -> 11070 bytes
app/assets/images/doc/admin-panel-manage-users.en.png | Bin 0 -> 21666 bytes
app/assets/images/doc/admin-panel-manage-users.pt.png | Bin 0 -> 24760 bytes
app/assets/images/doc/admin-panel-send-email.en.png | Bin 0 -> 9528 bytes
app/assets/images/doc/admin-panel-send-email.pt.png | Bin 0 -> 10689 bytes
app/assets/images/doc/admin-send-email.en.png | Bin 0 -> 17002 bytes
app/assets/images/doc/admin-send-email.pt.png | Bin 0 -> 16471 bytes
app/assets/images/doc/advanced-article-archives-list.en.png | Bin 0 -> 13905 bytes
app/assets/images/doc/advanced-article-archives-list.pt.png | Bin 0 -> 16153 bytes
app/assets/images/doc/advanced-article-created-link.en.png | Bin 0 -> 16076 bytes
app/assets/images/doc/advanced-article-created-link.pt.png | Bin 0 -> 16314 bytes
app/assets/images/doc/advanced-article-created-object.en.png | Bin 0 -> 15823 bytes
app/assets/images/doc/advanced-article-created-object.pt.png | Bin 0 -> 16983 bytes
app/assets/images/doc/advanced-article-insert-html.en.png | Bin 0 -> 15547 bytes
app/assets/images/doc/advanced-article-insert-html.pt.png | Bin 0 -> 16798 bytes
app/assets/images/doc/advanced-article-insert-links.en.png | Bin 0 -> 14301 bytes
app/assets/images/doc/advanced-article-insert-links.pt.png | Bin 0 -> 14654 bytes
app/assets/images/doc/advanced-article-popup-insert-html.en.png | Bin 0 -> 25518 bytes
app/assets/images/doc/advanced-article-popup-insert-html.pt.png | Bin 0 -> 25989 bytes
app/assets/images/doc/advanced-article-popup-insert-link.en.png | Bin 0 -> 10870 bytes
app/assets/images/doc/advanced-article-popup-insert-link.pt.png | Bin 0 -> 13102 bytes
app/assets/images/doc/advanced-article-upload-images.en.png | Bin 0 -> 17880 bytes
app/assets/images/doc/advanced-article-upload-images.pt.png | Bin 0 -> 18266 bytes
app/assets/images/doc/article-bigger-spread-view.en.png | Bin 0 -> 55019 bytes
app/assets/images/doc/article-bigger-spread-view.pt.png | Bin 0 -> 59572 bytes
app/assets/images/doc/article-block.en.png | Bin 0 -> 8130 bytes
app/assets/images/doc/article-block.pt.png | Bin 0 -> 8124 bytes
app/assets/images/doc/article-creation-categorization.en.png | Bin 0 -> 7513 bytes
app/assets/images/doc/article-creation-categorization.pt.png | Bin 0 -> 10382 bytes
app/assets/images/doc/article-creation-category-choosen.en.png | Bin 0 -> 12410 bytes
app/assets/images/doc/article-creation-category-choosen.pt.png | Bin 0 -> 30006 bytes
app/assets/images/doc/article-creation-options.en.png | Bin 0 -> 11411 bytes
app/assets/images/doc/article-creation-options.pt.png | Bin 0 -> 13693 bytes
app/assets/images/doc/article-creation-tags.en.png | Bin 0 -> 3616 bytes
app/assets/images/doc/article-creation-tags.pt.png | Bin 0 -> 3015 bytes
app/assets/images/doc/article-spread-view.en.png | Bin 0 -> 15515 bytes
app/assets/images/doc/article-spread-view.pt.png | Bin 0 -> 16449 bytes
app/assets/images/doc/article-spread.en.png | Bin 0 -> 18541 bytes
app/assets/images/doc/article-spread.pt.png | Bin 0 -> 18062 bytes
app/assets/images/doc/article-text-lead.en.png | Bin 0 -> 14196 bytes
app/assets/images/doc/article-text-lead.pt.png | Bin 0 -> 14203 bytes
app/assets/images/doc/article-text.en.png | Bin 0 -> 21005 bytes
app/assets/images/doc/article-text.pt.png | Bin 0 -> 19784 bytes
app/assets/images/doc/block-actions.en.png | Bin 0 -> 3671 bytes
app/assets/images/doc/blog-buttons.en.png | Bin 0 -> 6425 bytes
app/assets/images/doc/blog-buttons.pt.png | Bin 0 -> 6622 bytes
app/assets/images/doc/box-register.en.png | Bin 0 -> 33104 bytes
app/assets/images/doc/box-register.pt.png | Bin 0 -> 33025 bytes
app/assets/images/doc/change-password.en.png | Bin 0 -> 14187 bytes
app/assets/images/doc/change-password.pt.png | Bin 0 -> 11155 bytes
app/assets/images/doc/changing-role-enterprise-member.en.png | Bin 0 -> 10882 bytes
app/assets/images/doc/changing-role-enterprise-member.pt.png | Bin 0 -> 11035 bytes
app/assets/images/doc/closed-comment-box.en.png | Bin 0 -> 14601 bytes
app/assets/images/doc/closed-comment-box.pt.png | Bin 0 -> 15648 bytes
app/assets/images/doc/cms-article-icons.en.png | Bin 0 -> 3019 bytes
app/assets/images/doc/cms-article-icons.pt.png | Bin 0 -> 3019 bytes
app/assets/images/doc/cms-article-types.en.png | Bin 0 -> 22860 bytes
app/assets/images/doc/cms-article-types.pt.png | Bin 0 -> 20287 bytes
app/assets/images/doc/cms-blog-creation.en.png | Bin 0 -> 33909 bytes
app/assets/images/doc/cms-blog-creation.pt.png | Bin 0 -> 34335 bytes
app/assets/images/doc/cms-blog-public-visualization.en.png | Bin 0 -> 30103 bytes
app/assets/images/doc/cms-blog-public-visualization.pt.png | Bin 0 -> 31206 bytes
app/assets/images/doc/cms-folder-icons.en.png | Bin 0 -> 2430 bytes
app/assets/images/doc/cms-folder-icons.pt.png | Bin 0 -> 2430 bytes
app/assets/images/doc/cms-gallery-public-visualization.en.png | Bin 0 -> 29716 bytes
app/assets/images/doc/cms-gallery-public-visualization.pt.png | Bin 0 -> 30670 bytes
app/assets/images/doc/cms-new-article.en.png | Bin 0 -> 29802 bytes
app/assets/images/doc/cms-new-article.pt.png | Bin 0 -> 30477 bytes
app/assets/images/doc/cms-spread-article-icon.en.png | Bin 0 -> 24692 bytes
app/assets/images/doc/cms-spread-article-icon.pt.png | Bin 0 -> 25228 bytes
app/assets/images/doc/cms-uploading-files.en.png | Bin 0 -> 24675 bytes
app/assets/images/doc/cms-uploading-files.pt.png | Bin 0 -> 26547 bytes
app/assets/images/doc/cms.en.png | Bin 0 -> 28817 bytes
app/assets/images/doc/cms.pt.png | Bin 0 -> 29618 bytes
app/assets/images/doc/comments-of-logged-in-out-person.en.png | Bin 0 -> 35608 bytes
app/assets/images/doc/comments-of-logged-in-out-person.pt.png | Bin 0 -> 36579 bytes
app/assets/images/doc/comments.en.png | Bin 0 -> 14799 bytes
app/assets/images/doc/comments.pt.png | Bin 0 -> 14654 bytes
app/assets/images/doc/communities-block.en.png | Bin 0 -> 20837 bytes
app/assets/images/doc/communities-block.pt.png | Bin 0 -> 21690 bytes
app/assets/images/doc/communities-search-field.en.png | Bin 0 -> 48251 bytes
app/assets/images/doc/communities-search-field.pt.png | Bin 0 -> 48736 bytes
app/assets/images/doc/communities-search-results-with-example.en.png | Bin 0 -> 24421 bytes
app/assets/images/doc/communities-search-results-with-example.pt.png | Bin 0 -> 24967 bytes
app/assets/images/doc/community-balloon-closed-en.png | Bin 0 -> 8141 bytes
app/assets/images/doc/community-balloon-closed.en.png | Bin 0 -> 8141 bytes
app/assets/images/doc/community-balloon-en.png | Bin 0 -> 14787 bytes
app/assets/images/doc/community-balloon-pt.png | Bin 0 -> 13267 bytes
app/assets/images/doc/community-balloon.en.png | Bin 0 -> 14787 bytes
app/assets/images/doc/community-balloon.pt.png | Bin 0 -> 13267 bytes
app/assets/images/doc/community-control-panel-manage-members.en.png | Bin 0 -> 35386 bytes
app/assets/images/doc/community-control-panel-manage-members.pt.png | Bin 0 -> 36923 bytes
app/assets/images/doc/community-control-panel-with-approval-task.en.png | Bin 0 -> 11485 bytes
app/assets/images/doc/community-control-panel-with-approval-task.pt.png | Bin 0 -> 12060 bytes
app/assets/images/doc/community-control-panel-with-tasks.en.png | Bin 0 -> 11076 bytes
app/assets/images/doc/community-control-panel-with-tasks.pt.png | Bin 0 -> 11569 bytes
app/assets/images/doc/community-creation-form.en.png | Bin 0 -> 27317 bytes
app/assets/images/doc/community-creation-form.pt.png | Bin 0 -> 28206 bytes
app/assets/images/doc/community-creation.en.png | Bin 0 -> 27303 bytes
app/assets/images/doc/community-creation.pt.png | Bin 0 -> 28294 bytes
app/assets/images/doc/community-edit-sideboxes.en.png | Bin 0 -> 25732 bytes
app/assets/images/doc/community-edit-sideboxes.pt.png | Bin 0 -> 75674 bytes
app/assets/images/doc/community-image-block.en.png | Bin 0 -> 32805 bytes
app/assets/images/doc/community-image-block.pt.png | Bin 0 -> 32812 bytes
app/assets/images/doc/community-import-invitation-step-1.en.png | Bin 0 -> 20669 bytes
app/assets/images/doc/community-import-invitation-step-1.pt.png | Bin 0 -> 22366 bytes
app/assets/images/doc/community-import-invitation-step-2.en.png | Bin 0 -> 38317 bytes
app/assets/images/doc/community-import-invitation-step-2.pt.png | Bin 0 -> 40928 bytes
app/assets/images/doc/community-info-block.en.png | Bin 0 -> 21859 bytes
app/assets/images/doc/community-info-block.pt.png | Bin 0 -> 21646 bytes
app/assets/images/doc/community-manually-invitation-step-1.en.png | Bin 0 -> 15506 bytes
app/assets/images/doc/community-manually-invitation-step-1.pt.png | Bin 0 -> 16035 bytes
app/assets/images/doc/community-manually-invitation-step-2.en.png | Bin 0 -> 28713 bytes
app/assets/images/doc/community-manually-invitation-step-2.pt.png | Bin 0 -> 31579 bytes
app/assets/images/doc/community-members-with-invitation-button.en.png | Bin 0 -> 19444 bytes
app/assets/images/doc/community-members-with-invitation-button.pt.png | Bin 0 -> 19963 bytes
app/assets/images/doc/community-members-with-send-mail-button.en.png | Bin 0 -> 32532 bytes
app/assets/images/doc/community-members-with-send-mail-button.pt.png | Bin 0 -> 32410 bytes
app/assets/images/doc/community-network-block.en.png | Bin 0 -> 12335 bytes
app/assets/images/doc/community-network-block.pt.png | Bin 0 -> 11689 bytes
app/assets/images/doc/community-send-email.en.png | Bin 0 -> 17614 bytes
app/assets/images/doc/community-send-email.pt.png | Bin 0 -> 17164 bytes
app/assets/images/doc/community-sideboxes-add-block.en.png | Bin 0 -> 26709 bytes
app/assets/images/doc/community-sideboxes-add-block.pt.png | Bin 0 -> 26765 bytes
app/assets/images/doc/confirmation-adding-friend.en.png | Bin 0 -> 18134 bytes
app/assets/images/doc/confirmation-adding-friend.pt.png | Bin 0 -> 18842 bytes
app/assets/images/doc/contact-button.en.png | Bin 0 -> 21201 bytes
app/assets/images/doc/contact-button.pt.png | Bin 0 -> 20538 bytes
app/assets/images/doc/control-panel-change-password.en.png | Bin 0 -> 46830 bytes
app/assets/images/doc/control-panel-change-password.pt.png | Bin 0 -> 48458 bytes
app/assets/images/doc/control-panel-community-edit-appearance.en.png | Bin 0 -> 34489 bytes
app/assets/images/doc/control-panel-community-edit-appearance.pt.png | Bin 0 -> 36486 bytes
app/assets/images/doc/control-panel-community-edit-header-footer.en.png | Bin 0 -> 35200 bytes
app/assets/images/doc/control-panel-community-edit-header-footer.pt.png | Bin 0 -> 36671 bytes
app/assets/images/doc/control-panel-community-edit-sideboxes.en.png | Bin 0 -> 35075 bytes
app/assets/images/doc/control-panel-community-edit-sideboxes.pt.png | Bin 0 -> 36930 bytes
app/assets/images/doc/control-panel-content-management.en.png | Bin 0 -> 46256 bytes
app/assets/images/doc/control-panel-content-management.pt.png | Bin 0 -> 48516 bytes
app/assets/images/doc/control-panel-create-blog.en.png | Bin 0 -> 48046 bytes
app/assets/images/doc/control-panel-create-blog.pt.png | Bin 0 -> 50685 bytes
app/assets/images/doc/control-panel-disable-enterprise.en.png | Bin 0 -> 46970 bytes
app/assets/images/doc/control-panel-disable-enterprise.pt.png | Bin 0 -> 50086 bytes
app/assets/images/doc/control-panel-enterprise-edit-appearance.en.png | Bin 0 -> 47016 bytes
app/assets/images/doc/control-panel-enterprise-edit-appearance.pt.png | Bin 0 -> 50141 bytes
app/assets/images/doc/control-panel-enterprise-edit-header-footer.en.png | Bin 0 -> 47051 bytes
app/assets/images/doc/control-panel-enterprise-edit-header-footer.pt.png | Bin 0 -> 50159 bytes
app/assets/images/doc/control-panel-enterprise-edit-profile-info.en.png | Bin 0 -> 47613 bytes
app/assets/images/doc/control-panel-enterprise-edit-profile-info.pt.png | Bin 0 -> 50666 bytes
app/assets/images/doc/control-panel-enterprise-edit-sideboxes.en.png | Bin 0 -> 47121 bytes
app/assets/images/doc/control-panel-enterprise-edit-sideboxes.pt.png | Bin 0 -> 50068 bytes
app/assets/images/doc/control-panel-manage-groups.en.png | Bin 0 -> 48421 bytes
app/assets/images/doc/control-panel-manage-groups.pt.png | Bin 0 -> 51220 bytes
app/assets/images/doc/control-panel-manage-members.en.png | Bin 0 -> 46468 bytes
app/assets/images/doc/control-panel-manage-members.pt.png | Bin 0 -> 49821 bytes
app/assets/images/doc/control-panel-manage-products.en.png | Bin 0 -> 44508 bytes
app/assets/images/doc/control-panel-manage-products.pt.png | Bin 0 -> 47986 bytes
app/assets/images/doc/control-panel-menu.en.png | Bin 0 -> 10011 bytes
app/assets/images/doc/control-panel-menu.pt.png | Bin 0 -> 10653 bytes
app/assets/images/doc/control-panel-person-delete-profile.en.png | Bin 0 -> 27581 bytes
app/assets/images/doc/control-panel-person-delete-profile.pt.png | Bin 0 -> 28366 bytes
app/assets/images/doc/control-panel-person-edit-profile-info.en.png | Bin 0 -> 45688 bytes
app/assets/images/doc/control-panel-person-edit-profile-info.pt.png | Bin 0 -> 48558 bytes
app/assets/images/doc/control-panel-user-edit-appearance.en.png | Bin 0 -> 46608 bytes
app/assets/images/doc/control-panel-user-edit-appearance.pt.png | Bin 0 -> 48644 bytes
app/assets/images/doc/control-panel-user-edit-header-footer.en.png | Bin 0 -> 47314 bytes
app/assets/images/doc/control-panel-user-edit-header-footer.pt.png | Bin 0 -> 48956 bytes
app/assets/images/doc/control-panel-user-edit-sideboxes.en.png | Bin 0 -> 47107 bytes
app/assets/images/doc/control-panel-user-edit-sideboxes.pt.png | Bin 0 -> 49118 bytes
app/assets/images/doc/control-panel-with-tasks.en.png | Bin 0 -> 11384 bytes
app/assets/images/doc/control-panel-with-tasks.pt.png | Bin 0 -> 11869 bytes
app/assets/images/doc/disable-enterprise-confirmation.en.png | Bin 0 -> 12091 bytes
app/assets/images/doc/disable-enterprise-confirmation.pt.png | Bin 0 -> 12253 bytes
app/assets/images/doc/disabled-enterprise-block.en.png | Bin 0 -> 4585 bytes
app/assets/images/doc/disabled-enterprise-block.pt.png | Bin 0 -> 4855 bytes
app/assets/images/doc/edit-appearance.en.png | Bin 0 -> 13457 bytes
app/assets/images/doc/edit-appearance.pt.png | Bin 0 -> 13351 bytes
app/assets/images/doc/edit-block.en.png | Bin 0 -> 15391 bytes
app/assets/images/doc/edit-block.pt.png | Bin 0 -> 15382 bytes
app/assets/images/doc/edit-header-footer.en.png | Bin 0 -> 91368 bytes
app/assets/images/doc/edit-header-footer.pt.png | Bin 0 -> 93776 bytes
app/assets/images/doc/enterprise-activation-box.en.png | Bin 0 -> 54565 bytes
app/assets/images/doc/enterprise-activation-box.pt.png | Bin 0 -> 54857 bytes
app/assets/images/doc/enterprise-activation-terms.en.png | Bin 0 -> 8881 bytes
app/assets/images/doc/enterprise-activation-terms.pt.png | Bin 0 -> 9370 bytes
app/assets/images/doc/enterprise-edit-profile-categories.en.png | Bin 0 -> 11803 bytes
app/assets/images/doc/enterprise-edit-profile-categories.pt.png | Bin 0 -> 11617 bytes
app/assets/images/doc/enterprise-edit-profile-info-add-picture.en.png | Bin 0 -> 6203 bytes
app/assets/images/doc/enterprise-edit-profile-info-add-picture.pt.png | Bin 0 -> 5276 bytes
app/assets/images/doc/enterprise-edit-profile-info-change-picture.en.png | Bin 0 -> 18971 bytes
app/assets/images/doc/enterprise-edit-profile-info-change-picture.pt.png | Bin 0 -> 18518 bytes
app/assets/images/doc/enterprise-edit-profile-info-general-information.en.png | Bin 0 -> 15799 bytes
app/assets/images/doc/enterprise-edit-profile-info-general-information.pt.png | Bin 0 -> 16759 bytes
app/assets/images/doc/enterprise-edit-profile-info-moderation-options.en.png | Bin 0 -> 12904 bytes
app/assets/images/doc/enterprise-edit-profile-info-moderation-options.pt.png | Bin 0 -> 12928 bytes
app/assets/images/doc/enterprise-edit-profile-privacy-options.en.png | Bin 0 -> 13549 bytes
app/assets/images/doc/enterprise-edit-profile-privacy-options.pt.png | Bin 0 -> 14679 bytes
app/assets/images/doc/enterprise-edit-sideboxes.en.png | Bin 0 -> 97200 bytes
app/assets/images/doc/enterprise-edit-sideboxes.pt.png | Bin 0 -> 100924 bytes
app/assets/images/doc/enterprise-image-block.en.png | Bin 0 -> 34630 bytes
app/assets/images/doc/enterprise-image-block.pt.png | Bin 0 -> 34545 bytes
app/assets/images/doc/enterprise-info-block.en.png | Bin 0 -> 23777 bytes
app/assets/images/doc/enterprise-info-block.pt.png | Bin 0 -> 23418 bytes
app/assets/images/doc/enterprise-members-list.en.png | Bin 0 -> 11345 bytes
app/assets/images/doc/enterprise-members-list.pt.png | Bin 0 -> 11722 bytes
app/assets/images/doc/enterprise-network-block.en.png | Bin 0 -> 10300 bytes
app/assets/images/doc/enterprise-network-block.pt.png | Bin 0 -> 9561 bytes
app/assets/images/doc/enterprise-new-product-last-category.en.png | Bin 0 -> 33153 bytes
app/assets/images/doc/enterprise-new-product-no-category.en.png | Bin 0 -> 21536 bytes
app/assets/images/doc/enterprise-new-product-second-category.en.png | Bin 0 -> 26147 bytes
app/assets/images/doc/enterprise-product-add-input-button.en.png | Bin 0 -> 14943 bytes
app/assets/images/doc/enterprise-product-add-input-form.en.png | Bin 0 -> 29770 bytes
app/assets/images/doc/enterprise-product-change-image-form.en.png | Bin 0 -> 30127 bytes
app/assets/images/doc/enterprise-product-complete.en.png | Bin 0 -> 69736 bytes
app/assets/images/doc/enterprise-product-edit-basic-info-form.en.png | Bin 0 -> 22449 bytes
app/assets/images/doc/enterprise-product-edit-description-form.en.png | Bin 0 -> 14748 bytes
app/assets/images/doc/enterprise-product-edit-name-form.en.png | Bin 0 -> 13528 bytes
app/assets/images/doc/enterprise-product-list-new-product-button.en.png | Bin 0 -> 14467 bytes
app/assets/images/doc/enterprise-product-list-new-product-button.pt.png | Bin 0 -> 14510 bytes
app/assets/images/doc/enterprise-product.en.png | Bin 0 -> 33184 bytes
app/assets/images/doc/enterprise-sideboxes-add-block.en.png | Bin 0 -> 26709 bytes
app/assets/images/doc/enterprise-sideboxes-add-block.pt.png | Bin 0 -> 27731 bytes
app/assets/images/doc/enterprises-block.en.png | Bin 0 -> 12515 bytes
app/assets/images/doc/enterprises-block.pt.png | Bin 0 -> 12865 bytes
app/assets/images/doc/enterprises-search-field.en.png | Bin 0 -> 22688 bytes
app/assets/images/doc/enterprises-search-field.pt.png | Bin 0 -> 23334 bytes
app/assets/images/doc/enterprises-search-results-with-example.en.png | Bin 0 -> 19992 bytes
app/assets/images/doc/enterprises-search-results-with-example.pt.png | Bin 0 -> 23334 bytes
app/assets/images/doc/environment-homepage-with-login-button.en.png | Bin 0 -> 32840 bytes
app/assets/images/doc/environment-homepage-with-login-button.pt.png | Bin 0 -> 32733 bytes
app/assets/images/doc/favorite-enterprises-block.en.png | Bin 0 -> 6526 bytes
app/assets/images/doc/favorite-enterprises-block.pt.png | Bin 0 -> 7681 bytes
app/assets/images/doc/feed-reader-block.en.png | Bin 0 -> 5793 bytes
app/assets/images/doc/feed-reader-block.pt.png | Bin 0 -> 6023 bytes
app/assets/images/doc/friends-block.en.png | Bin 0 -> 25813 bytes
app/assets/images/doc/friends-block.pt.png | Bin 0 -> 26716 bytes
app/assets/images/doc/gallery-buttons.en.png | Bin 0 -> 10195 bytes
app/assets/images/doc/gallery-buttons.pt.png | Bin 0 -> 10804 bytes
app/assets/images/doc/groups-list-with-create-community.en.png | Bin 0 -> 25000 bytes
app/assets/images/doc/groups-list-with-create-community.pt.png | Bin 0 -> 25668 bytes
app/assets/images/doc/groups-list-with-manage-community.en.png | Bin 0 -> 23532 bytes
app/assets/images/doc/groups-list-with-manage-community.pt.png | Bin 0 -> 24020 bytes
app/assets/images/doc/groups-list-with-manage-enterprise.en.png | Bin 0 -> 23307 bytes
app/assets/images/doc/groups-list-with-manage-enterprise.pt.png | Bin 0 -> 23783 bytes
app/assets/images/doc/join-community-confirmation.en.png | Bin 0 -> 12743 bytes
app/assets/images/doc/join-community-confirmation.pt.png | Bin 0 -> 11879 bytes
app/assets/images/doc/joining-community-button.en.png | Bin 0 -> 114913 bytes
app/assets/images/doc/joining-community-button.pt.png | Bin 0 -> 120894 bytes
app/assets/images/doc/links-block.en.png | Bin 0 -> 7097 bytes
app/assets/images/doc/links-block.pt.png | Bin 0 -> 7081 bytes
app/assets/images/doc/location-map-block.en.png | Bin 0 -> 31614 bytes
app/assets/images/doc/location-map-block.pt.png | Bin 0 -> 31572 bytes
app/assets/images/doc/manage-friends.en.png | Bin 0 -> 45780 bytes
app/assets/images/doc/manage-friends.pt.png | Bin 0 -> 48003 bytes
app/assets/images/doc/members-block.en.png | Bin 0 -> 14706 bytes
app/assets/images/doc/members-block.pt.png | Bin 0 -> 15409 bytes
app/assets/images/doc/menu-admin.en.png | Bin 0 -> 10712 bytes
app/assets/images/doc/menu-admin.pt.png | Bin 0 -> 11265 bytes
app/assets/images/doc/menu-communities.en.png | Bin 0 -> 12682 bytes
app/assets/images/doc/menu-communities.pt.png | Bin 0 -> 12700 bytes
app/assets/images/doc/menu-control-panel.en.png | Bin 0 -> 10011 bytes
app/assets/images/doc/menu-control-panel.pt.png | Bin 0 -> 10653 bytes
app/assets/images/doc/menu-enterprises.en.png | Bin 0 -> 12565 bytes
app/assets/images/doc/menu-enterprises.pt.png | Bin 0 -> 12998 bytes
app/assets/images/doc/menu-logout.en.png | Bin 0 -> 10904 bytes
app/assets/images/doc/menu-logout.pt.png | Bin 0 -> 10711 bytes
app/assets/images/doc/menu-more-active-communities.en.png | Bin 0 -> 22951 bytes
app/assets/images/doc/menu-more-active-communities.pt.png | Bin 0 -> 25864 bytes
app/assets/images/doc/menu-more-active-people.en.png | Bin 0 -> 31432 bytes
app/assets/images/doc/menu-more-active-people.pt.png | Bin 0 -> 33021 bytes
app/assets/images/doc/menu-more-popular-communities.en.png | Bin 0 -> 24080 bytes
app/assets/images/doc/menu-more-popular-communities.pt.png | Bin 0 -> 25215 bytes
app/assets/images/doc/menu-more-popular-people.en.png | Bin 0 -> 31182 bytes
app/assets/images/doc/menu-more-popular-people.pt.png | Bin 0 -> 32053 bytes
app/assets/images/doc/menu-more-recent-communities.en.png | Bin 0 -> 23113 bytes
app/assets/images/doc/menu-more-recent-communities.pt.png | Bin 0 -> 26099 bytes
app/assets/images/doc/menu-more-recent-people.en.png | Bin 0 -> 31527 bytes
app/assets/images/doc/menu-more-recent-people.pt.png | Bin 0 -> 24386 bytes
app/assets/images/doc/menu-people.en.png | Bin 0 -> 12138 bytes
app/assets/images/doc/menu-people.pt.png | Bin 0 -> 12302 bytes
app/assets/images/doc/menu-products.en.png | Bin 0 -> 12296 bytes
app/assets/images/doc/menu-products.pt.png | Bin 0 -> 12276 bytes
app/assets/images/doc/menu-search.en.png | Bin 0 -> 12002 bytes
app/assets/images/doc/menu-search.pt.png | Bin 0 -> 11715 bytes
app/assets/images/doc/more-active-communities-detail.en.png | Bin 0 -> 6686 bytes
app/assets/images/doc/more-active-communities-detail.pt.png | Bin 0 -> 6731 bytes
app/assets/images/doc/more-active-communities-with-example.en.png | Bin 0 -> 13981 bytes
app/assets/images/doc/more-active-communities-with-example.pt.png | Bin 0 -> 13842 bytes
app/assets/images/doc/more-active-communities.en.png | Bin 0 -> 26776 bytes
app/assets/images/doc/more-active-communities.pt.png | Bin 0 -> 26558 bytes
app/assets/images/doc/more-active-people-detail.en.png | Bin 0 -> 5141 bytes
app/assets/images/doc/more-active-people-detail.pt.png | Bin 0 -> 5115 bytes
app/assets/images/doc/more-active-people-with-example.en.png | Bin 0 -> 13773 bytes
app/assets/images/doc/more-active-people-with-example.pt.png | Bin 0 -> 13700 bytes
app/assets/images/doc/more-active-people.en.png | Bin 0 -> 29664 bytes
app/assets/images/doc/more-active-people.pt.png | Bin 0 -> 29948 bytes
app/assets/images/doc/more-popular-communities-detail.en.png | Bin 0 -> 6561 bytes
app/assets/images/doc/more-popular-communities-detail.pt.png | Bin 0 -> 6677 bytes
app/assets/images/doc/more-popular-communities-with-example.en.png | Bin 0 -> 13407 bytes
app/assets/images/doc/more-popular-communities-with-example.pt.png | Bin 0 -> 13670 bytes
app/assets/images/doc/more-popular-communities.en.png | Bin 0 -> 25275 bytes
app/assets/images/doc/more-popular-communities.pt.png | Bin 0 -> 25189 bytes
app/assets/images/doc/more-popular-people-detail.en.png | Bin 0 -> 5080 bytes
app/assets/images/doc/more-popular-people-detail.pt.png | Bin 0 -> 5072 bytes
app/assets/images/doc/more-popular-people-with-example.en.png | Bin 0 -> 12961 bytes
app/assets/images/doc/more-popular-people-with-example.pt.png | Bin 0 -> 13413 bytes
app/assets/images/doc/more-popular-people.en.png | Bin 0 -> 31706 bytes
app/assets/images/doc/more-popular-people.pt.png | Bin 0 -> 32130 bytes
app/assets/images/doc/more-recent-communities-detail.en.png | Bin 0 -> 7225 bytes
app/assets/images/doc/more-recent-communities-detail.pt.png | Bin 0 -> 7355 bytes
app/assets/images/doc/more-recent-communities-with-example.en.png | Bin 0 -> 14371 bytes
app/assets/images/doc/more-recent-communities-with-example.pt.png | Bin 0 -> 14951 bytes
app/assets/images/doc/more-recent-communities.en.png | Bin 0 -> 26855 bytes
app/assets/images/doc/more-recent-communities.pt.png | Bin 0 -> 27718 bytes
app/assets/images/doc/more-recent-people-detail.en.png | Bin 0 -> 5829 bytes
app/assets/images/doc/more-recent-people-detail.pt.png | Bin 0 -> 5942 bytes
app/assets/images/doc/more-recent-people-with-example.en.png | Bin 0 -> 14022 bytes
app/assets/images/doc/more-recent-people-with-example.pt.png | Bin 0 -> 14863 bytes
app/assets/images/doc/more-recent-people.en.png | Bin 0 -> 34745 bytes
app/assets/images/doc/more-recent-people.pt.png | Bin 0 -> 35875 bytes
app/assets/images/doc/new-folder.en.png | Bin 0 -> 29766 bytes
app/assets/images/doc/new-folder.pt.png | Bin 0 -> 32447 bytes
app/assets/images/doc/open-comment-box-for-logged-in.en.png | Bin 0 -> 9160 bytes
app/assets/images/doc/open-comment-box-for-logged-in.pt.png | Bin 0 -> 10499 bytes
app/assets/images/doc/open-comment-box-for-not-logged-in.en.png | Bin 0 -> 14210 bytes
app/assets/images/doc/open-comment-box-for-not-logged-in.pt.png | Bin 0 -> 16247 bytes
app/assets/images/doc/other-person-view-profile-link.en.png | Bin 0 -> 48146 bytes
app/assets/images/doc/other-person-view-profile-link.pt.png | Bin 0 -> 48555 bytes
app/assets/images/doc/people-search-field.en.png | Bin 0 -> 49899 bytes
app/assets/images/doc/people-search-field.pt.png | Bin 0 -> 50475 bytes
app/assets/images/doc/people-search-results-with-example.en.png | Bin 0 -> 15278 bytes
app/assets/images/doc/people-search-results-with-example.pt.png | Bin 0 -> 15858 bytes
app/assets/images/doc/person-activities-list.en.png | Bin 0 -> 51683 bytes
app/assets/images/doc/person-activities-list.pt.png | Bin 0 -> 53725 bytes
app/assets/images/doc/person-balloon-closed-en.png | Bin 0 -> 6584 bytes
app/assets/images/doc/person-balloon-closed.en.png | Bin 0 -> 6584 bytes
app/assets/images/doc/person-balloon-en.png | Bin 0 -> 12277 bytes
app/assets/images/doc/person-balloon-pt.png | Bin 0 -> 12966 bytes
app/assets/images/doc/person-balloon.en.png | Bin 0 -> 12277 bytes
app/assets/images/doc/person-balloon.pt.png | Bin 0 -> 12966 bytes
app/assets/images/doc/person-delete-profile-confirmation.en.png | Bin 0 -> 13375 bytes
app/assets/images/doc/person-delete-profile-confirmation.pt.png | Bin 0 -> 13981 bytes
app/assets/images/doc/person-edit-profile-categories.en.png | Bin 0 -> 24323 bytes
app/assets/images/doc/person-edit-profile-categories.pt.png | Bin 0 -> 25211 bytes
app/assets/images/doc/person-edit-profile-info-change-picture.en.png | Bin 0 -> 20640 bytes
app/assets/images/doc/person-edit-profile-info-change-picture.pt.png | Bin 0 -> 20093 bytes
app/assets/images/doc/person-edit-profile-info-general-informationen.en.png | Bin 0 -> 11650 bytes
app/assets/images/doc/person-edit-profile-info-general-informationen.pt.png | Bin 0 -> 12938 bytes
app/assets/images/doc/person-edit-profile-privacy-options.en.png | Bin 0 -> 13897 bytes
app/assets/images/doc/person-edit-profile-privacy-options.pt.png | Bin 0 -> 14228 bytes
app/assets/images/doc/person-view-profile-link.en.png | Bin 0 -> 42751 bytes
app/assets/images/doc/person-view-profile-link.pt.png | Bin 0 -> 42472 bytes
app/assets/images/doc/person-wall-scrap-reply-button.en.png | Bin 0 -> 32889 bytes
app/assets/images/doc/person-wall-scrap-reply-form.en.png | Bin 0 -> 40929 bytes
app/assets/images/doc/person-wall-scrap-reply-form.pt.png | Bin 0 -> 41950 bytes
app/assets/images/doc/person-wall-scrap-reply-sent.en.png | Bin 0 -> 34429 bytes
app/assets/images/doc/person-wall-scrap-reply-sent.pt.png | Bin 0 -> 34743 bytes
app/assets/images/doc/person-wall-scrap-sent.en.png | Bin 0 -> 25913 bytes
app/assets/images/doc/person-wall-scrap-sent.pt.png | Bin 0 -> 29733 bytes
app/assets/images/doc/person-wall-writing-scrap.en.png | Bin 0 -> 20981 bytes
app/assets/images/doc/person-wall-writing-scrap.pt.png | Bin 0 -> 20203 bytes
app/assets/images/doc/products-block.en.png | Bin 0 -> 7553 bytes
app/assets/images/doc/products-block.pt.png | Bin 0 -> 7257 bytes
app/assets/images/doc/products-search-field.en.png | Bin 0 -> 41796 bytes
app/assets/images/doc/products-search-field.pt.png | Bin 0 -> 42149 bytes
app/assets/images/doc/products-search-results-with-example.en.png | Bin 0 -> 18909 bytes
app/assets/images/doc/products-search-results-with-example.pt.png | Bin 0 -> 18938 bytes
app/assets/images/doc/profile-image-block.en.png | Bin 0 -> 33475 bytes
app/assets/images/doc/profile-image-block.pt.png | Bin 0 -> 33548 bytes
app/assets/images/doc/profile-info-block.en.png | Bin 0 -> 22656 bytes
app/assets/images/doc/profile-info-block.pt.png | Bin 0 -> 22572 bytes
app/assets/images/doc/profile-with-button-to-add-friends.en.png | Bin 0 -> 67705 bytes
app/assets/images/doc/profile-with-button-to-add-friends.pt.png | Bin 0 -> 64486 bytes
app/assets/images/doc/recent-content-block.en.png | Bin 0 -> 7774 bytes
app/assets/images/doc/recent-content-block.pt.png | Bin 0 -> 8109 bytes
app/assets/images/doc/remove-comment-confirmation.en.png | Bin 0 -> 7838 bytes
app/assets/images/doc/remove-comment-confirmation.pt.png | Bin 0 -> 7548 bytes
app/assets/images/doc/remove-friend-confirmation.en.png | Bin 0 -> 33248 bytes
app/assets/images/doc/remove-friend-confirmation.pt.png | Bin 0 -> 33904 bytes
app/assets/images/doc/remove-friend.en.png | Bin 0 -> 30219 bytes
app/assets/images/doc/remove-friend.pt.png | Bin 0 -> 35491 bytes
app/assets/images/doc/search-more-options-open.en.png | Bin 0 -> 19178 bytes
app/assets/images/doc/search-more-options-open.pt.png | Bin 0 -> 20380 bytes
app/assets/images/doc/search-more-options.en.png | Bin 0 -> 9271 bytes
app/assets/images/doc/search-more-options.pt.png | Bin 0 -> 9638 bytes
app/assets/images/doc/search-results-with-example.en.png | Bin 0 -> 75255 bytes
app/assets/images/doc/search-results-with-example.pt.png | Bin 0 -> 79334 bytes
app/assets/images/doc/search-view-all-results-with-example.en.png | Bin 0 -> 22921 bytes
app/assets/images/doc/search-view-all-results-with-example.pt.png | Bin 0 -> 23286 bytes
app/assets/images/doc/send-message.en.png | Bin 0 -> 16795 bytes
app/assets/images/doc/send-message.pt.png | Bin 0 -> 19068 bytes
app/assets/images/doc/signup-form.en.png | Bin 0 -> 30299 bytes
app/assets/images/doc/signup-form.pt.png | Bin 0 -> 31325 bytes
app/assets/images/doc/slideshow-block.en.png | Bin 0 -> 5952 bytes
app/assets/images/doc/slideshow-block.pt.png | Bin 0 -> 6257 bytes
app/assets/images/doc/system-homepage-top-menu-admin.en.png | Bin 0 -> 145627 bytes
app/assets/images/doc/system-homepage-top-menu-admin.pt.png | Bin 0 -> 120878 bytes
app/assets/images/doc/system-homepage-top-menu.en.png | Bin 0 -> 145851 bytes
app/assets/images/doc/system-homepage-top-menu.pt.png | Bin 0 -> 148763 bytes
app/assets/images/doc/tags-block.en.png | Bin 0 -> 6428 bytes
app/assets/images/doc/tags-block.pt.png | Bin 0 -> 6908 bytes
app/assets/images/doc/tasks-list-approval-request.en.png | Bin 0 -> 26710 bytes
app/assets/images/doc/tasks-list-approval-request.pt.png | Bin 0 -> 22428 bytes
app/assets/images/doc/tasks-list-friendship-request.en.png | Bin 0 -> 19451 bytes
app/assets/images/doc/tasks-list-friendship-request.pt.png | Bin 0 -> 19378 bytes
app/assets/images/doc/tasks-list-membership-request.en.png | Bin 0 -> 18961 bytes
app/assets/images/doc/tasks-list-membership-request.pt.png | Bin 0 -> 16878 bytes
app/assets/images/doc/top-menu.en.png | Bin 0 -> 9761 bytes
app/assets/images/doc/top-menu.pt.png | Bin 0 -> 9589 bytes
app/assets/images/doc/uploading-files-to-gallery.en.png | Bin 0 -> 23475 bytes
app/assets/images/doc/uploading-files-to-gallery.pt.png | Bin 0 -> 23852 bytes
app/assets/images/doc/user-edit-sideboxes.en.png | Bin 0 -> 118141 bytes
app/assets/images/doc/user-edit-sideboxes.pt.png | Bin 0 -> 122067 bytes
app/assets/images/doc/user-friends-with-invitation-button.en.png | Bin 0 -> 30845 bytes
app/assets/images/doc/user-friends-with-invitation-button.pt.png | Bin 0 -> 33564 bytes
app/assets/images/doc/user-import-invitation-step-1.en.png | Bin 0 -> 20134 bytes
app/assets/images/doc/user-import-invitation-step-1.pt.png | Bin 0 -> 21841 bytes
app/assets/images/doc/user-import-invitation-step-2.en.png | Bin 0 -> 37783 bytes
app/assets/images/doc/user-import-invitation-step-2.pt.png | Bin 0 -> 40475 bytes
app/assets/images/doc/user-manually-invitation-step-1.en.png | Bin 0 -> 14999 bytes
app/assets/images/doc/user-manually-invitation-step-1.pt.png | Bin 0 -> 15554 bytes
app/assets/images/doc/user-manually-invitation-step-2.en.png | Bin 0 -> 28208 bytes
app/assets/images/doc/user-manually-invitation-step-2.pt.png | Bin 0 -> 31091 bytes
app/assets/images/doc/user-network-block.en.png | Bin 0 -> 9183 bytes
app/assets/images/doc/user-network-block.pt.png | Bin 0 -> 8876 bytes
app/assets/images/doc/user-sideboxes-add-block.en.png | Bin 0 -> 32631 bytes
app/assets/images/doc/user-sideboxes-add-block.pt.png | Bin 0 -> 35865 bytes
app/assets/images/doc/wysiwyg-buttons.en.png | Bin 0 -> 6534 bytes
app/assets/images/doc/wysiwyg-buttons.pt.png | Bin 0 -> 6399 bytes
app/assets/images/dotleaders.png | Bin 0 -> 174 bytes
app/assets/images/down-arrow.png | Bin 0 -> 407 bytes
app/assets/images/ecosol-tree-sprite.png | Bin 0 -> 2861 bytes
app/assets/images/fancybox/blank.gif | Bin 0 -> 43 bytes
app/assets/images/fancybox/fancy_close.png | Bin 0 -> 1517 bytes
app/assets/images/fancybox/fancy_loading.png | Bin 0 -> 10195 bytes
app/assets/images/fancybox/fancy_nav_left.png | Bin 0 -> 1446 bytes
app/assets/images/fancybox/fancy_nav_right.png | Bin 0 -> 1454 bytes
app/assets/images/fancybox/fancy_shadow_e.png | Bin 0 -> 107 bytes
app/assets/images/fancybox/fancy_shadow_n.png | Bin 0 -> 106 bytes
app/assets/images/fancybox/fancy_shadow_ne.png | Bin 0 -> 347 bytes
app/assets/images/fancybox/fancy_shadow_nw.png | Bin 0 -> 324 bytes
app/assets/images/fancybox/fancy_shadow_s.png | Bin 0 -> 111 bytes
app/assets/images/fancybox/fancy_shadow_se.png | Bin 0 -> 352 bytes
app/assets/images/fancybox/fancy_shadow_sw.png | Bin 0 -> 340 bytes
app/assets/images/fancybox/fancy_shadow_w.png | Bin 0 -> 103 bytes
app/assets/images/fancybox/fancy_title_left.png | Bin 0 -> 503 bytes
app/assets/images/fancybox/fancy_title_main.png | Bin 0 -> 96 bytes
app/assets/images/fancybox/fancy_title_over.png | Bin 0 -> 70 bytes
app/assets/images/fancybox/fancy_title_right.png | Bin 0 -> 506 bytes
app/assets/images/fancybox/fancybox-x.png | Bin 0 -> 203 bytes
app/assets/images/fancybox/fancybox-y.png | Bin 0 -> 176 bytes
app/assets/images/fancybox/fancybox.png | Bin 0 -> 15287 bytes
app/assets/images/fff.gif | Bin 0 -> 149 bytes
app/assets/images/field-bg.png | Bin 0 -> 399 bytes
app/assets/images/forum-activity-bg-onecol.png | Bin 0 -> 1773 bytes
app/assets/images/forum-activity-bg.png | Bin 0 -> 1758 bytes
app/assets/images/forum-activity-icon.png | Bin 0 -> 477 bytes
app/assets/images/gallery-image-activity-border-big-onecol.png | Bin 0 -> 2265 bytes
app/assets/images/gallery-image-activity-border-big.png | Bin 0 -> 1349 bytes
app/assets/images/gallery-image-activity-border-onecol.png | Bin 0 -> 1479 bytes
app/assets/images/gallery-image-activity-border.png | Bin 0 -> 1039 bytes
app/assets/images/grip-clue.png | Bin 0 -> 159 bytes
app/assets/images/hachure.png | Bin 0 -> 233 bytes
app/assets/images/help-avatar.gif | Bin 0 -> 2489 bytes
app/assets/images/icon_filter_exclude.png | Bin 0 -> 1190 bytes
app/assets/images/icon_more_options.png | Bin 0 -> 1004 bytes
app/assets/images/icons-app/alert.png | 1 +
app/assets/images/icons-app/article-minor.png | Bin 0 -> 3076 bytes
app/assets/images/icons-app/article-portrait.png | Bin 0 -> 2756 bytes
app/assets/images/icons-app/article-thumb.png | Bin 0 -> 4967 bytes
app/assets/images/icons-app/chat-22x22.png | 1 +
app/assets/images/icons-app/community-big.png | Bin 0 -> 20086 bytes
app/assets/images/icons-app/community-icon.png | Bin 0 -> 1218 bytes
app/assets/images/icons-app/community-minor.png | Bin 0 -> 4414 bytes
app/assets/images/icons-app/community-portrait.png | Bin 0 -> 6359 bytes
app/assets/images/icons-app/community-thumb.png | Bin 0 -> 11813 bytes
app/assets/images/icons-app/design-editor.png | Bin 0 -> 6115 bytes
app/assets/images/icons-app/emblem-important.png | Bin 0 -> 2207 bytes
app/assets/images/icons-app/enterprise-big.png | Bin 0 -> 25130 bytes
app/assets/images/icons-app/enterprise-icon.png | Bin 0 -> 2738 bytes
app/assets/images/icons-app/enterprise-minor.png | Bin 0 -> 5318 bytes
app/assets/images/icons-app/enterprise-portrait.png | Bin 0 -> 7746 bytes
app/assets/images/icons-app/enterprise-registration.png | 1 +
app/assets/images/icons-app/enterprise-thumb.png | Bin 0 -> 14380 bytes
app/assets/images/icons-app/gnome-irc-22x22.png | Bin 0 -> 1261 bytes
app/assets/images/icons-app/gnome-irc.png | Bin 0 -> 2256 bytes
app/assets/images/icons-app/gnome-settings-theme.png | Bin 0 -> 2288 bytes
app/assets/images/icons-app/gtk-folder.png | Bin 0 -> 3101 bytes
app/assets/images/icons-app/ico-female.png | Bin 0 -> 500 bytes
app/assets/images/icons-app/ico-male.png | Bin 0 -> 516 bytes
app/assets/images/icons-app/ico-sex-undef.png | Bin 0 -> 431 bytes
app/assets/images/icons-app/image-loading-big.png | Bin 0 -> 10950 bytes
app/assets/images/icons-app/image-loading-display.png | Bin 0 -> 43168 bytes
app/assets/images/icons-app/image-loading-icon.png | Bin 0 -> 960 bytes
app/assets/images/icons-app/image-loading-minor.png | Bin 0 -> 3074 bytes
app/assets/images/icons-app/image-loading-portrait.png | Bin 0 -> 4124 bytes
app/assets/images/icons-app/image-loading-slideshow.png | Bin 0 -> 18814 bytes
app/assets/images/icons-app/image-loading-small.png | Bin 0 -> 1779 bytes
app/assets/images/icons-app/image-loading-thumb.png | Bin 0 -> 7066 bytes
app/assets/images/icons-app/person-big.png | Bin 0 -> 13796 bytes
app/assets/images/icons-app/person-icon.png | Bin 0 -> 1052 bytes
app/assets/images/icons-app/person-minor.png | Bin 0 -> 3675 bytes
app/assets/images/icons-app/person-portrait.png | Bin 0 -> 5153 bytes
app/assets/images/icons-app/person-thumb.png | Bin 0 -> 8938 bytes
app/assets/images/icons-app/product-default-pic-big.png | Bin 0 -> 20547 bytes
app/assets/images/icons-app/product-default-pic-minor.png | Bin 0 -> 3815 bytes
app/assets/images/icons-app/product-default-pic-portrait.png | Bin 0 -> 5172 bytes
app/assets/images/icons-app/product-default-pic-thumb.png | Bin 0 -> 9206 bytes
app/assets/images/icons-app/user_icon.png | Bin 0 -> 3522 bytes
app/assets/images/icons-app/user_icon.svg | 529 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/images/icons-app/users.svg | 863 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/images/icons-bar/accessibility.png | Bin 0 -> 1217 bytes
app/assets/images/icons-bar/admin.png | Bin 0 -> 1393 bytes
app/assets/images/icons-bar/go-content.png | Bin 0 -> 974 bytes
app/assets/images/icons-bar/go-home.png | Bin 0 -> 854 bytes
app/assets/images/icons-bar/help.png | Bin 0 -> 1581 bytes
app/assets/images/icons-bar/login.png | Bin 0 -> 1095 bytes
app/assets/images/icons-bar/logout.png | Bin 0 -> 935 bytes
app/assets/images/icons-bar/logout2.png | Bin 0 -> 956 bytes
app/assets/images/icons-cat/Agropecuária_extrativismo_e_pesca.png | Bin 0 -> 509 bytes
app/assets/images/icons-cat/Alimentos_e_bebidas.png | Bin 0 -> 444 bytes
app/assets/images/icons-cat/Artefatos_artesanais.png | Bin 0 -> 461 bytes
app/assets/images/icons-cat/Ação_comunitária.png | Bin 0 -> 320 bytes
app/assets/images/icons-cat/Coleta_e_reciclagem_de_materiais.png | Bin 0 -> 435 bytes
app/assets/images/icons-cat/Crédito_e_finanças.png | Bin 0 -> 472 bytes
app/assets/images/icons-cat/Fitoterápicos_e_produtos_de_limpeza_e_higiene.png | Bin 0 -> 475 bytes
app/assets/images/icons-cat/Prestação_de_serviços_diversos.png | Bin 0 -> 380 bytes
app/assets/images/icons-cat/Produção_industrial.png | Bin 0 -> 322 bytes
app/assets/images/icons-cat/Produção_têxtil_e_confecção.png | Bin 0 -> 475 bytes
app/assets/images/icons-cat/Software.png | Bin 0 -> 408 bytes
app/assets/images/icons-cat/Software_Livre.png | Bin 0 -> 408 bytes
app/assets/images/icons-cat/undefined.png | Bin 0 -> 338 bytes
app/assets/images/icons-map/enterprise.png | Bin 0 -> 4872 bytes
app/assets/images/icons-map/enterprise_shadow.png | Bin 0 -> 1761 bytes
app/assets/images/icons-mime/README | 93 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/images/icons-mime/empty.png | Bin 0 -> 3231 bytes
app/assets/images/icons-mime/event.png | 1 +
app/assets/images/icons-mime/folder.png | 1 +
app/assets/images/icons-mime/gnome-folder.png | Bin 0 -> 1026 bytes
app/assets/images/icons-mime/gnome-mime-empty.png | Bin 0 -> 540 bytes
app/assets/images/icons-mime/gnome-mime-text-html.png | Bin 0 -> 1220 bytes
app/assets/images/icons-mime/ico-feed-on.png | Bin 0 -> 1179 bytes
app/assets/images/icons-mime/rss-feed-16.png | Bin 0 -> 849 bytes
app/assets/images/icons-mime/rss-feed.png | 1 +
app/assets/images/icons-mime/text-html.png | 1 +
app/assets/images/icons-mime/unknown.png | 1 +
app/assets/images/icons-task/closed-arrow-hover.png | Bin 0 -> 216 bytes
app/assets/images/icons-task/closed-arrow.png | Bin 0 -> 204 bytes
app/assets/images/icons-task/opened-arrow-hover.png | Bin 0 -> 189 bytes
app/assets/images/icons-task/opened-arrow.png | Bin 0 -> 199 bytes
app/assets/images/input-bg.gif | Bin 0 -> 4091 bytes
app/assets/images/loading-dark.gif | Bin 0 -> 3208 bytes
app/assets/images/loading-small-dark.gif | Bin 0 -> 1912 bytes
app/assets/images/loading-small.gif | Bin 0 -> 1553 bytes
app/assets/images/loading.gif | Bin 0 -> 1787 bytes
app/assets/images/login_checking.png | Bin 0 -> 1117 bytes
app/assets/images/logo-anhetegua-200x50.png | Bin 0 -> 7233 bytes
app/assets/images/logo-anhetegua.png | Bin 0 -> 18213 bytes
app/assets/images/noosfero-network.png | Bin 0 -> 99130 bytes
app/assets/images/noosfero-network.svg | 4618 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/images/orange-balloon.png | Bin 0 -> 1146 bytes
app/assets/images/orange-bg.png | Bin 0 -> 191 bytes
app/assets/images/passwords_match.png | Bin 0 -> 777 bytes
app/assets/images/passwords_nomatch.png | Bin 0 -> 374 bytes
app/assets/images/rails.png | Bin 0 -> 6646 bytes
app/assets/images/scrap-bg-gray.png | Bin 0 -> 289 bytes
app/assets/images/scrap-bg.png | Bin 0 -> 290 bytes
app/assets/images/solidarity-economy.png | Bin 0 -> 976 bytes
app/assets/images/top-arrow.png | Bin 0 -> 261 bytes
app/assets/images/white-pixel.gif | Bin 0 -> 35 bytes
app/assets/images/zoom-dark.png | Bin 0 -> 177 bytes
app/assets/images/zoom.png | Bin 0 -> 420 bytes
app/assets/javascripts/add-and-join.js | 103 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/application.js | 16 ++++++++++++++++
app/assets/javascripts/article.js | 175 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/ba-linkify.js | 214 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/catalog.js | 47 +++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/chat.js | 641 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/codepress/codepress.css | 21 +++++++++++++++++++++
app/assets/javascripts/codepress/codepress.html | 35 +++++++++++++++++++++++++++++++++++
app/assets/javascripts/codepress/codepress.js | 138 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/codepress/engines/gecko.js | 293 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/codepress/engines/khtml.js | 0
app/assets/javascripts/codepress/engines/msie.js | 304 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/codepress/engines/older.js | 0
app/assets/javascripts/codepress/engines/opera.js | 260 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/codepress/images/line-numbers.png | Bin 0 -> 16556 bytes
app/assets/javascripts/codepress/index.html | 443 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/codepress/languages/asp.css | 71 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/codepress/languages/asp.js | 117 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/codepress/languages/autoit.css | 13 +++++++++++++
app/assets/javascripts/codepress/languages/autoit.js | 32 ++++++++++++++++++++++++++++++++
app/assets/javascripts/codepress/languages/csharp.css | 9 +++++++++
app/assets/javascripts/codepress/languages/csharp.js | 25 +++++++++++++++++++++++++
app/assets/javascripts/codepress/languages/css.css | 10 ++++++++++
app/assets/javascripts/codepress/languages/css.js | 23 +++++++++++++++++++++++
app/assets/javascripts/codepress/languages/generic.css | 9 +++++++++
app/assets/javascripts/codepress/languages/generic.js | 25 +++++++++++++++++++++++++
app/assets/javascripts/codepress/languages/html.css | 13 +++++++++++++
app/assets/javascripts/codepress/languages/html.js | 59 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/codepress/languages/java.css | 7 +++++++
app/assets/javascripts/codepress/languages/java.js | 24 ++++++++++++++++++++++++
app/assets/javascripts/codepress/languages/javascript.css | 8 ++++++++
app/assets/javascripts/codepress/languages/javascript.js | 30 ++++++++++++++++++++++++++++++
app/assets/javascripts/codepress/languages/perl.css | 11 +++++++++++
app/assets/javascripts/codepress/languages/perl.js | 27 +++++++++++++++++++++++++++
app/assets/javascripts/codepress/languages/php.css | 12 ++++++++++++
app/assets/javascripts/codepress/languages/php.js | 61 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/codepress/languages/ruby.css | 10 ++++++++++
app/assets/javascripts/codepress/languages/ruby.js | 26 ++++++++++++++++++++++++++
app/assets/javascripts/codepress/languages/sql.css | 10 ++++++++++
app/assets/javascripts/codepress/languages/sql.js | 30 ++++++++++++++++++++++++++++++
app/assets/javascripts/codepress/languages/text.css | 5 +++++
app/assets/javascripts/codepress/languages/text.js | 9 +++++++++
app/assets/javascripts/codepress/languages/vbscript.css | 71 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/codepress/languages/vbscript.js | 117 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/codepress/languages/xsl.css | 15 +++++++++++++++
app/assets/javascripts/codepress/languages/xsl.js | 103 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/codepress/license.txt | 458 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/colorbox.js | 814 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/colorpicker-noosfero.js | 19 +++++++++++++++++++
app/assets/javascripts/colorpicker.js | 484 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/controls.js | 963 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/dragdrop.js | 972 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/effects.js | 1120 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/errors.js | 16 ++++++++++++++++
app/assets/javascripts/google_maps.js | 61 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/jquery-latest.js | 8316 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/jquery-ui-1.8.2.custom.min.js | 1012 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/jquery-validation/README.md | 8 ++++++++
app/assets/javascripts/jquery-validation/changelog.txt | 251 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/jquery-validation/jquery.validate.js | 1159 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/jquery-validation/jquery.validate.min.js | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/jquery-validation/lib/jquery-1.4.2.js | 6240 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/jquery-validation/lib/jquery-1.4.4.js | 7179 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/jquery-validation/lib/jquery-1.5.1.js | 8316 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/jquery-validation/lib/jquery-1.5.js | 8176 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/jquery-validation/lib/jquery.form.js | 660 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/jquery-validation/lib/jquery.js | 4376 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/jquery-validation/lib/jquery.metadata.js | 122 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/jquery-validation/localization/messages_ar.js | 24 ++++++++++++++++++++++++
app/assets/javascripts/jquery-validation/localization/messages_bg.js | 23 +++++++++++++++++++++++
app/assets/javascripts/jquery-validation/localization/messages_ca.js | 23 +++++++++++++++++++++++
app/assets/javascripts/jquery-validation/localization/messages_cn.js | 23 +++++++++++++++++++++++
app/assets/javascripts/jquery-validation/localization/messages_cs.js | 23 +++++++++++++++++++++++
app/assets/javascripts/jquery-validation/localization/messages_da.js | 20 ++++++++++++++++++++
app/assets/javascripts/jquery-validation/localization/messages_de.js | 20 ++++++++++++++++++++
app/assets/javascripts/jquery-validation/localization/messages_el.js | 24 ++++++++++++++++++++++++
app/assets/javascripts/jquery-validation/localization/messages_es.js | 23 +++++++++++++++++++++++
app/assets/javascripts/jquery-validation/localization/messages_fa.js | 23 +++++++++++++++++++++++
app/assets/javascripts/jquery-validation/localization/messages_fi.js | 21 +++++++++++++++++++++
app/assets/javascripts/jquery-validation/localization/messages_fr.js | 23 +++++++++++++++++++++++
app/assets/javascripts/jquery-validation/localization/messages_ge.js | 23 +++++++++++++++++++++++
app/assets/javascripts/jquery-validation/localization/messages_he.js | 23 +++++++++++++++++++++++
app/assets/javascripts/jquery-validation/localization/messages_hu.js | 20 ++++++++++++++++++++
app/assets/javascripts/jquery-validation/localization/messages_it.js | 23 +++++++++++++++++++++++
app/assets/javascripts/jquery-validation/localization/messages_ja.js | 23 +++++++++++++++++++++++
app/assets/javascripts/jquery-validation/localization/messages_kk.js | 23 +++++++++++++++++++++++
app/assets/javascripts/jquery-validation/localization/messages_lt.js | 23 +++++++++++++++++++++++
app/assets/javascripts/jquery-validation/localization/messages_lv.js | 23 +++++++++++++++++++++++
app/assets/javascripts/jquery-validation/localization/messages_nl.js | 23 +++++++++++++++++++++++
app/assets/javascripts/jquery-validation/localization/messages_no.js | 23 +++++++++++++++++++++++
app/assets/javascripts/jquery-validation/localization/messages_pl.js | 23 +++++++++++++++++++++++
app/assets/javascripts/jquery-validation/localization/messages_pt.js | 1 +
app/assets/javascripts/jquery-validation/localization/messages_ptbr.js | 23 +++++++++++++++++++++++
app/assets/javascripts/jquery-validation/localization/messages_ptpt.js | 23 +++++++++++++++++++++++
app/assets/javascripts/jquery-validation/localization/messages_ro.js | 23 +++++++++++++++++++++++
app/assets/javascripts/jquery-validation/localization/messages_ru.js | 23 +++++++++++++++++++++++
app/assets/javascripts/jquery-validation/localization/messages_se.js | 21 +++++++++++++++++++++
app/assets/javascripts/jquery-validation/localization/messages_si.js | 23 +++++++++++++++++++++++
app/assets/javascripts/jquery-validation/localization/messages_sk.js | 20 ++++++++++++++++++++
app/assets/javascripts/jquery-validation/localization/messages_sr.js | 23 +++++++++++++++++++++++
app/assets/javascripts/jquery-validation/localization/messages_tr.js | 23 +++++++++++++++++++++++
app/assets/javascripts/jquery-validation/localization/messages_tw.js | 23 +++++++++++++++++++++++
app/assets/javascripts/jquery-validation/localization/messages_ua.js | 23 +++++++++++++++++++++++
app/assets/javascripts/jquery-validation/localization/methods_de.js | 12 ++++++++++++
app/assets/javascripts/jquery-validation/localization/methods_nl.js | 9 +++++++++
app/assets/javascripts/jquery-validation/localization/methods_pt.js | 9 +++++++++
app/assets/javascripts/jquery-validation/test/events.html | 71 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/jquery-validation/test/firebug/errorIcon.png | Bin 0 -> 457 bytes
app/assets/javascripts/jquery-validation/test/firebug/firebug.css | 209 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/jquery-validation/test/firebug/firebug.html | 23 +++++++++++++++++++++++
app/assets/javascripts/jquery-validation/test/firebug/firebug.js | 672 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/jquery-validation/test/firebug/firebugx.js | 10 ++++++++++
app/assets/javascripts/jquery-validation/test/firebug/infoIcon.png | Bin 0 -> 524 bytes
app/assets/javascripts/jquery-validation/test/firebug/warningIcon.png | Bin 0 -> 516 bytes
app/assets/javascripts/jquery-validation/test/index.html | 270 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/jquery-validation/test/jquery.js | 23 +++++++++++++++++++++++
app/assets/javascripts/jquery-validation/test/large.html | 188 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/jquery-validation/test/messages.js | 62 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/jquery-validation/test/methods.js | 584 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/jquery-validation/test/qunit/qunit.css | 205 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/jquery-validation/test/qunit/qunit.js | 1428 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/jquery-validation/test/rules.js | 267 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/jquery-validation/test/selects/index.html | 444 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/jquery-validation/test/tabs.html | 78 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/jquery-validation/test/test.js | 1124 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/jquery-validation/test/users.php | 11 +++++++++++
app/assets/javascripts/jquery-validation/test/users2.php | 11 +++++++++++
app/assets/javascripts/jquery-validation/todo | 172 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/jquery-validation/version.txt | 1 +
app/assets/javascripts/jquery.ba-bbq.min.js | 18 ++++++++++++++++++
app/assets/javascripts/jquery.ba-hashchange.js | 390 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/jquery.cookie.js | 96 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/jquery.cycle.all.min.js | 27 +++++++++++++++++++++++++++
app/assets/javascripts/jquery.emoticon.js | 53 +++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/jquery.fancybox-1.3.4.pack.js | 46 ++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/jquery.form.js | 1076 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/jquery.noconflict.js | 1 +
app/assets/javascripts/jquery.scrollTo.js | 215 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/jquery.scrollabletab.js | 277 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/jquery.sound.js | 80 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/jquery.tokeninput.js | 865 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/lightbox.js | 232 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/lowpro.js | 338 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/manage-categories.js | 46 ++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/manage-products.js | 183 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/miscellaneous.js | 934 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/pikachoose.js | 276 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/prototype.js | 4221 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/reflection.js | 177 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/report-abuse.js | 17 +++++++++++++++++
app/assets/javascripts/sliderjs.js | 213 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/strophejs-1.0.1/LICENSE.txt | 19 +++++++++++++++++++
app/assets/javascripts/strophejs-1.0.1/README.txt | 15 +++++++++++++++
app/assets/javascripts/strophejs-1.0.1/contrib/discojs/README.txt | 42 ++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/strophejs-1.0.1/contrib/discojs/css/disco.css | 16 ++++++++++++++++
app/assets/javascripts/strophejs-1.0.1/contrib/discojs/index.html | 47 +++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/strophejs-1.0.1/contrib/discojs/punjab.tac | 18 ++++++++++++++++++
app/assets/javascripts/strophejs-1.0.1/contrib/discojs/scripts/basic.js | 102 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/strophejs-1.0.1/contrib/discojs/scripts/disco.js | 60 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/strophejs-1.0.1/doc/files/core-js.html | 189 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/strophejs-1.0.1/doc/index.html | 1 +
app/assets/javascripts/strophejs-1.0.1/doc/javascript/main.js | 836 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/strophejs-1.0.1/doc/javascript/searchdata.js | 152 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/strophejs-1.0.1/doc/search/ClassesS.html | 20 ++++++++++++++++++++
app/assets/javascripts/strophejs-1.0.1/doc/search/ConstantsA.html | 20 ++++++++++++++++++++
app/assets/javascripts/strophejs-1.0.1/doc/search/ConstantsB.html | 20 ++++++++++++++++++++
app/assets/javascripts/strophejs-1.0.1/doc/search/ConstantsC.html | 20 ++++++++++++++++++++
app/assets/javascripts/strophejs-1.0.1/doc/search/ConstantsD.html | 20 ++++++++++++++++++++
app/assets/javascripts/strophejs-1.0.1/doc/search/ConstantsE.html | 20 ++++++++++++++++++++
app/assets/javascripts/strophejs-1.0.1/doc/search/ConstantsF.html | 20 ++++++++++++++++++++
app/assets/javascripts/strophejs-1.0.1/doc/search/ConstantsH.html | 20 ++++++++++++++++++++
app/assets/javascripts/strophejs-1.0.1/doc/search/ConstantsI.html | 20 ++++++++++++++++++++
app/assets/javascripts/strophejs-1.0.1/doc/search/ConstantsL.html | 20 ++++++++++++++++++++
app/assets/javascripts/strophejs-1.0.1/doc/search/ConstantsM.html | 20 ++++++++++++++++++++
app/assets/javascripts/strophejs-1.0.1/doc/search/ConstantsP.html | 20 ++++++++++++++++++++
app/assets/javascripts/strophejs-1.0.1/doc/search/ConstantsR.html | 20 ++++++++++++++++++++
app/assets/javascripts/strophejs-1.0.1/doc/search/ConstantsS.html | 20 ++++++++++++++++++++
app/assets/javascripts/strophejs-1.0.1/doc/search/ConstantsV.html | 20 ++++++++++++++++++++
app/assets/javascripts/strophejs-1.0.1/doc/search/ConstantsW.html | 20 ++++++++++++++++++++
app/assets/javascripts/strophejs-1.0.1/doc/search/ConstantsX.html | 20 ++++++++++++++++++++
app/assets/javascripts/strophejs-1.0.1/doc/search/FilesS.html | 20 ++++++++++++++++++++
app/assets/javascripts/strophejs-1.0.1/doc/search/FunctionsA.html | 20 ++++++++++++++++++++
app/assets/javascripts/strophejs-1.0.1/doc/search/FunctionsB.html | 20 ++++++++++++++++++++
app/assets/javascripts/strophejs-1.0.1/doc/search/FunctionsC.html | 20 ++++++++++++++++++++
app/assets/javascripts/strophejs-1.0.1/doc/search/FunctionsD.html | 20 ++++++++++++++++++++
app/assets/javascripts/strophejs-1.0.1/doc/search/FunctionsE.html | 20 ++++++++++++++++++++
app/assets/javascripts/strophejs-1.0.1/doc/search/FunctionsF.html | 20 ++++++++++++++++++++
app/assets/javascripts/strophejs-1.0.1/doc/search/FunctionsG.html | 20 ++++++++++++++++++++
app/assets/javascripts/strophejs-1.0.1/doc/search/FunctionsI.html | 20 ++++++++++++++++++++
app/assets/javascripts/strophejs-1.0.1/doc/search/FunctionsL.html | 20 ++++++++++++++++++++
app/assets/javascripts/strophejs-1.0.1/doc/search/FunctionsP.html | 20 ++++++++++++++++++++
app/assets/javascripts/strophejs-1.0.1/doc/search/FunctionsR.html | 20 ++++++++++++++++++++
app/assets/javascripts/strophejs-1.0.1/doc/search/FunctionsS.html | 20 ++++++++++++++++++++
app/assets/javascripts/strophejs-1.0.1/doc/search/FunctionsSymbols.html | 20 ++++++++++++++++++++
app/assets/javascripts/strophejs-1.0.1/doc/search/FunctionsT.html | 20 ++++++++++++++++++++
app/assets/javascripts/strophejs-1.0.1/doc/search/FunctionsU.html | 20 ++++++++++++++++++++
app/assets/javascripts/strophejs-1.0.1/doc/search/FunctionsW.html | 20 ++++++++++++++++++++
app/assets/javascripts/strophejs-1.0.1/doc/search/FunctionsX.html | 20 ++++++++++++++++++++
app/assets/javascripts/strophejs-1.0.1/doc/search/GeneralA.html | 20 ++++++++++++++++++++
app/assets/javascripts/strophejs-1.0.1/doc/search/GeneralB.html | 20 ++++++++++++++++++++
app/assets/javascripts/strophejs-1.0.1/doc/search/GeneralC.html | 20 ++++++++++++++++++++
app/assets/javascripts/strophejs-1.0.1/doc/search/GeneralD.html | 20 ++++++++++++++++++++
app/assets/javascripts/strophejs-1.0.1/doc/search/GeneralE.html | 20 ++++++++++++++++++++
app/assets/javascripts/strophejs-1.0.1/doc/search/GeneralF.html | 20 ++++++++++++++++++++
app/assets/javascripts/strophejs-1.0.1/doc/search/GeneralG.html | 20 ++++++++++++++++++++
app/assets/javascripts/strophejs-1.0.1/doc/search/GeneralH.html | 20 ++++++++++++++++++++
app/assets/javascripts/strophejs-1.0.1/doc/search/GeneralI.html | 20 ++++++++++++++++++++
app/assets/javascripts/strophejs-1.0.1/doc/search/GeneralL.html | 20 ++++++++++++++++++++
app/assets/javascripts/strophejs-1.0.1/doc/search/GeneralM.html | 20 ++++++++++++++++++++
app/assets/javascripts/strophejs-1.0.1/doc/search/GeneralP.html | 20 ++++++++++++++++++++
app/assets/javascripts/strophejs-1.0.1/doc/search/GeneralR.html | 20 ++++++++++++++++++++
app/assets/javascripts/strophejs-1.0.1/doc/search/GeneralS.html | 20 ++++++++++++++++++++
app/assets/javascripts/strophejs-1.0.1/doc/search/GeneralSymbols.html | 20 ++++++++++++++++++++
app/assets/javascripts/strophejs-1.0.1/doc/search/GeneralT.html | 20 ++++++++++++++++++++
app/assets/javascripts/strophejs-1.0.1/doc/search/GeneralU.html | 20 ++++++++++++++++++++
app/assets/javascripts/strophejs-1.0.1/doc/search/GeneralV.html | 20 ++++++++++++++++++++
app/assets/javascripts/strophejs-1.0.1/doc/search/GeneralW.html | 20 ++++++++++++++++++++
app/assets/javascripts/strophejs-1.0.1/doc/search/GeneralX.html | 20 ++++++++++++++++++++
app/assets/javascripts/strophejs-1.0.1/doc/search/NoResults.html | 15 +++++++++++++++
app/assets/javascripts/strophejs-1.0.1/doc/styles/main.css | 767 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/strophejs-1.0.1/examples/attach/README | 37 +++++++++++++++++++++++++++++++++++++
app/assets/javascripts/strophejs-1.0.1/examples/attach/__init__.py | 0
app/assets/javascripts/strophejs-1.0.1/examples/attach/attacher/__init__.py | 0
app/assets/javascripts/strophejs-1.0.1/examples/attach/attacher/views.py | 18 ++++++++++++++++++
app/assets/javascripts/strophejs-1.0.1/examples/attach/boshclient.py | 152 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/strophejs-1.0.1/examples/attach/manage.py | 11 +++++++++++
app/assets/javascripts/strophejs-1.0.1/examples/attach/settings.py | 85 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/strophejs-1.0.1/examples/attach/templates/attacher/index.html | 88 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/strophejs-1.0.1/examples/attach/urls.py | 19 +++++++++++++++++++
app/assets/javascripts/strophejs-1.0.1/examples/basic.html | 25 +++++++++++++++++++++++++
app/assets/javascripts/strophejs-1.0.1/examples/basic.js | 55 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/strophejs-1.0.1/examples/crossdomain.html | 32 ++++++++++++++++++++++++++++++++
app/assets/javascripts/strophejs-1.0.1/examples/crossdomain.js | 62 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/strophejs-1.0.1/examples/crossdomain.xml | 12 ++++++++++++
app/assets/javascripts/strophejs-1.0.1/examples/dojo-ping.html | 27 +++++++++++++++++++++++++++
app/assets/javascripts/strophejs-1.0.1/examples/dojo-ping.js | 56 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/strophejs-1.0.1/examples/echobot.html | 25 +++++++++++++++++++++++++
app/assets/javascripts/strophejs-1.0.1/examples/echobot.js | 79 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/strophejs-1.0.1/examples/prebind.html | 39 +++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/strophejs-1.0.1/examples/prebind.js | 103 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/strophejs-1.0.1/examples/prototype-ping.html | 27 +++++++++++++++++++++++++++
app/assets/javascripts/strophejs-1.0.1/examples/prototype-ping.js | 56 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/strophejs-1.0.1/examples/yui-ping.html | 26 ++++++++++++++++++++++++++
app/assets/javascripts/strophejs-1.0.1/examples/yui-ping.js | 58 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/strophejs-1.0.1/plugins/strophe.flxhr.js | 31 +++++++++++++++++++++++++++++++
app/assets/javascripts/strophejs-1.0.1/plugins/strophe.flxhr.min.js | 1 +
app/assets/javascripts/strophejs-1.0.1/plugins/strophe.pubsub.js | 270 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/strophejs-1.0.1/plugins/strophe.pubsub.min.js | 1 +
app/assets/javascripts/strophejs-1.0.1/strophe.js | 3543 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/strophejs-1.0.1/strophe.min.js | 1 +
app/assets/javascripts/strophejs-1.0.1/tests/jstests.js | 136 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/strophejs-1.0.1/tests/jsyuitests.js | 31 +++++++++++++++++++++++++++++++
app/assets/javascripts/strophejs-1.0.1/tests/pubsub.html | 28 ++++++++++++++++++++++++++++
app/assets/javascripts/strophejs-1.0.1/tests/pubsub.js | 314 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/strophejs-1.0.1/tests/strophe.html | 22 ++++++++++++++++++++++
app/assets/javascripts/strophejs-1.0.1/tests/testrunner.js | 735 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/strophejs-1.0.1/tests/tests.js | 163 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/strophejs-1.0.1/tests/testsuite.css | 120 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/strophejs-1.0.1/tests/yuitests.html | 20 ++++++++++++++++++++
app/assets/javascripts/strophejs-1.0.1/tests/yuitests.js | 26 ++++++++++++++++++++++++++
app/assets/javascripts/tasks.js | 49 +++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/thickbox.js | 319 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/changelog.txt | 1303 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/examples/accessibility.html | 101 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/examples/css/content.css | 105 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/examples/css/word.css | 53 +++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/examples/custom_formats.html | 111 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/examples/full.html | 101 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/examples/index.html | 10 ++++++++++
app/assets/javascripts/tinymce/examples/lists/image_list.js | 9 +++++++++
app/assets/javascripts/tinymce/examples/lists/link_list.js | 10 ++++++++++
app/assets/javascripts/tinymce/examples/lists/media_list.js | 14 ++++++++++++++
app/assets/javascripts/tinymce/examples/lists/template_list.js | 9 +++++++++
app/assets/javascripts/tinymce/examples/media/logo.jpg | Bin 0 -> 2729 bytes
app/assets/javascripts/tinymce/examples/media/logo_over.jpg | Bin 0 -> 6473 bytes
app/assets/javascripts/tinymce/examples/media/sample.avi | Bin 0 -> 82944 bytes
app/assets/javascripts/tinymce/examples/media/sample.dcr | Bin 0 -> 6774 bytes
app/assets/javascripts/tinymce/examples/media/sample.flv | Bin 0 -> 88722 bytes
app/assets/javascripts/tinymce/examples/media/sample.mov | Bin 0 -> 55622 bytes
app/assets/javascripts/tinymce/examples/media/sample.ram | 1 +
app/assets/javascripts/tinymce/examples/media/sample.rm | Bin 0 -> 17846 bytes
app/assets/javascripts/tinymce/examples/media/sample.swf | Bin 0 -> 6118 bytes
app/assets/javascripts/tinymce/examples/menu.html | 18 ++++++++++++++++++
app/assets/javascripts/tinymce/examples/simple.html | 47 +++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/examples/skins.html | 216 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/examples/templates/layout1.htm | 15 +++++++++++++++
app/assets/javascripts/tinymce/examples/templates/snippet1.htm | 1 +
app/assets/javascripts/tinymce/examples/translate.html | 80 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/examples/word.html | 72 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/langs/de.js | 155 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/langs/en.js | 223 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/langs/eo.js | 1 +
app/assets/javascripts/tinymce/jscripts/tiny_mce/langs/es.js | 172 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/langs/fr.js | 154 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/langs/hy.js | 1 +
app/assets/javascripts/tinymce/jscripts/tiny_mce/langs/it.js | 1 +
app/assets/javascripts/tinymce/jscripts/tiny_mce/langs/ja.js | 154 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/langs/nl.js | 154 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/langs/pt.js | 154 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/langs/ru.js | 157 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/license.txt | 504 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/advhr/css/advhr.css | 5 +++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/advhr/editor_plugin.js | 1 +
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/advhr/editor_plugin_src.js | 57 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/advhr/js/rule.js | 43 +++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/advhr/langs/de_dlg.js | 5 +++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/advhr/langs/en_dlg.js | 7 +++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/advhr/langs/eo_dlg.js | 1 +
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/advhr/langs/es_dlg.js | 5 +++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/advhr/langs/fr_dlg.js | 5 +++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/advhr/langs/ja_dlg.js | 5 +++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/advhr/langs/nl_dlg.js | 5 +++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/advhr/langs/pt_dlg.js | 5 +++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/advhr/langs/ru_dlg.js | 5 +++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/advhr/rule.htm | 58 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/advimage/css/advimage.css | 13 +++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/advimage/editor_plugin.js | 1 +
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/advimage/editor_plugin_src.js | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/advimage/image.htm | 235 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/advimage/img/sample.gif | Bin 0 -> 1624 bytes
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/advimage/js/image.js | 458 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/advimage/langs/de_dlg.js | 43 +++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/advimage/langs/en_dlg.js | 45 +++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/advimage/langs/eo_dlg.js | 1 +
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/advimage/langs/es_dlg.js | 43 +++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/advimage/langs/fr_dlg.js | 43 +++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/advimage/langs/ja_dlg.js | 43 +++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/advimage/langs/nl_dlg.js | 43 +++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/advimage/langs/pt_dlg.js | 43 +++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/advimage/langs/ru_dlg.js | 43 +++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/advlink/css/advlink.css | 8 ++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/advlink/editor_plugin.js | 1 +
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/advlink/editor_plugin_src.js | 61 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/advlink/js/advlink.js | 532 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/advlink/langs/de_dlg.js | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/advlink/langs/en_dlg.js | 54 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/advlink/langs/eo_dlg.js | 1 +
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/advlink/langs/es_dlg.js | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/advlink/langs/fr_dlg.js | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/advlink/langs/ja_dlg.js | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/advlink/langs/nl_dlg.js | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/advlink/langs/pt_dlg.js | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/advlink/langs/ru_dlg.js | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/advlink/link.htm | 338 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/advlist/editor_plugin.js | 1 +
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/advlist/editor_plugin_src.js | 161 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/autolink/editor_plugin.js | 1 +
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/autolink/editor_plugin_src.js | 169 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/autoresize/editor_plugin.js | 1 +
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/autoresize/editor_plugin_src.js | 128 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/autosave/editor_plugin.js | 1 +
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/autosave/editor_plugin_src.js | 431 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/autosave/langs/en.js | 4 ++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/bbcode/editor_plugin.js | 1 +
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/bbcode/editor_plugin_src.js | 120 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/contextmenu/editor_plugin.js | 1 +
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/contextmenu/editor_plugin_src.js | 161 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/directionality/editor_plugin.js | 1 +
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/directionality/editor_plugin_src.js | 82 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/emotions/editor_plugin.js | 1 +
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/emotions/editor_plugin_src.js | 43 +++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/emotions/emotions.htm | 41 +++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-cool.gif | Bin 0 -> 354 bytes
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-cry.gif | Bin 0 -> 329 bytes
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-embarassed.gif | Bin 0 -> 331 bytes
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-foot-in-mouth.gif | Bin 0 -> 344 bytes
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-frown.gif | Bin 0 -> 340 bytes
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-innocent.gif | Bin 0 -> 336 bytes
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-kiss.gif | Bin 0 -> 338 bytes
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-laughing.gif | Bin 0 -> 344 bytes
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-money-mouth.gif | Bin 0 -> 321 bytes
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-sealed.gif | Bin 0 -> 325 bytes
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-smile.gif | Bin 0 -> 345 bytes
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-surprised.gif | Bin 0 -> 342 bytes
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-tongue-out.gif | Bin 0 -> 328 bytes
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-undecided.gif | Bin 0 -> 337 bytes
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-wink.gif | Bin 0 -> 351 bytes
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-yell.gif | Bin 0 -> 336 bytes
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/emotions/js/emotions.js | 22 ++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/emotions/langs/de_dlg.js | 20 ++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/emotions/langs/en_dlg.js | 20 ++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/emotions/langs/eo_dlg.js | 1 +
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/emotions/langs/es_dlg.js | 20 ++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/emotions/langs/fr_dlg.js | 20 ++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/emotions/langs/ja_dlg.js | 20 ++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/emotions/langs/nl_dlg.js | 20 ++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/emotions/langs/pt_dlg.js | 20 ++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/emotions/langs/ru_dlg.js | 20 ++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/example/dialog.htm | 22 ++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/example/editor_plugin.js | 1 +
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/example/editor_plugin_src.js | 84 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/example/img/example.gif | Bin 0 -> 87 bytes
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/example/js/dialog.js | 19 +++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/example/langs/en.js | 3 +++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/example/langs/en_dlg.js | 3 +++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/fullpage/css/fullpage.css | 143 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/fullpage/editor_plugin.js | 1 +
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/fullpage/editor_plugin_src.js | 399 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/fullpage/fullpage.htm | 259 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/fullpage/js/fullpage.js | 232 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/de_dlg.js | 85 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/en_dlg.js | 85 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/eo_dlg.js | 1 +
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/es_dlg.js | 85 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/fr_dlg.js | 85 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/ja_dlg.js | 85 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/nl_dlg.js | 85 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/pt_dlg.js | 85 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/ru_dlg.js | 85 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/fullscreen/editor_plugin.js | 1 +
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/fullscreen/editor_plugin_src.js | 159 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/fullscreen/fullscreen.htm | 109 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/iespell/editor_plugin.js | 1 +
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/iespell/editor_plugin_src.js | 54 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/inlinepopups/editor_plugin.js | 1 +
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/inlinepopups/editor_plugin_src.js | 696 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/alert.gif | Bin 0 -> 818 bytes
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/button.gif | Bin 0 -> 280 bytes
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/buttons.gif | Bin 0 -> 1195 bytes
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/confirm.gif | Bin 0 -> 915 bytes
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/corners.gif | Bin 0 -> 911 bytes
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/horizontal.gif | Bin 0 -> 769 bytes
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/vertical.gif | Bin 0 -> 92 bytes
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/window.css | 90 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/inlinepopups/template.htm | 387 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/insertdatetime/editor_plugin.js | 1 +
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/insertdatetime/editor_plugin_src.js | 83 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/layer/editor_plugin.js | 1 +
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/layer/editor_plugin_src.js | 214 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/legacyoutput/editor_plugin.js | 1 +
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/legacyoutput/editor_plugin_src.js | 139 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/lists/editor_plugin.js | 1 +
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/lists/editor_plugin_src.js | 617 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/media/css/content.css | 6 ++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/media/css/media.css | 17 +++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/media/editor_plugin.js | 1 +
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/media/editor_plugin_src.js | 770 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/media/img/flash.gif | Bin 0 -> 241 bytes
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/media/img/flv_player.swf | Bin 0 -> 11668 bytes
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/media/img/quicktime.gif | Bin 0 -> 303 bytes
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/media/img/realmedia.gif | Bin 0 -> 439 bytes
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/media/img/shockwave.gif | Bin 0 -> 387 bytes
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/media/img/trans.gif | Bin 0 -> 43 bytes
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/media/img/windowsmedia.gif | Bin 0 -> 415 bytes
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/media/js/embed.js | 73 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/media/js/media.js | 354 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/media/langs/de_dlg.js | 103 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/media/langs/en_dlg.js | 109 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/media/langs/eo_dlg.js | 1 +
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/media/langs/es_dlg.js | 103 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/media/langs/fr_dlg.js | 103 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/media/langs/ja_dlg.js | 103 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/media/langs/nl_dlg.js | 103 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/media/langs/pt_dlg.js | 103 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/media/langs/ru_dlg.js | 103 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/media/media.htm | 812 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/media/moxieplayer.swf | Bin 0 -> 33931 bytes
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/nonbreaking/editor_plugin.js | 1 +
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/nonbreaking/editor_plugin_src.js | 53 +++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/noneditable/editor_plugin.js | 1 +
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/noneditable/editor_plugin_src.js | 92 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/pagebreak/css/content.css | 1 +
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/pagebreak/editor_plugin.js | 1 +
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/pagebreak/editor_plugin_src.js | 74 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/pagebreak/img/pagebreak.gif | Bin 0 -> 325 bytes
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/pagebreak/img/trans.gif | Bin 0 -> 43 bytes
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/paste/editor_plugin.js | 1 +
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/paste/editor_plugin_src.js | 933 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/paste/js/pastetext.js | 36 ++++++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/paste/js/pasteword.js | 51 +++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/paste/langs/de_dlg.js | 5 +++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/paste/langs/en_dlg.js | 5 +++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/paste/langs/eo_dlg.js | 1 +
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/paste/langs/es_dlg.js | 5 +++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/paste/langs/fr_dlg.js | 5 +++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/paste/langs/ja_dlg.js | 5 +++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/paste/langs/nl_dlg.js | 5 +++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/paste/langs/pt_dlg.js | 5 +++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/paste/langs/ru_dlg.js | 5 +++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/paste/pastetext.htm | 27 +++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/paste/pasteword.htm | 21 +++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/preview/editor_plugin.js | 1 +
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/preview/editor_plugin_src.js | 53 +++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/preview/example.html | 28 ++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/preview/jscripts/embed.js | 73 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/preview/preview.html | 17 +++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/print/editor_plugin.js | 1 +
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/print/editor_plugin_src.js | 34 ++++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/safari/blank.htm | 1 +
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/safari/editor_plugin.js | 1 +
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/safari/editor_plugin_src.js | 438 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/save/editor_plugin.js | 1 +
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/save/editor_plugin_src.js | 101 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/searchreplace/css/searchreplace.css | 6 ++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/searchreplace/editor_plugin.js | 1 +
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/searchreplace/editor_plugin_src.js | 61 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/searchreplace/js/searchreplace.js | 142 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/de_dlg.js | 16 ++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/en_dlg.js | 16 ++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/eo_dlg.js | 1 +
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/es_dlg.js | 16 ++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/fr_dlg.js | 16 ++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/ja_dlg.js | 16 ++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/nl_dlg.js | 16 ++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/pt_dlg.js | 16 ++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/ru_dlg.js | 16 ++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/searchreplace/searchreplace.htm | 100 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/spellchecker/css/content.css | 1 +
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/spellchecker/editor_plugin.js | 1 +
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/spellchecker/editor_plugin_src.js | 435 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/spellchecker/img/wline.gif | Bin 0 -> 46 bytes
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/style/css/props.css | 13 +++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/style/editor_plugin.js | 1 +
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/style/editor_plugin_src.js | 55 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/style/js/props.js | 635 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/style/langs/de_dlg.js | 63 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/style/langs/en_dlg.js | 70 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/style/langs/eo_dlg.js | 1 +
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/style/langs/es_dlg.js | 63 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/style/langs/fr_dlg.js | 63 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/style/langs/ja_dlg.js | 63 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/style/langs/nl_dlg.js | 63 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/style/langs/pt_dlg.js | 63 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/style/langs/ru_dlg.js | 63 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/style/props.htm | 838 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/tabfocus/editor_plugin.js | 1 +
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/tabfocus/editor_plugin_src.js | 114 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/table/cell.htm | 178 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/table/css/cell.css | 17 +++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/table/css/row.css | 25 +++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/table/css/table.css | 13 +++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/table/editor_plugin.js | 1 +
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/table/editor_plugin_src.js | 1202 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/table/js/cell.js | 284 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/table/js/merge_cells.js | 27 +++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/table/js/row.js | 232 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/table/js/table.js | 450 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/table/langs/de_dlg.js | 74 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/table/langs/en_dlg.js | 74 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/table/langs/eo_dlg.js | 1 +
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/table/langs/es_dlg.js | 74 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/table/langs/fr_dlg.js | 74 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/table/langs/ja_dlg.js | 74 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/table/langs/nl_dlg.js | 74 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/table/langs/pt_dlg.js | 74 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/table/langs/ru_dlg.js | 74 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/table/merge_cells.htm | 32 ++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/table/row.htm | 157 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/table/table.htm | 188 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/template/blank.htm | 12 ++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/template/css/template.css | 23 +++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/template/editor_plugin.js | 1 +
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/template/editor_plugin_src.js | 159 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/template/js/template.js | 106 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/template/langs/de_dlg.js | 15 +++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/template/langs/en_dlg.js | 15 +++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/template/langs/eo_dlg.js | 1 +
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/template/langs/es_dlg.js | 15 +++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/template/langs/fr_dlg.js | 15 +++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/template/langs/ja_dlg.js | 15 +++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/template/langs/nl_dlg.js | 15 +++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/template/langs/pt_dlg.js | 15 +++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/template/langs/ru_dlg.js | 15 +++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/template/template.htm | 31 +++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/visualchars/editor_plugin.js | 1 +
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/visualchars/editor_plugin_src.js | 83 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/wordcount/editor_plugin.js | 1 +
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/wordcount/editor_plugin_src.js | 114 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/abbr.htm | 142 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/acronym.htm | 142 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/attributes.htm | 149 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/cite.htm | 142 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/css/attributes.css | 11 +++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/css/popup.css | 9 +++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/del.htm | 162 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/editor_plugin.js | 1 +
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/editor_plugin_src.js | 132 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/ins.htm | 162 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/js/abbr.js | 28 ++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/js/acronym.js | 28 ++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/js/attributes.js | 111 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/js/cite.js | 28 ++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/js/del.js | 53 +++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/js/element_common.js | 229 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/js/ins.js | 53 +++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/de_dlg.js | 32 ++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/en_dlg.js | 32 ++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/eo_dlg.js | 1 +
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/es_dlg.js | 32 ++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/fr_dlg.js | 32 ++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/ja_dlg.js | 32 ++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/nl_dlg.js | 32 ++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/pt_dlg.js | 32 ++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/ru_dlg.js | 32 ++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/about.htm | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/anchor.htm | 26 ++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/charmap.htm | 51 +++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/color_picker.htm | 74 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/editor_template.js | 1 +
app/assets/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/editor_template_src.js | 1360 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/image.htm | 80 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/img/colorpicker.jpg | Bin 0 -> 3189 bytes
app/assets/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/img/flash.gif | Bin 0 -> 241 bytes
app/assets/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/img/icons.gif | Bin 0 -> 11794 bytes
app/assets/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/img/iframe.gif | Bin 0 -> 600 bytes
app/assets/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/img/pagebreak.gif | Bin 0 -> 325 bytes
app/assets/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/img/quicktime.gif | Bin 0 -> 303 bytes
app/assets/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/img/realmedia.gif | Bin 0 -> 439 bytes
app/assets/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/img/shockwave.gif | Bin 0 -> 387 bytes
app/assets/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/img/trans.gif | Bin 0 -> 43 bytes
app/assets/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/img/video.gif | Bin 0 -> 597 bytes
app/assets/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/img/windowsmedia.gif | Bin 0 -> 415 bytes
app/assets/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/js/about.js | 73 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/js/anchor.js | 42 ++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/js/charmap.js | 355 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/js/color_picker.js | 329 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/js/image.js | 247 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/js/link.js | 153 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/js/source_editor.js | 56 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/langs/de.js | 63 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/langs/de_dlg.js | 51 +++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/langs/en.js | 68 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/langs/en_dlg.js | 54 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/langs/eo.js | 1 +
app/assets/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/langs/eo_dlg.js | 1 +
app/assets/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/langs/es.js | 62 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/langs/es_dlg.js | 51 +++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/langs/fr.js | 65 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/langs/fr_dlg.js | 51 +++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/langs/hy.js | 1 +
app/assets/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/langs/it.js | 1 +
app/assets/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/langs/it_dlg.js | 1 +
app/assets/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/langs/ja.js | 62 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/langs/ja_dlg.js | 51 +++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/langs/nl.js | 62 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/langs/nl_dlg.js | 51 +++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/langs/pt.js | 62 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/langs/pt_dlg.js | 51 +++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/langs/ru.js | 62 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/langs/ru_dlg.js | 51 +++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/link.htm | 57 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/shortcuts.htm | 47 +++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/content.css | 47 +++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/dialog.css | 117 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/img/buttons.png | Bin 0 -> 3274 bytes
app/assets/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/img/items.gif | Bin 0 -> 70 bytes
app/assets/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/img/menu_arrow.gif | Bin 0 -> 68 bytes
app/assets/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/img/menu_check.gif | Bin 0 -> 70 bytes
app/assets/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/img/progress.gif | Bin 0 -> 1787 bytes
app/assets/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/img/tabs.gif | Bin 0 -> 1326 bytes
app/assets/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/ui.css | 213 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/skins/highcontrast/content.css | 23 +++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/skins/highcontrast/dialog.css | 105 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/skins/highcontrast/ui.css | 101 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/content.css | 46 ++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/dialog.css | 117 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/img/button_bg.png | Bin 0 -> 5859 bytes
app/assets/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/img/button_bg_black.png | Bin 0 -> 3736 bytes
app/assets/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/img/button_bg_silver.png | Bin 0 -> 5358 bytes
app/assets/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/ui.css | 216 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/ui_black.css | 8 ++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/ui_silver.css | 5 +++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/source_editor.htm | 25 +++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/themes/simple/editor_template.js | 1 +
app/assets/javascripts/tinymce/jscripts/tiny_mce/themes/simple/editor_template_src.js | 84 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/themes/simple/img/icons.gif | Bin 0 -> 1440 bytes
app/assets/javascripts/tinymce/jscripts/tiny_mce/themes/simple/langs/de.js | 11 +++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/themes/simple/langs/en.js | 11 +++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/themes/simple/langs/eo.js | 1 +
app/assets/javascripts/tinymce/jscripts/tiny_mce/themes/simple/langs/es.js | 11 +++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/themes/simple/langs/fr.js | 11 +++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/themes/simple/langs/hy.js | 1 +
app/assets/javascripts/tinymce/jscripts/tiny_mce/themes/simple/langs/it.js | 1 +
app/assets/javascripts/tinymce/jscripts/tiny_mce/themes/simple/langs/ja.js | 11 +++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/themes/simple/langs/nl.js | 11 +++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/themes/simple/langs/pt.js | 11 +++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/themes/simple/langs/ru.js | 11 +++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/themes/simple/skins/default/content.css | 25 +++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/themes/simple/skins/default/ui.css | 32 ++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/themes/simple/skins/o2k7/content.css | 17 +++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/themes/simple/skins/o2k7/img/button_bg.png | Bin 0 -> 5102 bytes
app/assets/javascripts/tinymce/jscripts/tiny_mce/themes/simple/skins/o2k7/ui.css | 35 +++++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/tiny_mce.js | 1 +
app/assets/javascripts/tinymce/jscripts/tiny_mce/tiny_mce_popup.js | 5 +++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/tiny_mce_src.js | 15812 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/utils/editable_selects.js | 70 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/utils/form_utils.js | 210 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/utils/mctabs.js | 162 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/javascripts/tinymce/jscripts/tiny_mce/utils/validate.js | 252 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/stylesheets/application.css | 6148 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/stylesheets/calendar_date_select/blue.css | 130 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/stylesheets/calendar_date_select/default.css | 135 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/stylesheets/calendar_date_select/plain.css | 128 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/stylesheets/calendar_date_select/red.css | 135 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/stylesheets/calendar_date_select/silver.css | 133 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/stylesheets/colorbox.css | 82 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/stylesheets/colorpicker.css | 131 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/stylesheets/fancybox.css | 359 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/stylesheets/iepngfix/blank.gif | Bin 0 -> 49 bytes
app/assets/stylesheets/iepngfix/iepngfix.css | 1 +
app/assets/stylesheets/iepngfix/iepngfix.htc | 103 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/stylesheets/jquery.ui/redmond/images/ui-anim_basic_16x16.gif | Bin 0 -> 1553 bytes
app/assets/stylesheets/jquery.ui/redmond/images/ui-bg_flat_0_aaaaaa_40x100.png | Bin 0 -> 180 bytes
app/assets/stylesheets/jquery.ui/redmond/images/ui-bg_flat_55_fbec88_40x100.png | Bin 0 -> 182 bytes
app/assets/stylesheets/jquery.ui/redmond/images/ui-bg_glass_75_d0e5f5_1x400.png | Bin 0 -> 124 bytes
app/assets/stylesheets/jquery.ui/redmond/images/ui-bg_glass_85_dfeffc_1x400.png | Bin 0 -> 123 bytes
app/assets/stylesheets/jquery.ui/redmond/images/ui-bg_glass_95_fef1ec_1x400.png | Bin 0 -> 119 bytes
app/assets/stylesheets/jquery.ui/redmond/images/ui-bg_gloss-wave_55_5c9ccc_500x100.png | Bin 0 -> 3457 bytes
app/assets/stylesheets/jquery.ui/redmond/images/ui-bg_inset-hard_100_f5f8f9_1x100.png | Bin 0 -> 104 bytes
app/assets/stylesheets/jquery.ui/redmond/images/ui-bg_inset-hard_100_fcfdfd_1x100.png | Bin 0 -> 88 bytes
app/assets/stylesheets/jquery.ui/redmond/images/ui-icons_217bc0_256x240.png | Bin 0 -> 4369 bytes
app/assets/stylesheets/jquery.ui/redmond/images/ui-icons_2e83ff_256x240.png | Bin 0 -> 4369 bytes
app/assets/stylesheets/jquery.ui/redmond/images/ui-icons_469bdd_256x240.png | Bin 0 -> 5355 bytes
app/assets/stylesheets/jquery.ui/redmond/images/ui-icons_6da8d5_256x240.png | Bin 0 -> 4369 bytes
app/assets/stylesheets/jquery.ui/redmond/images/ui-icons_cd0a0a_256x240.png | Bin 0 -> 4369 bytes
app/assets/stylesheets/jquery.ui/redmond/images/ui-icons_d8e7f3_256x240.png | Bin 0 -> 4369 bytes
app/assets/stylesheets/jquery.ui/redmond/images/ui-icons_f9bd01_256x240.png | Bin 0 -> 4369 bytes
app/assets/stylesheets/jquery.ui/redmond/jquery-ui-1.8.2.custom.css | 489 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/stylesheets/jquery.ui/smoothness/images/ui-anim_basic_16x16.gif | Bin 0 -> 1553 bytes
app/assets/stylesheets/jquery.ui/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png | Bin 0 -> 180 bytes
app/assets/stylesheets/jquery.ui/smoothness/images/ui-bg_flat_75_ffffff_40x100.png | Bin 0 -> 178 bytes
app/assets/stylesheets/jquery.ui/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png | Bin 0 -> 120 bytes
app/assets/stylesheets/jquery.ui/smoothness/images/ui-bg_glass_65_ffffff_1x400.png | Bin 0 -> 105 bytes
app/assets/stylesheets/jquery.ui/smoothness/images/ui-bg_glass_75_dadada_1x400.png | Bin 0 -> 111 bytes
app/assets/stylesheets/jquery.ui/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png | Bin 0 -> 110 bytes
app/assets/stylesheets/jquery.ui/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png | Bin 0 -> 119 bytes
app/assets/stylesheets/jquery.ui/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png | Bin 0 -> 101 bytes
app/assets/stylesheets/jquery.ui/smoothness/images/ui-icons_222222_256x240.png | Bin 0 -> 4369 bytes
app/assets/stylesheets/jquery.ui/smoothness/images/ui-icons_2e83ff_256x240.png | Bin 0 -> 4369 bytes
app/assets/stylesheets/jquery.ui/smoothness/images/ui-icons_454545_256x240.png | Bin 0 -> 4369 bytes
app/assets/stylesheets/jquery.ui/smoothness/images/ui-icons_888888_256x240.png | Bin 0 -> 4369 bytes
app/assets/stylesheets/jquery.ui/smoothness/images/ui-icons_cd0a0a_256x240.png | Bin 0 -> 4369 bytes
app/assets/stylesheets/jquery.ui/smoothness/jquery-ui-1.8.2.custom.css | 489 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/stylesheets/jquery.ui/smoothness_mod/images/ui-anim_basic_16x16.gif | Bin 0 -> 1553 bytes
app/assets/stylesheets/jquery.ui/smoothness_mod/images/ui-bg_flat_0_aaaaaa_40x100.png | Bin 0 -> 180 bytes
app/assets/stylesheets/jquery.ui/smoothness_mod/images/ui-bg_flat_75_ffffff_40x100.png | Bin 0 -> 178 bytes
app/assets/stylesheets/jquery.ui/smoothness_mod/images/ui-bg_glass_55_fbf9ee_1x400.png | Bin 0 -> 120 bytes
app/assets/stylesheets/jquery.ui/smoothness_mod/images/ui-bg_glass_65_ffffff_1x400.png | Bin 0 -> 105 bytes
app/assets/stylesheets/jquery.ui/smoothness_mod/images/ui-bg_glass_75_dadada_1x400.png | Bin 0 -> 111 bytes
app/assets/stylesheets/jquery.ui/smoothness_mod/images/ui-bg_glass_75_e6e6e6_1x400.png | Bin 0 -> 110 bytes
app/assets/stylesheets/jquery.ui/smoothness_mod/images/ui-bg_glass_95_fef1ec_1x400.png | Bin 0 -> 119 bytes
app/assets/stylesheets/jquery.ui/smoothness_mod/images/ui-bg_highlight-soft_75_cccccc_1x100.png | Bin 0 -> 101 bytes
app/assets/stylesheets/jquery.ui/smoothness_mod/images/ui-icons_222222_256x240.png | Bin 0 -> 4369 bytes
app/assets/stylesheets/jquery.ui/smoothness_mod/images/ui-icons_2e83ff_256x240.png | Bin 0 -> 4369 bytes
app/assets/stylesheets/jquery.ui/smoothness_mod/images/ui-icons_454545_256x240.png | Bin 0 -> 4369 bytes
app/assets/stylesheets/jquery.ui/smoothness_mod/images/ui-icons_888888_256x240.png | Bin 0 -> 4369 bytes
app/assets/stylesheets/jquery.ui/smoothness_mod/images/ui-icons_cd0a0a_256x240.png | Bin 0 -> 4369 bytes
app/assets/stylesheets/jquery.ui/smoothness_mod/jquery-ui-1.8.2.custom.css | 489 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/stylesheets/jquery.ui/south-street/images/ui-anim_basic_16x16.gif | Bin 0 -> 1553 bytes
app/assets/stylesheets/jquery.ui/south-street/images/ui-bg_glass_55_fcf0ba_1x400.png | Bin 0 -> 127 bytes
app/assets/stylesheets/jquery.ui/south-street/images/ui-bg_gloss-wave_100_ece8da_500x100.png | Bin 0 -> 2130 bytes
app/assets/stylesheets/jquery.ui/south-street/images/ui-bg_highlight-hard_100_f5f3e5_1x100.png | Bin 0 -> 110 bytes
app/assets/stylesheets/jquery.ui/south-street/images/ui-bg_highlight-hard_100_fafaf4_1x100.png | Bin 0 -> 96 bytes
app/assets/stylesheets/jquery.ui/south-street/images/ui-bg_highlight-hard_15_459e00_1x100.png | Bin 0 -> 153 bytes
app/assets/stylesheets/jquery.ui/south-street/images/ui-bg_highlight-hard_95_cccccc_1x100.png | Bin 0 -> 105 bytes
app/assets/stylesheets/jquery.ui/south-street/images/ui-bg_highlight-soft_25_67b021_1x100.png | Bin 0 -> 124 bytes
app/assets/stylesheets/jquery.ui/south-street/images/ui-bg_highlight-soft_95_ffedad_1x100.png | Bin 0 -> 165 bytes
app/assets/stylesheets/jquery.ui/south-street/images/ui-bg_inset-soft_15_2b2922_1x100.png | Bin 0 -> 119 bytes
app/assets/stylesheets/jquery.ui/south-street/images/ui-icons_808080_256x240.png | Bin 0 -> 4369 bytes
app/assets/stylesheets/jquery.ui/south-street/images/ui-icons_847e71_256x240.png | Bin 0 -> 4369 bytes
app/assets/stylesheets/jquery.ui/south-street/images/ui-icons_8dc262_256x240.png | Bin 0 -> 5355 bytes
app/assets/stylesheets/jquery.ui/south-street/images/ui-icons_cd0a0a_256x240.png | Bin 0 -> 4369 bytes
app/assets/stylesheets/jquery.ui/south-street/images/ui-icons_eeeeee_256x240.png | Bin 0 -> 4369 bytes
app/assets/stylesheets/jquery.ui/south-street/images/ui-icons_ffffff_256x240.png | Bin 0 -> 4369 bytes
app/assets/stylesheets/jquery.ui/south-street/jquery-ui-1.8.2.custom.css | 489 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/stylesheets/jquery.ui/sunny-mod/images/ui-anim_basic_16x16.gif | Bin 0 -> 1553 bytes
app/assets/stylesheets/jquery.ui/sunny-mod/images/ui-bg_diagonals-medium_20_d34d17_40x40.png | Bin 0 -> 247 bytes
app/assets/stylesheets/jquery.ui/sunny-mod/images/ui-bg_flat_30_cccccc_40x100.png | Bin 0 -> 180 bytes
app/assets/stylesheets/jquery.ui/sunny-mod/images/ui-bg_flat_50_5c5c5c_40x100.png | Bin 0 -> 180 bytes
app/assets/stylesheets/jquery.ui/sunny-mod/images/ui-bg_gloss-wave_30_888a85_500x100.png | Bin 0 -> 4699 bytes
app/assets/stylesheets/jquery.ui/sunny-mod/images/ui-bg_gloss-wave_45_918e88_500x100.png | Bin 0 -> 4273 bytes
app/assets/stylesheets/jquery.ui/sunny-mod/images/ui-bg_gloss-wave_60_fece2f_500x100.png | Bin 0 -> 3512 bytes
app/assets/stylesheets/jquery.ui/sunny-mod/images/ui-bg_gloss-wave_70_ffdd57_500x100.png | Bin 0 -> 3830 bytes
app/assets/stylesheets/jquery.ui/sunny-mod/images/ui-bg_gloss-wave_90_fff9e5_500x100.png | Bin 0 -> 2257 bytes
app/assets/stylesheets/jquery.ui/sunny-mod/images/ui-bg_highlight-soft_0_feeebd_1x100.png | Bin 0 -> 79 bytes
app/assets/stylesheets/jquery.ui/sunny-mod/images/ui-bg_highlight-soft_70_feeebd_1x100.png | Bin 0 -> 117 bytes
app/assets/stylesheets/jquery.ui/sunny-mod/images/ui-bg_inset-soft_30_feeebd_1x100.png | Bin 0 -> 122 bytes
app/assets/stylesheets/jquery.ui/sunny-mod/images/ui-bg_inset-soft_70_feeebd_1x100.png | Bin 0 -> 119 bytes
app/assets/stylesheets/jquery.ui/sunny-mod/images/ui-icons_3d3d3d_256x240.png | Bin 0 -> 5355 bytes
app/assets/stylesheets/jquery.ui/sunny-mod/images/ui-icons_bd7b00_256x240.png | Bin 0 -> 4369 bytes
app/assets/stylesheets/jquery.ui/sunny-mod/images/ui-icons_d19405_256x240.png | Bin 0 -> 4369 bytes
app/assets/stylesheets/jquery.ui/sunny-mod/images/ui-icons_eb990f_256x240.png | Bin 0 -> 4369 bytes
app/assets/stylesheets/jquery.ui/sunny-mod/images/ui-icons_ed9f26_256x240.png | Bin 0 -> 4369 bytes
app/assets/stylesheets/jquery.ui/sunny-mod/images/ui-icons_fadc7a_256x240.png | Bin 0 -> 4369 bytes
app/assets/stylesheets/jquery.ui/sunny-mod/images/ui-icons_ffe180_256x240.png | Bin 0 -> 4369 bytes
app/assets/stylesheets/jquery.ui/sunny-mod/jquery-ui-1.8.2.custom.css | 489 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/stylesheets/jquery.ui/sunny/images/ui-anim_basic_16x16.gif | Bin 0 -> 1553 bytes
app/assets/stylesheets/jquery.ui/sunny/images/ui-bg_diagonals-medium_20_d34d17_40x40.png | Bin 0 -> 199 bytes
app/assets/stylesheets/jquery.ui/sunny/images/ui-bg_flat_30_cccccc_40x100.png | Bin 0 -> 180 bytes
app/assets/stylesheets/jquery.ui/sunny/images/ui-bg_flat_50_5c5c5c_40x100.png | Bin 0 -> 180 bytes
app/assets/stylesheets/jquery.ui/sunny/images/ui-bg_gloss-wave_45_817865_500x100.png | Bin 0 -> 3971 bytes
app/assets/stylesheets/jquery.ui/sunny/images/ui-bg_gloss-wave_60_fece2f_500x100.png | Bin 0 -> 3512 bytes
app/assets/stylesheets/jquery.ui/sunny/images/ui-bg_gloss-wave_70_ffdd57_500x100.png | Bin 0 -> 3122 bytes
app/assets/stylesheets/jquery.ui/sunny/images/ui-bg_gloss-wave_90_fff9e5_500x100.png | Bin 0 -> 2257 bytes
app/assets/stylesheets/jquery.ui/sunny/images/ui-bg_highlight-soft_100_feeebd_1x100.png | Bin 0 -> 108 bytes
app/assets/stylesheets/jquery.ui/sunny/images/ui-bg_inset-soft_30_ffffff_1x100.png | Bin 0 -> 100 bytes
app/assets/stylesheets/jquery.ui/sunny/images/ui-icons_3d3d3d_256x240.png | Bin 0 -> 4369 bytes
app/assets/stylesheets/jquery.ui/sunny/images/ui-icons_bd7b00_256x240.png | Bin 0 -> 5355 bytes
app/assets/stylesheets/jquery.ui/sunny/images/ui-icons_d19405_256x240.png | Bin 0 -> 4369 bytes
app/assets/stylesheets/jquery.ui/sunny/images/ui-icons_eb990f_256x240.png | Bin 0 -> 4369 bytes
app/assets/stylesheets/jquery.ui/sunny/images/ui-icons_ed9f26_256x240.png | Bin 0 -> 4369 bytes
app/assets/stylesheets/jquery.ui/sunny/images/ui-icons_fadc7a_256x240.png | Bin 0 -> 4369 bytes
app/assets/stylesheets/jquery.ui/sunny/images/ui-icons_ffe180_256x240.png | Bin 0 -> 5355 bytes
app/assets/stylesheets/jquery.ui/sunny/jquery-ui-1.8.2.custom.css | 489 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/stylesheets/lightbox.css | 63 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/stylesheets/search.css | 937 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/stylesheets/slideshow.css | 55 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/stylesheets/tasks.css | 46 ++++++++++++++++++++++++++++++++++++++++++++++
app/assets/stylesheets/thickbox.css | 163 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/stylesheets/tinymce.css | 27 +++++++++++++++++++++++++++
app/assets/stylesheets/token-input-facebook.css | 126 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/stylesheets/token-input-facet.css | 119 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/stylesheets/token-input-mac.css | 208 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/assets/stylesheets/token-input.css | 116 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
public/images/balloon-footer.png | Bin 1953 -> 0 bytes
public/images/balloon-header.png | Bin 1037 -> 0 bytes
public/images/balloon-middle.png | Bin 267 -> 0 bytes
public/images/beta.gif | Bin 60 -> 0 bytes
public/images/black-alpha-pixel-5.png | Bin 178 -> 0 bytes
public/images/black-alpha-pixel.png | Bin 178 -> 0 bytes
public/images/blocks/1.png | Bin 1079 -> 0 bytes
public/images/blocks/1.svg | 77 -----------------------------------------------------------------------------
public/images/blocks/2.png | Bin 1350 -> 0 bytes
public/images/blocks/2.svg | 77 -----------------------------------------------------------------------------
public/images/blocks/3.png | Bin 1383 -> 0 bytes
public/images/blocks/3.svg | 77 -----------------------------------------------------------------------------
public/images/bolota.gif | Bin 70 -> 0 bytes
public/images/borda-esq-aba-azul.gif | Bin 179 -> 0 bytes
public/images/bt-bookmark.gif | Bin 1287 -> 0 bytes
public/images/calendar_date_select/calendar.gif | Bin 581 -> 0 bytes
public/images/calendar_date_select/calendar.png | Bin 1780 -> 0 bytes
public/images/catalog-expanders.png | Bin 777 -> 0 bytes
public/images/ccc.gif | Bin 149 -> 0 bytes
public/images/colorbox/border.png | Bin 112 -> 0 bytes
public/images/colorbox/controls.png | Bin 1249 -> 0 bytes
public/images/colorbox/ie6/borderBottomCenter.png | Bin 111 -> 0 bytes
public/images/colorbox/ie6/borderBottomLeft.png | Bin 215 -> 0 bytes
public/images/colorbox/ie6/borderBottomRight.png | Bin 217 -> 0 bytes
public/images/colorbox/ie6/borderMiddleLeft.png | Bin 108 -> 0 bytes
public/images/colorbox/ie6/borderMiddleRight.png | Bin 108 -> 0 bytes
public/images/colorbox/ie6/borderTopCenter.png | Bin 111 -> 0 bytes
public/images/colorbox/ie6/borderTopLeft.png | Bin 216 -> 0 bytes
public/images/colorbox/ie6/borderTopRight.png | Bin 214 -> 0 bytes
public/images/colorbox/loading.gif | Bin 9427 -> 0 bytes
public/images/colorbox/loading_background.png | Bin 157 -> 0 bytes
public/images/colorbox/overlay.png | Bin 182 -> 0 bytes
public/images/colorpicker/apply.png | Bin 955 -> 0 bytes
public/images/colorpicker/gradiente.png | Bin 595 -> 0 bytes
public/images/colorpicker/indic.gif | Bin 86 -> 0 bytes
public/images/colorpicker/overlay.png | Bin 10355 -> 0 bytes
public/images/colorpicker/select.gif | Bin 78 -> 0 bytes
public/images/comment-owner-bg-L.png | Bin 188 -> 0 bytes
public/images/comment-owner-bg-N.png | Bin 167 -> 0 bytes
public/images/comment-owner-bg-NL.png | Bin 255 -> 0 bytes
public/images/comment-owner-bg-NO.png | Bin 518 -> 0 bytes
public/images/comment-owner-bg-O.png | Bin 198 -> 0 bytes
public/images/comment-owner-bg-S.png | Bin 475 -> 0 bytes
public/images/comment-owner-bg-SL.png | Bin 259 -> 0 bytes
public/images/comment-owner-bg-SO.png | Bin 271 -> 0 bytes
public/images/comment-reply-owner-bg.png | Bin 279 -> 0 bytes
public/images/control-panel/Makefile | 13 -------------
public/images/control-panel/application-certificate.gif | Bin 1802 -> 0 bytes
public/images/control-panel/application-certificate.png | Bin 3278 -> 0 bytes
public/images/control-panel/application-certificate.svg | 443 -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
public/images/control-panel/blocks.gif | Bin 691 -> 0 bytes
public/images/control-panel/blocks.png | Bin 651 -> 0 bytes
public/images/control-panel/blocks.svg | 334 ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
public/images/control-panel/contact.gif | Bin 1388 -> 0 bytes
public/images/control-panel/contact.png | Bin 2707 -> 0 bytes
public/images/control-panel/contact.svg | 795 ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
public/images/control-panel/edit-profile-enterprise.gif | Bin 2126 -> 0 bytes
public/images/control-panel/edit-profile-enterprise.png | Bin 3969 -> 0 bytes
public/images/control-panel/edit-profile-enterprise.svg | 549 ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
public/images/control-panel/edit-profile-group.gif | Bin 2093 -> 0 bytes
public/images/control-panel/edit-profile-group.png | Bin 4065 -> 0 bytes
public/images/control-panel/edit-profile-group.svg | 675 ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
public/images/control-panel/edit-profile.gif | Bin 1809 -> 0 bytes
public/images/control-panel/edit-profile.png | Bin 3251 -> 0 bytes
public/images/control-panel/edit-profile.svg | 590 --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
public/images/control-panel/editpaste.gif | Bin 1365 -> 0 bytes
public/images/control-panel/editpaste.png | Bin 1765 -> 0 bytes
public/images/control-panel/editpaste.svg | 1 -
public/images/control-panel/email.gif | Bin 1873 -> 0 bytes
public/images/control-panel/email.png | Bin 2500 -> 0 bytes
public/images/control-panel/email.svg | 1 -
public/images/control-panel/emblem-favorite.gif | Bin 1054 -> 0 bytes
public/images/control-panel/emblem-favorite.png | Bin 2394 -> 0 bytes
public/images/control-panel/emblem-favorite.svg | 1 -
public/images/control-panel/header-footer.gif | Bin 899 -> 0 bytes
public/images/control-panel/header-footer.png | Bin 773 -> 0 bytes
public/images/control-panel/header-footer.svg | 325 -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
public/images/control-panel/important.gif | Bin 1070 -> 0 bytes
public/images/control-panel/important.png | Bin 2311 -> 0 bytes
public/images/control-panel/important.svg | 1 -
public/images/control-panel/mail-mark-junk.png | Bin 4035 -> 0 bytes
public/images/control-panel/mail-mark-junk.svg | 504 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
public/images/control-panel/package.gif | Bin 1567 -> 0 bytes
public/images/control-panel/package.png | Bin 2053 -> 0 bytes
public/images/control-panel/package.svg | 485 -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
public/images/control-panel/password.gif | Bin 1652 -> 0 bytes
public/images/control-panel/password.png | Bin 2000 -> 0 bytes
public/images/control-panel/password.svg | 1 -
public/images/control-panel/preferences-desktop-wallpaper.gif | Bin 2086 -> 0 bytes
public/images/control-panel/preferences-desktop-wallpaper.png | Bin 3253 -> 0 bytes
public/images/control-panel/preferences-desktop-wallpaper.svg | 1 -
public/images/control-panel/set-geolocation.gif | Bin 2219 -> 0 bytes
public/images/control-panel/set-geolocation.png | Bin 4305 -> 0 bytes
public/images/control-panel/stop.gif | Bin 1454 -> 0 bytes
public/images/control-panel/stop.png | Bin 3136 -> 0 bytes
public/images/control-panel/stop.svg | 336 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
public/images/control-panel/system-file-manager.gif | Bin 1095 -> 0 bytes
public/images/control-panel/system-file-manager.png | Bin 1403 -> 0 bytes
public/images/control-panel/system-file-manager.svg | 1 -
public/images/control-panel/system-users.gif | Bin 1925 -> 0 bytes
public/images/control-panel/system-users.png | Bin 3562 -> 0 bytes
public/images/control-panel/system-users.svg | 1 -
public/images/control-panel/text-editor-disabled.gif | Bin 1878 -> 0 bytes
public/images/control-panel/text-editor-disabled.png | 1 -
public/images/control-panel/text-editor-disabled.svg | 1 -
public/images/control-panel/text-editor.gif | Bin 1833 -> 0 bytes
public/images/control-panel/text-editor.png | Bin 2565 -> 0 bytes
public/images/control-panel/text-editor.svg | 1 -
public/images/doc/activation-conlusion.en.png | Bin 9668 -> 0 bytes
public/images/doc/activation-conlusion.pt.png | Bin 11603 -> 0 bytes
public/images/doc/activation-question.en.png | Bin 21710 -> 0 bytes
public/images/doc/activation-question.pt.png | Bin 23004 -> 0 bytes
public/images/doc/add-member-enterprise.en.png | Bin 19239 -> 0 bytes
public/images/doc/add-member-enterprise.pt.png | Bin 20421 -> 0 bytes
public/images/doc/admin-panel-export-users.en.png | Bin 9744 -> 0 bytes
public/images/doc/admin-panel-export-users.pt.png | Bin 11070 -> 0 bytes
public/images/doc/admin-panel-manage-users.en.png | Bin 21666 -> 0 bytes
public/images/doc/admin-panel-manage-users.pt.png | Bin 24760 -> 0 bytes
public/images/doc/admin-panel-send-email.en.png | Bin 9528 -> 0 bytes
public/images/doc/admin-panel-send-email.pt.png | Bin 10689 -> 0 bytes
public/images/doc/admin-send-email.en.png | Bin 17002 -> 0 bytes
public/images/doc/admin-send-email.pt.png | Bin 16471 -> 0 bytes
public/images/doc/advanced-article-archives-list.en.png | Bin 13905 -> 0 bytes
public/images/doc/advanced-article-archives-list.pt.png | Bin 16153 -> 0 bytes
public/images/doc/advanced-article-created-link.en.png | Bin 16076 -> 0 bytes
public/images/doc/advanced-article-created-link.pt.png | Bin 16314 -> 0 bytes
public/images/doc/advanced-article-created-object.en.png | Bin 15823 -> 0 bytes
public/images/doc/advanced-article-created-object.pt.png | Bin 16983 -> 0 bytes
public/images/doc/advanced-article-insert-html.en.png | Bin 15547 -> 0 bytes
public/images/doc/advanced-article-insert-html.pt.png | Bin 16798 -> 0 bytes
public/images/doc/advanced-article-insert-links.en.png | Bin 14301 -> 0 bytes
public/images/doc/advanced-article-insert-links.pt.png | Bin 14654 -> 0 bytes
public/images/doc/advanced-article-popup-insert-html.en.png | Bin 25518 -> 0 bytes
public/images/doc/advanced-article-popup-insert-html.pt.png | Bin 25989 -> 0 bytes
public/images/doc/advanced-article-popup-insert-link.en.png | Bin 10870 -> 0 bytes
public/images/doc/advanced-article-popup-insert-link.pt.png | Bin 13102 -> 0 bytes
public/images/doc/advanced-article-upload-images.en.png | Bin 17880 -> 0 bytes
public/images/doc/advanced-article-upload-images.pt.png | Bin 18266 -> 0 bytes
public/images/doc/article-bigger-spread-view.en.png | Bin 55019 -> 0 bytes
public/images/doc/article-bigger-spread-view.pt.png | Bin 59572 -> 0 bytes
public/images/doc/article-block.en.png | Bin 8130 -> 0 bytes
public/images/doc/article-block.pt.png | Bin 8124 -> 0 bytes
public/images/doc/article-creation-categorization.en.png | Bin 7513 -> 0 bytes
public/images/doc/article-creation-categorization.pt.png | Bin 10382 -> 0 bytes
public/images/doc/article-creation-category-choosen.en.png | Bin 12410 -> 0 bytes
public/images/doc/article-creation-category-choosen.pt.png | Bin 30006 -> 0 bytes
public/images/doc/article-creation-options.en.png | Bin 11411 -> 0 bytes
public/images/doc/article-creation-options.pt.png | Bin 13693 -> 0 bytes
public/images/doc/article-creation-tags.en.png | Bin 3616 -> 0 bytes
public/images/doc/article-creation-tags.pt.png | Bin 3015 -> 0 bytes
public/images/doc/article-spread-view.en.png | Bin 15515 -> 0 bytes
public/images/doc/article-spread-view.pt.png | Bin 16449 -> 0 bytes
public/images/doc/article-spread.en.png | Bin 18541 -> 0 bytes
public/images/doc/article-spread.pt.png | Bin 18062 -> 0 bytes
public/images/doc/article-text-lead.en.png | Bin 14196 -> 0 bytes
public/images/doc/article-text-lead.pt.png | Bin 14203 -> 0 bytes
public/images/doc/article-text.en.png | Bin 21005 -> 0 bytes
public/images/doc/article-text.pt.png | Bin 19784 -> 0 bytes
public/images/doc/block-actions.en.png | Bin 3671 -> 0 bytes
public/images/doc/blog-buttons.en.png | Bin 6425 -> 0 bytes
public/images/doc/blog-buttons.pt.png | Bin 6622 -> 0 bytes
public/images/doc/box-register.en.png | Bin 33104 -> 0 bytes
public/images/doc/box-register.pt.png | Bin 33025 -> 0 bytes
public/images/doc/change-password.en.png | Bin 14187 -> 0 bytes
public/images/doc/change-password.pt.png | Bin 11155 -> 0 bytes
public/images/doc/changing-role-enterprise-member.en.png | Bin 10882 -> 0 bytes
public/images/doc/changing-role-enterprise-member.pt.png | Bin 11035 -> 0 bytes
public/images/doc/closed-comment-box.en.png | Bin 14601 -> 0 bytes
public/images/doc/closed-comment-box.pt.png | Bin 15648 -> 0 bytes
public/images/doc/cms-article-icons.en.png | Bin 3019 -> 0 bytes
public/images/doc/cms-article-icons.pt.png | Bin 3019 -> 0 bytes
public/images/doc/cms-article-types.en.png | Bin 22860 -> 0 bytes
public/images/doc/cms-article-types.pt.png | Bin 20287 -> 0 bytes
public/images/doc/cms-blog-creation.en.png | Bin 33909 -> 0 bytes
public/images/doc/cms-blog-creation.pt.png | Bin 34335 -> 0 bytes
public/images/doc/cms-blog-public-visualization.en.png | Bin 30103 -> 0 bytes
public/images/doc/cms-blog-public-visualization.pt.png | Bin 31206 -> 0 bytes
public/images/doc/cms-folder-icons.en.png | Bin 2430 -> 0 bytes
public/images/doc/cms-folder-icons.pt.png | Bin 2430 -> 0 bytes
public/images/doc/cms-gallery-public-visualization.en.png | Bin 29716 -> 0 bytes
public/images/doc/cms-gallery-public-visualization.pt.png | Bin 30670 -> 0 bytes
public/images/doc/cms-new-article.en.png | Bin 29802 -> 0 bytes
public/images/doc/cms-new-article.pt.png | Bin 30477 -> 0 bytes
public/images/doc/cms-spread-article-icon.en.png | Bin 24692 -> 0 bytes
public/images/doc/cms-spread-article-icon.pt.png | Bin 25228 -> 0 bytes
public/images/doc/cms-uploading-files.en.png | Bin 24675 -> 0 bytes
public/images/doc/cms-uploading-files.pt.png | Bin 26547 -> 0 bytes
public/images/doc/cms.en.png | Bin 28817 -> 0 bytes
public/images/doc/cms.pt.png | Bin 29618 -> 0 bytes
public/images/doc/comments-of-logged-in-out-person.en.png | Bin 35608 -> 0 bytes
public/images/doc/comments-of-logged-in-out-person.pt.png | Bin 36579 -> 0 bytes
public/images/doc/comments.en.png | Bin 14799 -> 0 bytes
public/images/doc/comments.pt.png | Bin 14654 -> 0 bytes
public/images/doc/communities-block.en.png | Bin 20837 -> 0 bytes
public/images/doc/communities-block.pt.png | Bin 21690 -> 0 bytes
public/images/doc/communities-search-field.en.png | Bin 48251 -> 0 bytes
public/images/doc/communities-search-field.pt.png | Bin 48736 -> 0 bytes
public/images/doc/communities-search-results-with-example.en.png | Bin 24421 -> 0 bytes
public/images/doc/communities-search-results-with-example.pt.png | Bin 24967 -> 0 bytes
public/images/doc/community-balloon-closed-en.png | Bin 8141 -> 0 bytes
public/images/doc/community-balloon-closed.en.png | Bin 8141 -> 0 bytes
public/images/doc/community-balloon-en.png | Bin 14787 -> 0 bytes
public/images/doc/community-balloon-pt.png | Bin 13267 -> 0 bytes
public/images/doc/community-balloon.en.png | Bin 14787 -> 0 bytes
public/images/doc/community-balloon.pt.png | Bin 13267 -> 0 bytes
public/images/doc/community-control-panel-manage-members.en.png | Bin 35386 -> 0 bytes
public/images/doc/community-control-panel-manage-members.pt.png | Bin 36923 -> 0 bytes
public/images/doc/community-control-panel-with-approval-task.en.png | Bin 11485 -> 0 bytes
public/images/doc/community-control-panel-with-approval-task.pt.png | Bin 12060 -> 0 bytes
public/images/doc/community-control-panel-with-tasks.en.png | Bin 11076 -> 0 bytes
public/images/doc/community-control-panel-with-tasks.pt.png | Bin 11569 -> 0 bytes
public/images/doc/community-creation-form.en.png | Bin 27317 -> 0 bytes
public/images/doc/community-creation-form.pt.png | Bin 28206 -> 0 bytes
public/images/doc/community-creation.en.png | Bin 27303 -> 0 bytes
public/images/doc/community-creation.pt.png | Bin 28294 -> 0 bytes
public/images/doc/community-edit-sideboxes.en.png | Bin 25732 -> 0 bytes
public/images/doc/community-edit-sideboxes.pt.png | Bin 75674 -> 0 bytes
public/images/doc/community-image-block.en.png | Bin 32805 -> 0 bytes
public/images/doc/community-image-block.pt.png | Bin 32812 -> 0 bytes
public/images/doc/community-import-invitation-step-1.en.png | Bin 20669 -> 0 bytes
public/images/doc/community-import-invitation-step-1.pt.png | Bin 22366 -> 0 bytes
public/images/doc/community-import-invitation-step-2.en.png | Bin 38317 -> 0 bytes
public/images/doc/community-import-invitation-step-2.pt.png | Bin 40928 -> 0 bytes
public/images/doc/community-info-block.en.png | Bin 21859 -> 0 bytes
public/images/doc/community-info-block.pt.png | Bin 21646 -> 0 bytes
public/images/doc/community-manually-invitation-step-1.en.png | Bin 15506 -> 0 bytes
public/images/doc/community-manually-invitation-step-1.pt.png | Bin 16035 -> 0 bytes
public/images/doc/community-manually-invitation-step-2.en.png | Bin 28713 -> 0 bytes
public/images/doc/community-manually-invitation-step-2.pt.png | Bin 31579 -> 0 bytes
public/images/doc/community-members-with-invitation-button.en.png | Bin 19444 -> 0 bytes
public/images/doc/community-members-with-invitation-button.pt.png | Bin 19963 -> 0 bytes
public/images/doc/community-members-with-send-mail-button.en.png | Bin 32532 -> 0 bytes
public/images/doc/community-members-with-send-mail-button.pt.png | Bin 32410 -> 0 bytes
public/images/doc/community-network-block.en.png | Bin 12335 -> 0 bytes
public/images/doc/community-network-block.pt.png | Bin 11689 -> 0 bytes
public/images/doc/community-send-email.en.png | Bin 17614 -> 0 bytes
public/images/doc/community-send-email.pt.png | Bin 17164 -> 0 bytes
public/images/doc/community-sideboxes-add-block.en.png | Bin 26709 -> 0 bytes
public/images/doc/community-sideboxes-add-block.pt.png | Bin 26765 -> 0 bytes
public/images/doc/confirmation-adding-friend.en.png | Bin 18134 -> 0 bytes
public/images/doc/confirmation-adding-friend.pt.png | Bin 18842 -> 0 bytes
public/images/doc/contact-button.en.png | Bin 21201 -> 0 bytes
public/images/doc/contact-button.pt.png | Bin 20538 -> 0 bytes
public/images/doc/control-panel-change-password.en.png | Bin 46830 -> 0 bytes
public/images/doc/control-panel-change-password.pt.png | Bin 48458 -> 0 bytes
public/images/doc/control-panel-community-edit-appearance.en.png | Bin 34489 -> 0 bytes
public/images/doc/control-panel-community-edit-appearance.pt.png | Bin 36486 -> 0 bytes
public/images/doc/control-panel-community-edit-header-footer.en.png | Bin 35200 -> 0 bytes
public/images/doc/control-panel-community-edit-header-footer.pt.png | Bin 36671 -> 0 bytes
public/images/doc/control-panel-community-edit-sideboxes.en.png | Bin 35075 -> 0 bytes
public/images/doc/control-panel-community-edit-sideboxes.pt.png | Bin 36930 -> 0 bytes
public/images/doc/control-panel-content-management.en.png | Bin 46256 -> 0 bytes
public/images/doc/control-panel-content-management.pt.png | Bin 48516 -> 0 bytes
public/images/doc/control-panel-create-blog.en.png | Bin 48046 -> 0 bytes
public/images/doc/control-panel-create-blog.pt.png | Bin 50685 -> 0 bytes
public/images/doc/control-panel-disable-enterprise.en.png | Bin 46970 -> 0 bytes
public/images/doc/control-panel-disable-enterprise.pt.png | Bin 50086 -> 0 bytes
public/images/doc/control-panel-enterprise-edit-appearance.en.png | Bin 47016 -> 0 bytes
public/images/doc/control-panel-enterprise-edit-appearance.pt.png | Bin 50141 -> 0 bytes
public/images/doc/control-panel-enterprise-edit-header-footer.en.png | Bin 47051 -> 0 bytes
public/images/doc/control-panel-enterprise-edit-header-footer.pt.png | Bin 50159 -> 0 bytes
public/images/doc/control-panel-enterprise-edit-profile-info.en.png | Bin 47613 -> 0 bytes
public/images/doc/control-panel-enterprise-edit-profile-info.pt.png | Bin 50666 -> 0 bytes
public/images/doc/control-panel-enterprise-edit-sideboxes.en.png | Bin 47121 -> 0 bytes
public/images/doc/control-panel-enterprise-edit-sideboxes.pt.png | Bin 50068 -> 0 bytes
public/images/doc/control-panel-manage-groups.en.png | Bin 48421 -> 0 bytes
public/images/doc/control-panel-manage-groups.pt.png | Bin 51220 -> 0 bytes
public/images/doc/control-panel-manage-members.en.png | Bin 46468 -> 0 bytes
public/images/doc/control-panel-manage-members.pt.png | Bin 49821 -> 0 bytes
public/images/doc/control-panel-manage-products.en.png | Bin 44508 -> 0 bytes
public/images/doc/control-panel-manage-products.pt.png | Bin 47986 -> 0 bytes
public/images/doc/control-panel-menu.en.png | Bin 10011 -> 0 bytes
public/images/doc/control-panel-menu.pt.png | Bin 10653 -> 0 bytes
public/images/doc/control-panel-person-delete-profile.en.png | Bin 27581 -> 0 bytes
public/images/doc/control-panel-person-delete-profile.pt.png | Bin 28366 -> 0 bytes
public/images/doc/control-panel-person-edit-profile-info.en.png | Bin 45688 -> 0 bytes
public/images/doc/control-panel-person-edit-profile-info.pt.png | Bin 48558 -> 0 bytes
public/images/doc/control-panel-user-edit-appearance.en.png | Bin 46608 -> 0 bytes
public/images/doc/control-panel-user-edit-appearance.pt.png | Bin 48644 -> 0 bytes
public/images/doc/control-panel-user-edit-header-footer.en.png | Bin 47314 -> 0 bytes
public/images/doc/control-panel-user-edit-header-footer.pt.png | Bin 48956 -> 0 bytes
public/images/doc/control-panel-user-edit-sideboxes.en.png | Bin 47107 -> 0 bytes
public/images/doc/control-panel-user-edit-sideboxes.pt.png | Bin 49118 -> 0 bytes
public/images/doc/control-panel-with-tasks.en.png | Bin 11384 -> 0 bytes
public/images/doc/control-panel-with-tasks.pt.png | Bin 11869 -> 0 bytes
public/images/doc/disable-enterprise-confirmation.en.png | Bin 12091 -> 0 bytes
public/images/doc/disable-enterprise-confirmation.pt.png | Bin 12253 -> 0 bytes
public/images/doc/disabled-enterprise-block.en.png | Bin 4585 -> 0 bytes
public/images/doc/disabled-enterprise-block.pt.png | Bin 4855 -> 0 bytes
public/images/doc/edit-appearance.en.png | Bin 13457 -> 0 bytes
public/images/doc/edit-appearance.pt.png | Bin 13351 -> 0 bytes
public/images/doc/edit-block.en.png | Bin 15391 -> 0 bytes
public/images/doc/edit-block.pt.png | Bin 15382 -> 0 bytes
public/images/doc/edit-header-footer.en.png | Bin 91368 -> 0 bytes
public/images/doc/edit-header-footer.pt.png | Bin 93776 -> 0 bytes
public/images/doc/enterprise-activation-box.en.png | Bin 54565 -> 0 bytes
public/images/doc/enterprise-activation-box.pt.png | Bin 54857 -> 0 bytes
public/images/doc/enterprise-activation-terms.en.png | Bin 8881 -> 0 bytes
public/images/doc/enterprise-activation-terms.pt.png | Bin 9370 -> 0 bytes
public/images/doc/enterprise-edit-profile-categories.en.png | Bin 11803 -> 0 bytes
public/images/doc/enterprise-edit-profile-categories.pt.png | Bin 11617 -> 0 bytes
public/images/doc/enterprise-edit-profile-info-add-picture.en.png | Bin 6203 -> 0 bytes
public/images/doc/enterprise-edit-profile-info-add-picture.pt.png | Bin 5276 -> 0 bytes
public/images/doc/enterprise-edit-profile-info-change-picture.en.png | Bin 18971 -> 0 bytes
public/images/doc/enterprise-edit-profile-info-change-picture.pt.png | Bin 18518 -> 0 bytes
public/images/doc/enterprise-edit-profile-info-general-information.en.png | Bin 15799 -> 0 bytes
public/images/doc/enterprise-edit-profile-info-general-information.pt.png | Bin 16759 -> 0 bytes
public/images/doc/enterprise-edit-profile-info-moderation-options.en.png | Bin 12904 -> 0 bytes
public/images/doc/enterprise-edit-profile-info-moderation-options.pt.png | Bin 12928 -> 0 bytes
public/images/doc/enterprise-edit-profile-privacy-options.en.png | Bin 13549 -> 0 bytes
public/images/doc/enterprise-edit-profile-privacy-options.pt.png | Bin 14679 -> 0 bytes
public/images/doc/enterprise-edit-sideboxes.en.png | Bin 97200 -> 0 bytes
public/images/doc/enterprise-edit-sideboxes.pt.png | Bin 100924 -> 0 bytes
public/images/doc/enterprise-image-block.en.png | Bin 34630 -> 0 bytes
public/images/doc/enterprise-image-block.pt.png | Bin 34545 -> 0 bytes
public/images/doc/enterprise-info-block.en.png | Bin 23777 -> 0 bytes
public/images/doc/enterprise-info-block.pt.png | Bin 23418 -> 0 bytes
public/images/doc/enterprise-members-list.en.png | Bin 11345 -> 0 bytes
public/images/doc/enterprise-members-list.pt.png | Bin 11722 -> 0 bytes
public/images/doc/enterprise-network-block.en.png | Bin 10300 -> 0 bytes
public/images/doc/enterprise-network-block.pt.png | Bin 9561 -> 0 bytes
public/images/doc/enterprise-new-product-last-category.en.png | Bin 33153 -> 0 bytes
public/images/doc/enterprise-new-product-no-category.en.png | Bin 21536 -> 0 bytes
public/images/doc/enterprise-new-product-second-category.en.png | Bin 26147 -> 0 bytes
public/images/doc/enterprise-product-add-input-button.en.png | Bin 14943 -> 0 bytes
public/images/doc/enterprise-product-add-input-form.en.png | Bin 29770 -> 0 bytes
public/images/doc/enterprise-product-change-image-form.en.png | Bin 30127 -> 0 bytes
public/images/doc/enterprise-product-complete.en.png | Bin 69736 -> 0 bytes
public/images/doc/enterprise-product-edit-basic-info-form.en.png | Bin 22449 -> 0 bytes
public/images/doc/enterprise-product-edit-description-form.en.png | Bin 14748 -> 0 bytes
public/images/doc/enterprise-product-edit-name-form.en.png | Bin 13528 -> 0 bytes
public/images/doc/enterprise-product-list-new-product-button.en.png | Bin 14467 -> 0 bytes
public/images/doc/enterprise-product-list-new-product-button.pt.png | Bin 14510 -> 0 bytes
public/images/doc/enterprise-product.en.png | Bin 33184 -> 0 bytes
public/images/doc/enterprise-sideboxes-add-block.en.png | Bin 26709 -> 0 bytes
public/images/doc/enterprise-sideboxes-add-block.pt.png | Bin 27731 -> 0 bytes
public/images/doc/enterprises-block.en.png | Bin 12515 -> 0 bytes
public/images/doc/enterprises-block.pt.png | Bin 12865 -> 0 bytes
public/images/doc/enterprises-search-field.en.png | Bin 22688 -> 0 bytes
public/images/doc/enterprises-search-field.pt.png | Bin 23334 -> 0 bytes
public/images/doc/enterprises-search-results-with-example.en.png | Bin 19992 -> 0 bytes
public/images/doc/enterprises-search-results-with-example.pt.png | Bin 23334 -> 0 bytes
public/images/doc/environment-homepage-with-login-button.en.png | Bin 32840 -> 0 bytes
public/images/doc/environment-homepage-with-login-button.pt.png | Bin 32733 -> 0 bytes
public/images/doc/favorite-enterprises-block.en.png | Bin 6526 -> 0 bytes
public/images/doc/favorite-enterprises-block.pt.png | Bin 7681 -> 0 bytes
public/images/doc/feed-reader-block.en.png | Bin 5793 -> 0 bytes
public/images/doc/feed-reader-block.pt.png | Bin 6023 -> 0 bytes
public/images/doc/friends-block.en.png | Bin 25813 -> 0 bytes
public/images/doc/friends-block.pt.png | Bin 26716 -> 0 bytes
public/images/doc/gallery-buttons.en.png | Bin 10195 -> 0 bytes
public/images/doc/gallery-buttons.pt.png | Bin 10804 -> 0 bytes
public/images/doc/groups-list-with-create-community.en.png | Bin 25000 -> 0 bytes
public/images/doc/groups-list-with-create-community.pt.png | Bin 25668 -> 0 bytes
public/images/doc/groups-list-with-manage-community.en.png | Bin 23532 -> 0 bytes
public/images/doc/groups-list-with-manage-community.pt.png | Bin 24020 -> 0 bytes
public/images/doc/groups-list-with-manage-enterprise.en.png | Bin 23307 -> 0 bytes
public/images/doc/groups-list-with-manage-enterprise.pt.png | Bin 23783 -> 0 bytes
public/images/doc/join-community-confirmation.en.png | Bin 12743 -> 0 bytes
public/images/doc/join-community-confirmation.pt.png | Bin 11879 -> 0 bytes
public/images/doc/joining-community-button.en.png | Bin 114913 -> 0 bytes
public/images/doc/joining-community-button.pt.png | Bin 120894 -> 0 bytes
public/images/doc/links-block.en.png | Bin 7097 -> 0 bytes
public/images/doc/links-block.pt.png | Bin 7081 -> 0 bytes
public/images/doc/location-map-block.en.png | Bin 31614 -> 0 bytes
public/images/doc/location-map-block.pt.png | Bin 31572 -> 0 bytes
public/images/doc/manage-friends.en.png | Bin 45780 -> 0 bytes
public/images/doc/manage-friends.pt.png | Bin 48003 -> 0 bytes
public/images/doc/members-block.en.png | Bin 14706 -> 0 bytes
public/images/doc/members-block.pt.png | Bin 15409 -> 0 bytes
public/images/doc/menu-admin.en.png | Bin 10712 -> 0 bytes
public/images/doc/menu-admin.pt.png | Bin 11265 -> 0 bytes
public/images/doc/menu-communities.en.png | Bin 12682 -> 0 bytes
public/images/doc/menu-communities.pt.png | Bin 12700 -> 0 bytes
public/images/doc/menu-control-panel.en.png | Bin 10011 -> 0 bytes
public/images/doc/menu-control-panel.pt.png | Bin 10653 -> 0 bytes
public/images/doc/menu-enterprises.en.png | Bin 12565 -> 0 bytes
public/images/doc/menu-enterprises.pt.png | Bin 12998 -> 0 bytes
public/images/doc/menu-logout.en.png | Bin 10904 -> 0 bytes
public/images/doc/menu-logout.pt.png | Bin 10711 -> 0 bytes
public/images/doc/menu-more-active-communities.en.png | Bin 22951 -> 0 bytes
public/images/doc/menu-more-active-communities.pt.png | Bin 25864 -> 0 bytes
public/images/doc/menu-more-active-people.en.png | Bin 31432 -> 0 bytes
public/images/doc/menu-more-active-people.pt.png | Bin 33021 -> 0 bytes
public/images/doc/menu-more-popular-communities.en.png | Bin 24080 -> 0 bytes
public/images/doc/menu-more-popular-communities.pt.png | Bin 25215 -> 0 bytes
public/images/doc/menu-more-popular-people.en.png | Bin 31182 -> 0 bytes
public/images/doc/menu-more-popular-people.pt.png | Bin 32053 -> 0 bytes
public/images/doc/menu-more-recent-communities.en.png | Bin 23113 -> 0 bytes
public/images/doc/menu-more-recent-communities.pt.png | Bin 26099 -> 0 bytes
public/images/doc/menu-more-recent-people.en.png | Bin 31527 -> 0 bytes
public/images/doc/menu-more-recent-people.pt.png | Bin 24386 -> 0 bytes
public/images/doc/menu-people.en.png | Bin 12138 -> 0 bytes
public/images/doc/menu-people.pt.png | Bin 12302 -> 0 bytes
public/images/doc/menu-products.en.png | Bin 12296 -> 0 bytes
public/images/doc/menu-products.pt.png | Bin 12276 -> 0 bytes
public/images/doc/menu-search.en.png | Bin 12002 -> 0 bytes
public/images/doc/menu-search.pt.png | Bin 11715 -> 0 bytes
public/images/doc/more-active-communities-detail.en.png | Bin 6686 -> 0 bytes
public/images/doc/more-active-communities-detail.pt.png | Bin 6731 -> 0 bytes
public/images/doc/more-active-communities-with-example.en.png | Bin 13981 -> 0 bytes
public/images/doc/more-active-communities-with-example.pt.png | Bin 13842 -> 0 bytes
public/images/doc/more-active-communities.en.png | Bin 26776 -> 0 bytes
public/images/doc/more-active-communities.pt.png | Bin 26558 -> 0 bytes
public/images/doc/more-active-people-detail.en.png | Bin 5141 -> 0 bytes
public/images/doc/more-active-people-detail.pt.png | Bin 5115 -> 0 bytes
public/images/doc/more-active-people-with-example.en.png | Bin 13773 -> 0 bytes
public/images/doc/more-active-people-with-example.pt.png | Bin 13700 -> 0 bytes
public/images/doc/more-active-people.en.png | Bin 29664 -> 0 bytes
public/images/doc/more-active-people.pt.png | Bin 29948 -> 0 bytes
public/images/doc/more-popular-communities-detail.en.png | Bin 6561 -> 0 bytes
public/images/doc/more-popular-communities-detail.pt.png | Bin 6677 -> 0 bytes
public/images/doc/more-popular-communities-with-example.en.png | Bin 13407 -> 0 bytes
public/images/doc/more-popular-communities-with-example.pt.png | Bin 13670 -> 0 bytes
public/images/doc/more-popular-communities.en.png | Bin 25275 -> 0 bytes
public/images/doc/more-popular-communities.pt.png | Bin 25189 -> 0 bytes
public/images/doc/more-popular-people-detail.en.png | Bin 5080 -> 0 bytes
public/images/doc/more-popular-people-detail.pt.png | Bin 5072 -> 0 bytes
public/images/doc/more-popular-people-with-example.en.png | Bin 12961 -> 0 bytes
public/images/doc/more-popular-people-with-example.pt.png | Bin 13413 -> 0 bytes
public/images/doc/more-popular-people.en.png | Bin 31706 -> 0 bytes
public/images/doc/more-popular-people.pt.png | Bin 32130 -> 0 bytes
public/images/doc/more-recent-communities-detail.en.png | Bin 7225 -> 0 bytes
public/images/doc/more-recent-communities-detail.pt.png | Bin 7355 -> 0 bytes
public/images/doc/more-recent-communities-with-example.en.png | Bin 14371 -> 0 bytes
public/images/doc/more-recent-communities-with-example.pt.png | Bin 14951 -> 0 bytes
public/images/doc/more-recent-communities.en.png | Bin 26855 -> 0 bytes
public/images/doc/more-recent-communities.pt.png | Bin 27718 -> 0 bytes
public/images/doc/more-recent-people-detail.en.png | Bin 5829 -> 0 bytes
public/images/doc/more-recent-people-detail.pt.png | Bin 5942 -> 0 bytes
public/images/doc/more-recent-people-with-example.en.png | Bin 14022 -> 0 bytes
public/images/doc/more-recent-people-with-example.pt.png | Bin 14863 -> 0 bytes
public/images/doc/more-recent-people.en.png | Bin 34745 -> 0 bytes
public/images/doc/more-recent-people.pt.png | Bin 35875 -> 0 bytes
public/images/doc/new-folder.en.png | Bin 29766 -> 0 bytes
public/images/doc/new-folder.pt.png | Bin 32447 -> 0 bytes
public/images/doc/open-comment-box-for-logged-in.en.png | Bin 9160 -> 0 bytes
public/images/doc/open-comment-box-for-logged-in.pt.png | Bin 10499 -> 0 bytes
public/images/doc/open-comment-box-for-not-logged-in.en.png | Bin 14210 -> 0 bytes
public/images/doc/open-comment-box-for-not-logged-in.pt.png | Bin 16247 -> 0 bytes
public/images/doc/other-person-view-profile-link.en.png | Bin 48146 -> 0 bytes
public/images/doc/other-person-view-profile-link.pt.png | Bin 48555 -> 0 bytes
public/images/doc/people-search-field.en.png | Bin 49899 -> 0 bytes
public/images/doc/people-search-field.pt.png | Bin 50475 -> 0 bytes
public/images/doc/people-search-results-with-example.en.png | Bin 15278 -> 0 bytes
public/images/doc/people-search-results-with-example.pt.png | Bin 15858 -> 0 bytes
public/images/doc/person-activities-list.en.png | Bin 51683 -> 0 bytes
public/images/doc/person-activities-list.pt.png | Bin 53725 -> 0 bytes
public/images/doc/person-balloon-closed-en.png | Bin 6584 -> 0 bytes
public/images/doc/person-balloon-closed.en.png | Bin 6584 -> 0 bytes
public/images/doc/person-balloon-en.png | Bin 12277 -> 0 bytes
public/images/doc/person-balloon-pt.png | Bin 12966 -> 0 bytes
public/images/doc/person-balloon.en.png | Bin 12277 -> 0 bytes
public/images/doc/person-balloon.pt.png | Bin 12966 -> 0 bytes
public/images/doc/person-delete-profile-confirmation.en.png | Bin 13375 -> 0 bytes
public/images/doc/person-delete-profile-confirmation.pt.png | Bin 13981 -> 0 bytes
public/images/doc/person-edit-profile-categories.en.png | Bin 24323 -> 0 bytes
public/images/doc/person-edit-profile-categories.pt.png | Bin 25211 -> 0 bytes
public/images/doc/person-edit-profile-info-change-picture.en.png | Bin 20640 -> 0 bytes
public/images/doc/person-edit-profile-info-change-picture.pt.png | Bin 20093 -> 0 bytes
public/images/doc/person-edit-profile-info-general-informationen.en.png | Bin 11650 -> 0 bytes
public/images/doc/person-edit-profile-info-general-informationen.pt.png | Bin 12938 -> 0 bytes
public/images/doc/person-edit-profile-privacy-options.en.png | Bin 13897 -> 0 bytes
public/images/doc/person-edit-profile-privacy-options.pt.png | Bin 14228 -> 0 bytes
public/images/doc/person-view-profile-link.en.png | Bin 42751 -> 0 bytes
public/images/doc/person-view-profile-link.pt.png | Bin 42472 -> 0 bytes
public/images/doc/person-wall-scrap-reply-button.en.png | Bin 32889 -> 0 bytes
public/images/doc/person-wall-scrap-reply-form.en.png | Bin 40929 -> 0 bytes
public/images/doc/person-wall-scrap-reply-form.pt.png | Bin 41950 -> 0 bytes
public/images/doc/person-wall-scrap-reply-sent.en.png | Bin 34429 -> 0 bytes
public/images/doc/person-wall-scrap-reply-sent.pt.png | Bin 34743 -> 0 bytes
public/images/doc/person-wall-scrap-sent.en.png | Bin 25913 -> 0 bytes
public/images/doc/person-wall-scrap-sent.pt.png | Bin 29733 -> 0 bytes
public/images/doc/person-wall-writing-scrap.en.png | Bin 20981 -> 0 bytes
public/images/doc/person-wall-writing-scrap.pt.png | Bin 20203 -> 0 bytes
public/images/doc/products-block.en.png | Bin 7553 -> 0 bytes
public/images/doc/products-block.pt.png | Bin 7257 -> 0 bytes
public/images/doc/products-search-field.en.png | Bin 41796 -> 0 bytes
public/images/doc/products-search-field.pt.png | Bin 42149 -> 0 bytes
public/images/doc/products-search-results-with-example.en.png | Bin 18909 -> 0 bytes
public/images/doc/products-search-results-with-example.pt.png | Bin 18938 -> 0 bytes
public/images/doc/profile-image-block.en.png | Bin 33475 -> 0 bytes
public/images/doc/profile-image-block.pt.png | Bin 33548 -> 0 bytes
public/images/doc/profile-info-block.en.png | Bin 22656 -> 0 bytes
public/images/doc/profile-info-block.pt.png | Bin 22572 -> 0 bytes
public/images/doc/profile-with-button-to-add-friends.en.png | Bin 67705 -> 0 bytes
public/images/doc/profile-with-button-to-add-friends.pt.png | Bin 64486 -> 0 bytes
public/images/doc/recent-content-block.en.png | Bin 7774 -> 0 bytes
public/images/doc/recent-content-block.pt.png | Bin 8109 -> 0 bytes
public/images/doc/remove-comment-confirmation.en.png | Bin 7838 -> 0 bytes
public/images/doc/remove-comment-confirmation.pt.png | Bin 7548 -> 0 bytes
public/images/doc/remove-friend-confirmation.en.png | Bin 33248 -> 0 bytes
public/images/doc/remove-friend-confirmation.pt.png | Bin 33904 -> 0 bytes
public/images/doc/remove-friend.en.png | Bin 30219 -> 0 bytes
public/images/doc/remove-friend.pt.png | Bin 35491 -> 0 bytes
public/images/doc/search-more-options-open.en.png | Bin 19178 -> 0 bytes
public/images/doc/search-more-options-open.pt.png | Bin 20380 -> 0 bytes
public/images/doc/search-more-options.en.png | Bin 9271 -> 0 bytes
public/images/doc/search-more-options.pt.png | Bin 9638 -> 0 bytes
public/images/doc/search-results-with-example.en.png | Bin 75255 -> 0 bytes
public/images/doc/search-results-with-example.pt.png | Bin 79334 -> 0 bytes
public/images/doc/search-view-all-results-with-example.en.png | Bin 22921 -> 0 bytes
public/images/doc/search-view-all-results-with-example.pt.png | Bin 23286 -> 0 bytes
public/images/doc/send-message.en.png | Bin 16795 -> 0 bytes
public/images/doc/send-message.pt.png | Bin 19068 -> 0 bytes
public/images/doc/signup-form.en.png | Bin 30299 -> 0 bytes
public/images/doc/signup-form.pt.png | Bin 31325 -> 0 bytes
public/images/doc/slideshow-block.en.png | Bin 5952 -> 0 bytes
public/images/doc/slideshow-block.pt.png | Bin 6257 -> 0 bytes
public/images/doc/system-homepage-top-menu-admin.en.png | Bin 145627 -> 0 bytes
public/images/doc/system-homepage-top-menu-admin.pt.png | Bin 120878 -> 0 bytes
public/images/doc/system-homepage-top-menu.en.png | Bin 145851 -> 0 bytes
public/images/doc/system-homepage-top-menu.pt.png | Bin 148763 -> 0 bytes
public/images/doc/tags-block.en.png | Bin 6428 -> 0 bytes
public/images/doc/tags-block.pt.png | Bin 6908 -> 0 bytes
public/images/doc/tasks-list-approval-request.en.png | Bin 26710 -> 0 bytes
public/images/doc/tasks-list-approval-request.pt.png | Bin 22428 -> 0 bytes
public/images/doc/tasks-list-friendship-request.en.png | Bin 19451 -> 0 bytes
public/images/doc/tasks-list-friendship-request.pt.png | Bin 19378 -> 0 bytes
public/images/doc/tasks-list-membership-request.en.png | Bin 18961 -> 0 bytes
public/images/doc/tasks-list-membership-request.pt.png | Bin 16878 -> 0 bytes
public/images/doc/top-menu.en.png | Bin 9761 -> 0 bytes
public/images/doc/top-menu.pt.png | Bin 9589 -> 0 bytes
public/images/doc/uploading-files-to-gallery.en.png | Bin 23475 -> 0 bytes
public/images/doc/uploading-files-to-gallery.pt.png | Bin 23852 -> 0 bytes
public/images/doc/user-edit-sideboxes.en.png | Bin 118141 -> 0 bytes
public/images/doc/user-edit-sideboxes.pt.png | Bin 122067 -> 0 bytes
public/images/doc/user-friends-with-invitation-button.en.png | Bin 30845 -> 0 bytes
public/images/doc/user-friends-with-invitation-button.pt.png | Bin 33564 -> 0 bytes
public/images/doc/user-import-invitation-step-1.en.png | Bin 20134 -> 0 bytes
public/images/doc/user-import-invitation-step-1.pt.png | Bin 21841 -> 0 bytes
public/images/doc/user-import-invitation-step-2.en.png | Bin 37783 -> 0 bytes
public/images/doc/user-import-invitation-step-2.pt.png | Bin 40475 -> 0 bytes
public/images/doc/user-manually-invitation-step-1.en.png | Bin 14999 -> 0 bytes
public/images/doc/user-manually-invitation-step-1.pt.png | Bin 15554 -> 0 bytes
public/images/doc/user-manually-invitation-step-2.en.png | Bin 28208 -> 0 bytes
public/images/doc/user-manually-invitation-step-2.pt.png | Bin 31091 -> 0 bytes
public/images/doc/user-network-block.en.png | Bin 9183 -> 0 bytes
public/images/doc/user-network-block.pt.png | Bin 8876 -> 0 bytes
public/images/doc/user-sideboxes-add-block.en.png | Bin 32631 -> 0 bytes
public/images/doc/user-sideboxes-add-block.pt.png | Bin 35865 -> 0 bytes
public/images/doc/wysiwyg-buttons.en.png | Bin 6534 -> 0 bytes
public/images/doc/wysiwyg-buttons.pt.png | Bin 6399 -> 0 bytes
public/images/dotleaders.png | Bin 174 -> 0 bytes
public/images/down-arrow.png | Bin 407 -> 0 bytes
public/images/ecosol-tree-sprite.png | Bin 2861 -> 0 bytes
public/images/fancybox/blank.gif | Bin 43 -> 0 bytes
public/images/fancybox/fancy_close.png | Bin 1517 -> 0 bytes
public/images/fancybox/fancy_loading.png | Bin 10195 -> 0 bytes
public/images/fancybox/fancy_nav_left.png | Bin 1446 -> 0 bytes
public/images/fancybox/fancy_nav_right.png | Bin 1454 -> 0 bytes
public/images/fancybox/fancy_shadow_e.png | Bin 107 -> 0 bytes
public/images/fancybox/fancy_shadow_n.png | Bin 106 -> 0 bytes
public/images/fancybox/fancy_shadow_ne.png | Bin 347 -> 0 bytes
public/images/fancybox/fancy_shadow_nw.png | Bin 324 -> 0 bytes
public/images/fancybox/fancy_shadow_s.png | Bin 111 -> 0 bytes
public/images/fancybox/fancy_shadow_se.png | Bin 352 -> 0 bytes
public/images/fancybox/fancy_shadow_sw.png | Bin 340 -> 0 bytes
public/images/fancybox/fancy_shadow_w.png | Bin 103 -> 0 bytes
public/images/fancybox/fancy_title_left.png | Bin 503 -> 0 bytes
public/images/fancybox/fancy_title_main.png | Bin 96 -> 0 bytes
public/images/fancybox/fancy_title_over.png | Bin 70 -> 0 bytes
public/images/fancybox/fancy_title_right.png | Bin 506 -> 0 bytes
public/images/fancybox/fancybox-x.png | Bin 203 -> 0 bytes
public/images/fancybox/fancybox-y.png | Bin 176 -> 0 bytes
public/images/fancybox/fancybox.png | Bin 15287 -> 0 bytes
public/images/fff.gif | Bin 149 -> 0 bytes
public/images/field-bg.png | Bin 399 -> 0 bytes
public/images/forum-activity-bg-onecol.png | Bin 1773 -> 0 bytes
public/images/forum-activity-bg.png | Bin 1758 -> 0 bytes
public/images/forum-activity-icon.png | Bin 477 -> 0 bytes
public/images/gallery-image-activity-border-big-onecol.png | Bin 2265 -> 0 bytes
public/images/gallery-image-activity-border-big.png | Bin 1349 -> 0 bytes
public/images/gallery-image-activity-border-onecol.png | Bin 1479 -> 0 bytes
public/images/gallery-image-activity-border.png | Bin 1039 -> 0 bytes
public/images/grip-clue.png | Bin 159 -> 0 bytes
public/images/hachure.png | Bin 233 -> 0 bytes
public/images/help-avatar.gif | Bin 2489 -> 0 bytes
public/images/icon_filter_exclude.png | Bin 1190 -> 0 bytes
public/images/icon_more_options.png | Bin 1004 -> 0 bytes
public/images/icons-app/alert.png | 1 -
public/images/icons-app/article-minor.png | Bin 3076 -> 0 bytes
public/images/icons-app/article-portrait.png | Bin 2756 -> 0 bytes
public/images/icons-app/article-thumb.png | Bin 4967 -> 0 bytes
public/images/icons-app/chat-22x22.png | 1 -
public/images/icons-app/community-big.png | Bin 20086 -> 0 bytes
public/images/icons-app/community-icon.png | Bin 1218 -> 0 bytes
public/images/icons-app/community-minor.png | Bin 4414 -> 0 bytes
public/images/icons-app/community-portrait.png | Bin 6359 -> 0 bytes
public/images/icons-app/community-thumb.png | Bin 11813 -> 0 bytes
public/images/icons-app/design-editor.png | Bin 6115 -> 0 bytes
public/images/icons-app/emblem-important.png | Bin 2207 -> 0 bytes
public/images/icons-app/enterprise-big.png | Bin 25130 -> 0 bytes
public/images/icons-app/enterprise-icon.png | Bin 2738 -> 0 bytes
public/images/icons-app/enterprise-minor.png | Bin 5318 -> 0 bytes
public/images/icons-app/enterprise-portrait.png | Bin 7746 -> 0 bytes
public/images/icons-app/enterprise-registration.png | 1 -
public/images/icons-app/enterprise-thumb.png | Bin 14380 -> 0 bytes
public/images/icons-app/gnome-irc-22x22.png | Bin 1261 -> 0 bytes
public/images/icons-app/gnome-irc.png | Bin 2256 -> 0 bytes
public/images/icons-app/gnome-settings-theme.png | Bin 2288 -> 0 bytes
public/images/icons-app/gtk-folder.png | Bin 3101 -> 0 bytes
public/images/icons-app/ico-female.png | Bin 500 -> 0 bytes
public/images/icons-app/ico-male.png | Bin 516 -> 0 bytes
public/images/icons-app/ico-sex-undef.png | Bin 431 -> 0 bytes
public/images/icons-app/image-loading-big.png | Bin 10950 -> 0 bytes
public/images/icons-app/image-loading-display.png | Bin 43168 -> 0 bytes
public/images/icons-app/image-loading-icon.png | Bin 960 -> 0 bytes
public/images/icons-app/image-loading-minor.png | Bin 3074 -> 0 bytes
public/images/icons-app/image-loading-portrait.png | Bin 4124 -> 0 bytes
public/images/icons-app/image-loading-slideshow.png | Bin 18814 -> 0 bytes
public/images/icons-app/image-loading-small.png | Bin 1779 -> 0 bytes
public/images/icons-app/image-loading-thumb.png | Bin 7066 -> 0 bytes
public/images/icons-app/person-big.png | Bin 13796 -> 0 bytes
public/images/icons-app/person-icon.png | Bin 1052 -> 0 bytes
public/images/icons-app/person-minor.png | Bin 3675 -> 0 bytes
public/images/icons-app/person-portrait.png | Bin 5153 -> 0 bytes
public/images/icons-app/person-thumb.png | Bin 8938 -> 0 bytes
public/images/icons-app/product-default-pic-big.png | Bin 20547 -> 0 bytes
public/images/icons-app/product-default-pic-minor.png | Bin 3815 -> 0 bytes
public/images/icons-app/product-default-pic-portrait.png | Bin 5172 -> 0 bytes
public/images/icons-app/product-default-pic-thumb.png | Bin 9206 -> 0 bytes
public/images/icons-app/user_icon.png | Bin 3522 -> 0 bytes
public/images/icons-app/user_icon.svg | 529 -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
public/images/icons-app/users.svg | 863 -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
public/images/icons-bar/accessibility.png | Bin 1217 -> 0 bytes
public/images/icons-bar/admin.png | Bin 1393 -> 0 bytes
public/images/icons-bar/go-content.png | Bin 974 -> 0 bytes
public/images/icons-bar/go-home.png | Bin 854 -> 0 bytes
public/images/icons-bar/help.png | Bin 1581 -> 0 bytes
public/images/icons-bar/login.png | Bin 1095 -> 0 bytes
public/images/icons-bar/logout.png | Bin 935 -> 0 bytes
public/images/icons-bar/logout2.png | Bin 956 -> 0 bytes
public/images/icons-cat/Agropecuária_extrativismo_e_pesca.png | Bin 509 -> 0 bytes
public/images/icons-cat/Alimentos_e_bebidas.png | Bin 444 -> 0 bytes
public/images/icons-cat/Artefatos_artesanais.png | Bin 461 -> 0 bytes
public/images/icons-cat/Ação_comunitária.png | Bin 320 -> 0 bytes
public/images/icons-cat/Coleta_e_reciclagem_de_materiais.png | Bin 435 -> 0 bytes
public/images/icons-cat/Crédito_e_finanças.png | Bin 472 -> 0 bytes
public/images/icons-cat/Fitoterápicos_e_produtos_de_limpeza_e_higiene.png | Bin 475 -> 0 bytes
public/images/icons-cat/Prestação_de_serviços_diversos.png | Bin 380 -> 0 bytes
public/images/icons-cat/Produção_industrial.png | Bin 322 -> 0 bytes
public/images/icons-cat/Produção_têxtil_e_confecção.png | Bin 475 -> 0 bytes
public/images/icons-cat/Software.png | Bin 408 -> 0 bytes
public/images/icons-cat/Software_Livre.png | Bin 408 -> 0 bytes
public/images/icons-cat/undefined.png | Bin 338 -> 0 bytes
public/images/icons-map/enterprise.png | Bin 4872 -> 0 bytes
public/images/icons-map/enterprise_shadow.png | Bin 1761 -> 0 bytes
public/images/icons-mime/README | 93 ---------------------------------------------------------------------------------------------
public/images/icons-mime/empty.png | Bin 3231 -> 0 bytes
public/images/icons-mime/event.png | 1 -
public/images/icons-mime/folder.png | 1 -
public/images/icons-mime/gnome-folder.png | Bin 1026 -> 0 bytes
public/images/icons-mime/gnome-mime-empty.png | Bin 540 -> 0 bytes
public/images/icons-mime/gnome-mime-text-html.png | Bin 1220 -> 0 bytes
public/images/icons-mime/ico-feed-on.png | Bin 1179 -> 0 bytes
public/images/icons-mime/rss-feed-16.png | Bin 849 -> 0 bytes
public/images/icons-mime/rss-feed.png | 1 -
public/images/icons-mime/text-html.png | 1 -
public/images/icons-mime/unknown.png | 1 -
public/images/icons-task/closed-arrow-hover.png | Bin 216 -> 0 bytes
public/images/icons-task/closed-arrow.png | Bin 204 -> 0 bytes
public/images/icons-task/opened-arrow-hover.png | Bin 189 -> 0 bytes
public/images/icons-task/opened-arrow.png | Bin 199 -> 0 bytes
public/images/input-bg.gif | Bin 4091 -> 0 bytes
public/images/loading-dark.gif | Bin 3208 -> 0 bytes
public/images/loading-small-dark.gif | Bin 1912 -> 0 bytes
public/images/loading-small.gif | Bin 1553 -> 0 bytes
public/images/loading.gif | Bin 1787 -> 0 bytes
public/images/login_checking.png | Bin 1117 -> 0 bytes
public/images/logo-anhetegua-200x50.png | Bin 7233 -> 0 bytes
public/images/logo-anhetegua.png | Bin 18213 -> 0 bytes
public/images/noosfero-network.png | Bin 99130 -> 0 bytes
public/images/noosfero-network.svg | 4618 ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
public/images/orange-balloon.png | Bin 1146 -> 0 bytes
public/images/orange-bg.png | Bin 191 -> 0 bytes
public/images/passwords_match.png | Bin 777 -> 0 bytes
public/images/passwords_nomatch.png | Bin 374 -> 0 bytes
public/images/rails.png | Bin 1787 -> 0 bytes
public/images/scrap-bg-gray.png | Bin 289 -> 0 bytes
public/images/scrap-bg.png | Bin 290 -> 0 bytes
public/images/solidarity-economy.png | Bin 976 -> 0 bytes
public/images/top-arrow.png | Bin 261 -> 0 bytes
public/images/white-pixel.gif | Bin 35 -> 0 bytes
public/images/zoom-dark.png | Bin 177 -> 0 bytes
public/images/zoom.png | Bin 420 -> 0 bytes
public/javascripts/add-and-join.js | 103 -------------------------------------------------------------------------------------------------------
public/javascripts/application.js | 937 -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
public/javascripts/article.js | 175 -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
public/javascripts/ba-linkify.js | 214 ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
public/javascripts/catalog.js | 47 -----------------------------------------------
public/javascripts/chat.js | 641 -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
public/javascripts/codepress/codepress.css | 21 ---------------------
public/javascripts/codepress/codepress.html | 35 -----------------------------------
public/javascripts/codepress/codepress.js | 138 ------------------------------------------------------------------------------------------------------------------------------------------
public/javascripts/codepress/engines/gecko.js | 293 -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
public/javascripts/codepress/engines/khtml.js | 0
public/javascripts/codepress/engines/msie.js | 304 ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
public/javascripts/codepress/engines/older.js | 0
public/javascripts/codepress/engines/opera.js | 260 --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
public/javascripts/codepress/images/line-numbers.png | Bin 16556 -> 0 bytes
public/javascripts/codepress/index.html | 443 -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
public/javascripts/codepress/languages/asp.css | 71 -----------------------------------------------------------------------
public/javascripts/codepress/languages/asp.js | 117 ---------------------------------------------------------------------------------------------------------------------
public/javascripts/codepress/languages/autoit.css | 13 -------------
public/javascripts/codepress/languages/autoit.js | 32 --------------------------------
public/javascripts/codepress/languages/csharp.css | 9 ---------
public/javascripts/codepress/languages/csharp.js | 25 -------------------------
public/javascripts/codepress/languages/css.css | 10 ----------
public/javascripts/codepress/languages/css.js | 23 -----------------------
public/javascripts/codepress/languages/generic.css | 9 ---------
public/javascripts/codepress/languages/generic.js | 25 -------------------------
public/javascripts/codepress/languages/html.css | 13 -------------
public/javascripts/codepress/languages/html.js | 59 -----------------------------------------------------------
public/javascripts/codepress/languages/java.css | 7 -------
public/javascripts/codepress/languages/java.js | 24 ------------------------
public/javascripts/codepress/languages/javascript.css | 8 --------
public/javascripts/codepress/languages/javascript.js | 30 ------------------------------
public/javascripts/codepress/languages/perl.css | 11 -----------
public/javascripts/codepress/languages/perl.js | 27 ---------------------------
public/javascripts/codepress/languages/php.css | 12 ------------
public/javascripts/codepress/languages/php.js | 61 -------------------------------------------------------------
public/javascripts/codepress/languages/ruby.css | 10 ----------
public/javascripts/codepress/languages/ruby.js | 26 --------------------------
public/javascripts/codepress/languages/sql.css | 10 ----------
public/javascripts/codepress/languages/sql.js | 30 ------------------------------
public/javascripts/codepress/languages/text.css | 5 -----
public/javascripts/codepress/languages/text.js | 9 ---------
public/javascripts/codepress/languages/vbscript.css | 71 -----------------------------------------------------------------------
public/javascripts/codepress/languages/vbscript.js | 117 ---------------------------------------------------------------------------------------------------------------------
public/javascripts/codepress/languages/xsl.css | 15 ---------------
public/javascripts/codepress/languages/xsl.js | 103 -------------------------------------------------------------------------------------------------------
public/javascripts/codepress/license.txt | 458 --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
public/javascripts/colorbox.js | 814 ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
public/javascripts/colorpicker-noosfero.js | 19 -------------------
public/javascripts/colorpicker.js | 484 ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
public/javascripts/controls.js | 963 ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
public/javascripts/dragdrop.js | 972 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
public/javascripts/effects.js | 1120 ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
public/javascripts/errors.js | 16 ----------------
public/javascripts/google_maps.js | 61 -------------------------------------------------------------
public/javascripts/jquery-latest.js | 8316 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
public/javascripts/jquery-ui-1.8.2.custom.min.js | 1012 ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
public/javascripts/jquery-validation/README.md | 8 --------
public/javascripts/jquery-validation/changelog.txt | 251 -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
public/javascripts/jquery-validation/jquery.validate.js | 1159 -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
public/javascripts/jquery-validation/jquery.validate.min.js | 50 --------------------------------------------------
public/javascripts/jquery-validation/lib/jquery-1.4.2.js | 6240 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
public/javascripts/jquery-validation/lib/jquery-1.4.4.js | 7179 ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
public/javascripts/jquery-validation/lib/jquery-1.5.1.js | 8316 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
public/javascripts/jquery-validation/lib/jquery-1.5.js | 8176 ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
public/javascripts/jquery-validation/lib/jquery.form.js | 660 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
public/javascripts/jquery-validation/lib/jquery.js | 4376 --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
public/javascripts/jquery-validation/lib/jquery.metadata.js | 122 --------------------------------------------------------------------------------------------------------------------------
public/javascripts/jquery-validation/localization/messages_ar.js | 24 ------------------------
public/javascripts/jquery-validation/localization/messages_bg.js | 23 -----------------------
public/javascripts/jquery-validation/localization/messages_ca.js | 23 -----------------------
public/javascripts/jquery-validation/localization/messages_cn.js | 23 -----------------------
public/javascripts/jquery-validation/localization/messages_cs.js | 23 -----------------------
public/javascripts/jquery-validation/localization/messages_da.js | 20 --------------------
public/javascripts/jquery-validation/localization/messages_de.js | 20 --------------------
public/javascripts/jquery-validation/localization/messages_el.js | 24 ------------------------
public/javascripts/jquery-validation/localization/messages_es.js | 23 -----------------------
public/javascripts/jquery-validation/localization/messages_fa.js | 23 -----------------------
public/javascripts/jquery-validation/localization/messages_fi.js | 21 ---------------------
public/javascripts/jquery-validation/localization/messages_fr.js | 23 -----------------------
public/javascripts/jquery-validation/localization/messages_ge.js | 23 -----------------------
public/javascripts/jquery-validation/localization/messages_he.js | 23 -----------------------
public/javascripts/jquery-validation/localization/messages_hu.js | 20 --------------------
public/javascripts/jquery-validation/localization/messages_it.js | 23 -----------------------
public/javascripts/jquery-validation/localization/messages_ja.js | 23 -----------------------
public/javascripts/jquery-validation/localization/messages_kk.js | 23 -----------------------
public/javascripts/jquery-validation/localization/messages_lt.js | 23 -----------------------
public/javascripts/jquery-validation/localization/messages_lv.js | 23 -----------------------
public/javascripts/jquery-validation/localization/messages_nl.js | 23 -----------------------
public/javascripts/jquery-validation/localization/messages_no.js | 23 -----------------------
public/javascripts/jquery-validation/localization/messages_pl.js | 23 -----------------------
public/javascripts/jquery-validation/localization/messages_pt.js | 1 -
public/javascripts/jquery-validation/localization/messages_ptbr.js | 23 -----------------------
public/javascripts/jquery-validation/localization/messages_ptpt.js | 23 -----------------------
public/javascripts/jquery-validation/localization/messages_ro.js | 23 -----------------------
public/javascripts/jquery-validation/localization/messages_ru.js | 23 -----------------------
public/javascripts/jquery-validation/localization/messages_se.js | 21 ---------------------
public/javascripts/jquery-validation/localization/messages_si.js | 23 -----------------------
public/javascripts/jquery-validation/localization/messages_sk.js | 20 --------------------
public/javascripts/jquery-validation/localization/messages_sr.js | 23 -----------------------
public/javascripts/jquery-validation/localization/messages_tr.js | 23 -----------------------
public/javascripts/jquery-validation/localization/messages_tw.js | 23 -----------------------
public/javascripts/jquery-validation/localization/messages_ua.js | 23 -----------------------
public/javascripts/jquery-validation/localization/methods_de.js | 12 ------------
public/javascripts/jquery-validation/localization/methods_nl.js | 9 ---------
public/javascripts/jquery-validation/localization/methods_pt.js | 9 ---------
public/javascripts/jquery-validation/test/events.html | 71 -----------------------------------------------------------------------
public/javascripts/jquery-validation/test/firebug/errorIcon.png | Bin 457 -> 0 bytes
public/javascripts/jquery-validation/test/firebug/firebug.css | 209 -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
public/javascripts/jquery-validation/test/firebug/firebug.html | 23 -----------------------
public/javascripts/jquery-validation/test/firebug/firebug.js | 672 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
public/javascripts/jquery-validation/test/firebug/firebugx.js | 10 ----------
public/javascripts/jquery-validation/test/firebug/infoIcon.png | Bin 524 -> 0 bytes
public/javascripts/jquery-validation/test/firebug/warningIcon.png | Bin 516 -> 0 bytes
public/javascripts/jquery-validation/test/index.html | 270 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
public/javascripts/jquery-validation/test/jquery.js | 23 -----------------------
public/javascripts/jquery-validation/test/large.html | 188 --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
public/javascripts/jquery-validation/test/messages.js | 62 --------------------------------------------------------------
public/javascripts/jquery-validation/test/methods.js | 584 --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
public/javascripts/jquery-validation/test/qunit/qunit.css | 205 -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
public/javascripts/jquery-validation/test/qunit/qunit.js | 1428 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
public/javascripts/jquery-validation/test/rules.js | 267 ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
public/javascripts/jquery-validation/test/selects/index.html | 444 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
public/javascripts/jquery-validation/test/tabs.html | 78 ------------------------------------------------------------------------------
public/javascripts/jquery-validation/test/test.js | 1124 --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
public/javascripts/jquery-validation/test/users.php | 11 -----------
public/javascripts/jquery-validation/test/users2.php | 11 -----------
public/javascripts/jquery-validation/todo | 172 ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
public/javascripts/jquery-validation/version.txt | 1 -
public/javascripts/jquery.ba-bbq.min.js | 18 ------------------
public/javascripts/jquery.ba-hashchange.js | 390 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
public/javascripts/jquery.cookie.js | 96 ------------------------------------------------------------------------------------------------
public/javascripts/jquery.cycle.all.min.js | 27 ---------------------------
public/javascripts/jquery.emoticon.js | 53 -----------------------------------------------------
public/javascripts/jquery.fancybox-1.3.4.pack.js | 46 ----------------------------------------------
public/javascripts/jquery.form.js | 1076 --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
public/javascripts/jquery.noconflict.js | 1 -
public/javascripts/jquery.scrollTo.js | 215 -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
public/javascripts/jquery.scrollabletab.js | 277 -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
public/javascripts/jquery.sound.js | 80 --------------------------------------------------------------------------------
public/javascripts/jquery.tokeninput.js | 865 -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
public/javascripts/lightbox.js | 232 ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
public/javascripts/lowpro.js | 338 --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
public/javascripts/manage-categories.js | 46 ----------------------------------------------
public/javascripts/manage-products.js | 183 ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
public/javascripts/pikachoose.js | 276 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
public/javascripts/prototype.js | 4221 ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
public/javascripts/reflection.js | 177 ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
public/javascripts/report-abuse.js | 17 -----------------
public/javascripts/sliderjs.js | 213 ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
public/javascripts/strophejs-1.0.1/LICENSE.txt | 19 -------------------
public/javascripts/strophejs-1.0.1/README.txt | 15 ---------------
public/javascripts/strophejs-1.0.1/contrib/discojs/README.txt | 42 ------------------------------------------
public/javascripts/strophejs-1.0.1/contrib/discojs/css/disco.css | 16 ----------------
public/javascripts/strophejs-1.0.1/contrib/discojs/index.html | 47 -----------------------------------------------
public/javascripts/strophejs-1.0.1/contrib/discojs/punjab.tac | 18 ------------------
public/javascripts/strophejs-1.0.1/contrib/discojs/scripts/basic.js | 102 ------------------------------------------------------------------------------------------------------
public/javascripts/strophejs-1.0.1/contrib/discojs/scripts/disco.js | 60 ------------------------------------------------------------
public/javascripts/strophejs-1.0.1/doc/files/core-js.html | 189 ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
public/javascripts/strophejs-1.0.1/doc/index.html | 1 -
public/javascripts/strophejs-1.0.1/doc/javascript/main.js | 836 --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
public/javascripts/strophejs-1.0.1/doc/javascript/searchdata.js | 152 --------------------------------------------------------------------------------------------------------------------------------------------------------
public/javascripts/strophejs-1.0.1/doc/search/ClassesS.html | 20 --------------------
public/javascripts/strophejs-1.0.1/doc/search/ConstantsA.html | 20 --------------------
public/javascripts/strophejs-1.0.1/doc/search/ConstantsB.html | 20 --------------------
public/javascripts/strophejs-1.0.1/doc/search/ConstantsC.html | 20 --------------------
public/javascripts/strophejs-1.0.1/doc/search/ConstantsD.html | 20 --------------------
public/javascripts/strophejs-1.0.1/doc/search/ConstantsE.html | 20 --------------------
public/javascripts/strophejs-1.0.1/doc/search/ConstantsF.html | 20 --------------------
public/javascripts/strophejs-1.0.1/doc/search/ConstantsH.html | 20 --------------------
public/javascripts/strophejs-1.0.1/doc/search/ConstantsI.html | 20 --------------------
public/javascripts/strophejs-1.0.1/doc/search/ConstantsL.html | 20 --------------------
public/javascripts/strophejs-1.0.1/doc/search/ConstantsM.html | 20 --------------------
public/javascripts/strophejs-1.0.1/doc/search/ConstantsP.html | 20 --------------------
public/javascripts/strophejs-1.0.1/doc/search/ConstantsR.html | 20 --------------------
public/javascripts/strophejs-1.0.1/doc/search/ConstantsS.html | 20 --------------------
public/javascripts/strophejs-1.0.1/doc/search/ConstantsV.html | 20 --------------------
public/javascripts/strophejs-1.0.1/doc/search/ConstantsW.html | 20 --------------------
public/javascripts/strophejs-1.0.1/doc/search/ConstantsX.html | 20 --------------------
public/javascripts/strophejs-1.0.1/doc/search/FilesS.html | 20 --------------------
public/javascripts/strophejs-1.0.1/doc/search/FunctionsA.html | 20 --------------------
public/javascripts/strophejs-1.0.1/doc/search/FunctionsB.html | 20 --------------------
public/javascripts/strophejs-1.0.1/doc/search/FunctionsC.html | 20 --------------------
public/javascripts/strophejs-1.0.1/doc/search/FunctionsD.html | 20 --------------------
public/javascripts/strophejs-1.0.1/doc/search/FunctionsE.html | 20 --------------------
public/javascripts/strophejs-1.0.1/doc/search/FunctionsF.html | 20 --------------------
public/javascripts/strophejs-1.0.1/doc/search/FunctionsG.html | 20 --------------------
public/javascripts/strophejs-1.0.1/doc/search/FunctionsI.html | 20 --------------------
public/javascripts/strophejs-1.0.1/doc/search/FunctionsL.html | 20 --------------------
public/javascripts/strophejs-1.0.1/doc/search/FunctionsP.html | 20 --------------------
public/javascripts/strophejs-1.0.1/doc/search/FunctionsR.html | 20 --------------------
public/javascripts/strophejs-1.0.1/doc/search/FunctionsS.html | 20 --------------------
public/javascripts/strophejs-1.0.1/doc/search/FunctionsSymbols.html | 20 --------------------
public/javascripts/strophejs-1.0.1/doc/search/FunctionsT.html | 20 --------------------
public/javascripts/strophejs-1.0.1/doc/search/FunctionsU.html | 20 --------------------
public/javascripts/strophejs-1.0.1/doc/search/FunctionsW.html | 20 --------------------
public/javascripts/strophejs-1.0.1/doc/search/FunctionsX.html | 20 --------------------
public/javascripts/strophejs-1.0.1/doc/search/GeneralA.html | 20 --------------------
public/javascripts/strophejs-1.0.1/doc/search/GeneralB.html | 20 --------------------
public/javascripts/strophejs-1.0.1/doc/search/GeneralC.html | 20 --------------------
public/javascripts/strophejs-1.0.1/doc/search/GeneralD.html | 20 --------------------
public/javascripts/strophejs-1.0.1/doc/search/GeneralE.html | 20 --------------------
public/javascripts/strophejs-1.0.1/doc/search/GeneralF.html | 20 --------------------
public/javascripts/strophejs-1.0.1/doc/search/GeneralG.html | 20 --------------------
public/javascripts/strophejs-1.0.1/doc/search/GeneralH.html | 20 --------------------
public/javascripts/strophejs-1.0.1/doc/search/GeneralI.html | 20 --------------------
public/javascripts/strophejs-1.0.1/doc/search/GeneralL.html | 20 --------------------
public/javascripts/strophejs-1.0.1/doc/search/GeneralM.html | 20 --------------------
public/javascripts/strophejs-1.0.1/doc/search/GeneralP.html | 20 --------------------
public/javascripts/strophejs-1.0.1/doc/search/GeneralR.html | 20 --------------------
public/javascripts/strophejs-1.0.1/doc/search/GeneralS.html | 20 --------------------
public/javascripts/strophejs-1.0.1/doc/search/GeneralSymbols.html | 20 --------------------
public/javascripts/strophejs-1.0.1/doc/search/GeneralT.html | 20 --------------------
public/javascripts/strophejs-1.0.1/doc/search/GeneralU.html | 20 --------------------
public/javascripts/strophejs-1.0.1/doc/search/GeneralV.html | 20 --------------------
public/javascripts/strophejs-1.0.1/doc/search/GeneralW.html | 20 --------------------
public/javascripts/strophejs-1.0.1/doc/search/GeneralX.html | 20 --------------------
public/javascripts/strophejs-1.0.1/doc/search/NoResults.html | 15 ---------------
public/javascripts/strophejs-1.0.1/doc/styles/main.css | 767 -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
public/javascripts/strophejs-1.0.1/examples/attach/README | 37 -------------------------------------
public/javascripts/strophejs-1.0.1/examples/attach/__init__.py | 0
public/javascripts/strophejs-1.0.1/examples/attach/attacher/__init__.py | 0
public/javascripts/strophejs-1.0.1/examples/attach/attacher/views.py | 18 ------------------
public/javascripts/strophejs-1.0.1/examples/attach/boshclient.py | 152 --------------------------------------------------------------------------------------------------------------------------------------------------------
public/javascripts/strophejs-1.0.1/examples/attach/manage.py | 11 -----------
public/javascripts/strophejs-1.0.1/examples/attach/settings.py | 85 -------------------------------------------------------------------------------------
public/javascripts/strophejs-1.0.1/examples/attach/templates/attacher/index.html | 88 ----------------------------------------------------------------------------------------
public/javascripts/strophejs-1.0.1/examples/attach/urls.py | 19 -------------------
public/javascripts/strophejs-1.0.1/examples/basic.html | 25 -------------------------
public/javascripts/strophejs-1.0.1/examples/basic.js | 55 -------------------------------------------------------
public/javascripts/strophejs-1.0.1/examples/crossdomain.html | 32 --------------------------------
public/javascripts/strophejs-1.0.1/examples/crossdomain.js | 62 --------------------------------------------------------------
public/javascripts/strophejs-1.0.1/examples/crossdomain.xml | 12 ------------
public/javascripts/strophejs-1.0.1/examples/dojo-ping.html | 27 ---------------------------
public/javascripts/strophejs-1.0.1/examples/dojo-ping.js | 56 --------------------------------------------------------
public/javascripts/strophejs-1.0.1/examples/echobot.html | 25 -------------------------
public/javascripts/strophejs-1.0.1/examples/echobot.js | 79 -------------------------------------------------------------------------------
public/javascripts/strophejs-1.0.1/examples/prebind.html | 39 ---------------------------------------
public/javascripts/strophejs-1.0.1/examples/prebind.js | 103 -------------------------------------------------------------------------------------------------------
public/javascripts/strophejs-1.0.1/examples/prototype-ping.html | 27 ---------------------------
public/javascripts/strophejs-1.0.1/examples/prototype-ping.js | 56 --------------------------------------------------------
public/javascripts/strophejs-1.0.1/examples/yui-ping.html | 26 --------------------------
public/javascripts/strophejs-1.0.1/examples/yui-ping.js | 58 ----------------------------------------------------------
public/javascripts/strophejs-1.0.1/plugins/strophe.flxhr.js | 31 -------------------------------
public/javascripts/strophejs-1.0.1/plugins/strophe.flxhr.min.js | 1 -
public/javascripts/strophejs-1.0.1/plugins/strophe.pubsub.js | 270 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
public/javascripts/strophejs-1.0.1/plugins/strophe.pubsub.min.js | 1 -
public/javascripts/strophejs-1.0.1/strophe.js | 3543 ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
public/javascripts/strophejs-1.0.1/strophe.min.js | 1 -
public/javascripts/strophejs-1.0.1/tests/jstests.js | 136 ----------------------------------------------------------------------------------------------------------------------------------------
public/javascripts/strophejs-1.0.1/tests/jsyuitests.js | 31 -------------------------------
public/javascripts/strophejs-1.0.1/tests/pubsub.html | 28 ----------------------------
public/javascripts/strophejs-1.0.1/tests/pubsub.js | 314 --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
public/javascripts/strophejs-1.0.1/tests/strophe.html | 22 ----------------------
public/javascripts/strophejs-1.0.1/tests/testrunner.js | 735 ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
public/javascripts/strophejs-1.0.1/tests/tests.js | 163 -------------------------------------------------------------------------------------------------------------------------------------------------------------------
public/javascripts/strophejs-1.0.1/tests/testsuite.css | 120 ------------------------------------------------------------------------------------------------------------------------
public/javascripts/strophejs-1.0.1/tests/yuitests.html | 20 --------------------
public/javascripts/strophejs-1.0.1/tests/yuitests.js | 26 --------------------------
public/javascripts/tasks.js | 49 -------------------------------------------------
public/javascripts/thickbox.js | 319 -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
public/javascripts/tinymce/changelog.txt | 1303 -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
public/javascripts/tinymce/examples/accessibility.html | 101 -----------------------------------------------------------------------------------------------------
public/javascripts/tinymce/examples/css/content.css | 105 ---------------------------------------------------------------------------------------------------------
public/javascripts/tinymce/examples/css/word.css | 53 -----------------------------------------------------
public/javascripts/tinymce/examples/custom_formats.html | 111 ---------------------------------------------------------------------------------------------------------------
public/javascripts/tinymce/examples/full.html | 101 -----------------------------------------------------------------------------------------------------
public/javascripts/tinymce/examples/index.html | 10 ----------
public/javascripts/tinymce/examples/lists/image_list.js | 9 ---------
public/javascripts/tinymce/examples/lists/link_list.js | 10 ----------
public/javascripts/tinymce/examples/lists/media_list.js | 14 --------------
public/javascripts/tinymce/examples/lists/template_list.js | 9 ---------
public/javascripts/tinymce/examples/media/logo.jpg | Bin 2729 -> 0 bytes
public/javascripts/tinymce/examples/media/logo_over.jpg | Bin 6473 -> 0 bytes
public/javascripts/tinymce/examples/media/sample.avi | Bin 82944 -> 0 bytes
public/javascripts/tinymce/examples/media/sample.dcr | Bin 6774 -> 0 bytes
public/javascripts/tinymce/examples/media/sample.flv | Bin 88722 -> 0 bytes
public/javascripts/tinymce/examples/media/sample.mov | Bin 55622 -> 0 bytes
public/javascripts/tinymce/examples/media/sample.ram | 1 -
public/javascripts/tinymce/examples/media/sample.rm | Bin 17846 -> 0 bytes
public/javascripts/tinymce/examples/media/sample.swf | Bin 6118 -> 0 bytes
public/javascripts/tinymce/examples/menu.html | 18 ------------------
public/javascripts/tinymce/examples/simple.html | 47 -----------------------------------------------
public/javascripts/tinymce/examples/skins.html | 216 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
public/javascripts/tinymce/examples/templates/layout1.htm | 15 ---------------
public/javascripts/tinymce/examples/templates/snippet1.htm | 1 -
public/javascripts/tinymce/examples/translate.html | 80 --------------------------------------------------------------------------------
public/javascripts/tinymce/examples/word.html | 72 ------------------------------------------------------------------------
public/javascripts/tinymce/jscripts/tiny_mce/langs/de.js | 155 -----------------------------------------------------------------------------------------------------------------------------------------------------------
public/javascripts/tinymce/jscripts/tiny_mce/langs/en.js | 223 -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
public/javascripts/tinymce/jscripts/tiny_mce/langs/eo.js | 1 -
public/javascripts/tinymce/jscripts/tiny_mce/langs/es.js | 172 ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
public/javascripts/tinymce/jscripts/tiny_mce/langs/fr.js | 154 ----------------------------------------------------------------------------------------------------------------------------------------------------------
public/javascripts/tinymce/jscripts/tiny_mce/langs/hy.js | 1 -
public/javascripts/tinymce/jscripts/tiny_mce/langs/it.js | 1 -
public/javascripts/tinymce/jscripts/tiny_mce/langs/ja.js | 154 ----------------------------------------------------------------------------------------------------------------------------------------------------------
public/javascripts/tinymce/jscripts/tiny_mce/langs/nl.js | 154 ----------------------------------------------------------------------------------------------------------------------------------------------------------
public/javascripts/tinymce/jscripts/tiny_mce/langs/pt.js | 154 ----------------------------------------------------------------------------------------------------------------------------------------------------------
public/javascripts/tinymce/jscripts/tiny_mce/langs/ru.js | 157 -------------------------------------------------------------------------------------------------------------------------------------------------------------
public/javascripts/tinymce/jscripts/tiny_mce/license.txt | 504 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
public/javascripts/tinymce/jscripts/tiny_mce/plugins/advhr/css/advhr.css | 5 -----
public/javascripts/tinymce/jscripts/tiny_mce/plugins/advhr/editor_plugin.js | 1 -
public/javascripts/tinymce/jscripts/tiny_mce/plugins/advhr/editor_plugin_src.js | 57 ---------------------------------------------------------
public/javascripts/tinymce/jscripts/tiny_mce/plugins/advhr/js/rule.js | 43 -------------------------------------------
public/javascripts/tinymce/jscripts/tiny_mce/plugins/advhr/langs/de_dlg.js | 5 -----
public/javascripts/tinymce/jscripts/tiny_mce/plugins/advhr/langs/en_dlg.js | 7 -------
public/javascripts/tinymce/jscripts/tiny_mce/plugins/advhr/langs/eo_dlg.js | 1 -
public/javascripts/tinymce/jscripts/tiny_mce/plugins/advhr/langs/es_dlg.js | 5 -----
public/javascripts/tinymce/jscripts/tiny_mce/plugins/advhr/langs/fr_dlg.js | 5 -----
public/javascripts/tinymce/jscripts/tiny_mce/plugins/advhr/langs/ja_dlg.js | 5 -----
public/javascripts/tinymce/jscripts/tiny_mce/plugins/advhr/langs/nl_dlg.js | 5 -----
public/javascripts/tinymce/jscripts/tiny_mce/plugins/advhr/langs/pt_dlg.js | 5 -----
public/javascripts/tinymce/jscripts/tiny_mce/plugins/advhr/langs/ru_dlg.js | 5 -----
public/javascripts/tinymce/jscripts/tiny_mce/plugins/advhr/rule.htm | 58 ----------------------------------------------------------
public/javascripts/tinymce/jscripts/tiny_mce/plugins/advimage/css/advimage.css | 13 -------------
public/javascripts/tinymce/jscripts/tiny_mce/plugins/advimage/editor_plugin.js | 1 -
public/javascripts/tinymce/jscripts/tiny_mce/plugins/advimage/editor_plugin_src.js | 50 --------------------------------------------------
public/javascripts/tinymce/jscripts/tiny_mce/plugins/advimage/image.htm | 235 -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
public/javascripts/tinymce/jscripts/tiny_mce/plugins/advimage/img/sample.gif | Bin 1624 -> 0 bytes
public/javascripts/tinymce/jscripts/tiny_mce/plugins/advimage/js/image.js | 458 --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
public/javascripts/tinymce/jscripts/tiny_mce/plugins/advimage/langs/de_dlg.js | 43 -------------------------------------------
public/javascripts/tinymce/jscripts/tiny_mce/plugins/advimage/langs/en_dlg.js | 45 ---------------------------------------------
public/javascripts/tinymce/jscripts/tiny_mce/plugins/advimage/langs/eo_dlg.js | 1 -
public/javascripts/tinymce/jscripts/tiny_mce/plugins/advimage/langs/es_dlg.js | 43 -------------------------------------------
public/javascripts/tinymce/jscripts/tiny_mce/plugins/advimage/langs/fr_dlg.js | 43 -------------------------------------------
public/javascripts/tinymce/jscripts/tiny_mce/plugins/advimage/langs/ja_dlg.js | 43 -------------------------------------------
public/javascripts/tinymce/jscripts/tiny_mce/plugins/advimage/langs/nl_dlg.js | 43 -------------------------------------------
public/javascripts/tinymce/jscripts/tiny_mce/plugins/advimage/langs/pt_dlg.js | 43 -------------------------------------------
public/javascripts/tinymce/jscripts/tiny_mce/plugins/advimage/langs/ru_dlg.js | 43 -------------------------------------------
public/javascripts/tinymce/jscripts/tiny_mce/plugins/advlink/css/advlink.css | 8 --------
public/javascripts/tinymce/jscripts/tiny_mce/plugins/advlink/editor_plugin.js | 1 -
public/javascripts/tinymce/jscripts/tiny_mce/plugins/advlink/editor_plugin_src.js | 61 -------------------------------------------------------------
public/javascripts/tinymce/jscripts/tiny_mce/plugins/advlink/js/advlink.js | 532 ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
public/javascripts/tinymce/jscripts/tiny_mce/plugins/advlink/langs/de_dlg.js | 52 ----------------------------------------------------
public/javascripts/tinymce/jscripts/tiny_mce/plugins/advlink/langs/en_dlg.js | 54 ------------------------------------------------------
public/javascripts/tinymce/jscripts/tiny_mce/plugins/advlink/langs/eo_dlg.js | 1 -
public/javascripts/tinymce/jscripts/tiny_mce/plugins/advlink/langs/es_dlg.js | 52 ----------------------------------------------------
public/javascripts/tinymce/jscripts/tiny_mce/plugins/advlink/langs/fr_dlg.js | 52 ----------------------------------------------------
public/javascripts/tinymce/jscripts/tiny_mce/plugins/advlink/langs/ja_dlg.js | 52 ----------------------------------------------------
public/javascripts/tinymce/jscripts/tiny_mce/plugins/advlink/langs/nl_dlg.js | 52 ----------------------------------------------------
public/javascripts/tinymce/jscripts/tiny_mce/plugins/advlink/langs/pt_dlg.js | 52 ----------------------------------------------------
public/javascripts/tinymce/jscripts/tiny_mce/plugins/advlink/langs/ru_dlg.js | 52 ----------------------------------------------------
public/javascripts/tinymce/jscripts/tiny_mce/plugins/advlink/link.htm | 338 --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
public/javascripts/tinymce/jscripts/tiny_mce/plugins/advlist/editor_plugin.js | 1 -
public/javascripts/tinymce/jscripts/tiny_mce/plugins/advlist/editor_plugin_src.js | 161 -----------------------------------------------------------------------------------------------------------------------------------------------------------------
public/javascripts/tinymce/jscripts/tiny_mce/plugins/autolink/editor_plugin.js | 1 -
public/javascripts/tinymce/jscripts/tiny_mce/plugins/autolink/editor_plugin_src.js | 169 -------------------------------------------------------------------------------------------------------------------------------------------------------------------------
public/javascripts/tinymce/jscripts/tiny_mce/plugins/autoresize/editor_plugin.js | 1 -
public/javascripts/tinymce/jscripts/tiny_mce/plugins/autoresize/editor_plugin_src.js | 128 --------------------------------------------------------------------------------------------------------------------------------
public/javascripts/tinymce/jscripts/tiny_mce/plugins/autosave/editor_plugin.js | 1 -
public/javascripts/tinymce/jscripts/tiny_mce/plugins/autosave/editor_plugin_src.js | 431 -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
public/javascripts/tinymce/jscripts/tiny_mce/plugins/autosave/langs/en.js | 4 ----
public/javascripts/tinymce/jscripts/tiny_mce/plugins/bbcode/editor_plugin.js | 1 -
public/javascripts/tinymce/jscripts/tiny_mce/plugins/bbcode/editor_plugin_src.js | 120 ------------------------------------------------------------------------------------------------------------------------
public/javascripts/tinymce/jscripts/tiny_mce/plugins/contextmenu/editor_plugin.js | 1 -
public/javascripts/tinymce/jscripts/tiny_mce/plugins/contextmenu/editor_plugin_src.js | 161 -----------------------------------------------------------------------------------------------------------------------------------------------------------------
public/javascripts/tinymce/jscripts/tiny_mce/plugins/directionality/editor_plugin.js | 1 -
public/javascripts/tinymce/jscripts/tiny_mce/plugins/directionality/editor_plugin_src.js | 82 ----------------------------------------------------------------------------------
public/javascripts/tinymce/jscripts/tiny_mce/plugins/emotions/editor_plugin.js | 1 -
public/javascripts/tinymce/jscripts/tiny_mce/plugins/emotions/editor_plugin_src.js | 43 -------------------------------------------
public/javascripts/tinymce/jscripts/tiny_mce/plugins/emotions/emotions.htm | 41 -----------------------------------------
public/javascripts/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-cool.gif | Bin 354 -> 0 bytes
public/javascripts/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-cry.gif | Bin 329 -> 0 bytes
public/javascripts/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-embarassed.gif | Bin 331 -> 0 bytes
public/javascripts/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-foot-in-mouth.gif | Bin 344 -> 0 bytes
public/javascripts/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-frown.gif | Bin 340 -> 0 bytes
public/javascripts/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-innocent.gif | Bin 336 -> 0 bytes
public/javascripts/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-kiss.gif | Bin 338 -> 0 bytes
public/javascripts/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-laughing.gif | Bin 344 -> 0 bytes
public/javascripts/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-money-mouth.gif | Bin 321 -> 0 bytes
public/javascripts/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-sealed.gif | Bin 325 -> 0 bytes
public/javascripts/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-smile.gif | Bin 345 -> 0 bytes
public/javascripts/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-surprised.gif | Bin 342 -> 0 bytes
public/javascripts/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-tongue-out.gif | Bin 328 -> 0 bytes
public/javascripts/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-undecided.gif | Bin 337 -> 0 bytes
public/javascripts/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-wink.gif | Bin 351 -> 0 bytes
public/javascripts/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-yell.gif | Bin 336 -> 0 bytes
public/javascripts/tinymce/jscripts/tiny_mce/plugins/emotions/js/emotions.js | 22 ----------------------
public/javascripts/tinymce/jscripts/tiny_mce/plugins/emotions/langs/de_dlg.js | 20 --------------------
public/javascripts/tinymce/jscripts/tiny_mce/plugins/emotions/langs/en_dlg.js | 20 --------------------
public/javascripts/tinymce/jscripts/tiny_mce/plugins/emotions/langs/eo_dlg.js | 1 -
public/javascripts/tinymce/jscripts/tiny_mce/plugins/emotions/langs/es_dlg.js | 20 --------------------
public/javascripts/tinymce/jscripts/tiny_mce/plugins/emotions/langs/fr_dlg.js | 20 --------------------
public/javascripts/tinymce/jscripts/tiny_mce/plugins/emotions/langs/ja_dlg.js | 20 --------------------
public/javascripts/tinymce/jscripts/tiny_mce/plugins/emotions/langs/nl_dlg.js | 20 --------------------
public/javascripts/tinymce/jscripts/tiny_mce/plugins/emotions/langs/pt_dlg.js | 20 --------------------
public/javascripts/tinymce/jscripts/tiny_mce/plugins/emotions/langs/ru_dlg.js | 20 --------------------
public/javascripts/tinymce/jscripts/tiny_mce/plugins/example/dialog.htm | 22 ----------------------
public/javascripts/tinymce/jscripts/tiny_mce/plugins/example/editor_plugin.js | 1 -
public/javascripts/tinymce/jscripts/tiny_mce/plugins/example/editor_plugin_src.js | 84 ------------------------------------------------------------------------------------
public/javascripts/tinymce/jscripts/tiny_mce/plugins/example/img/example.gif | Bin 87 -> 0 bytes
public/javascripts/tinymce/jscripts/tiny_mce/plugins/example/js/dialog.js | 19 -------------------
public/javascripts/tinymce/jscripts/tiny_mce/plugins/example/langs/en.js | 3 ---
public/javascripts/tinymce/jscripts/tiny_mce/plugins/example/langs/en_dlg.js | 3 ---
public/javascripts/tinymce/jscripts/tiny_mce/plugins/fullpage/css/fullpage.css | 143 -----------------------------------------------------------------------------------------------------------------------------------------------
public/javascripts/tinymce/jscripts/tiny_mce/plugins/fullpage/editor_plugin.js | 1 -
public/javascripts/tinymce/jscripts/tiny_mce/plugins/fullpage/editor_plugin_src.js | 399 ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
public/javascripts/tinymce/jscripts/tiny_mce/plugins/fullpage/fullpage.htm | 259 -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
public/javascripts/tinymce/jscripts/tiny_mce/plugins/fullpage/js/fullpage.js | 232 ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
public/javascripts/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/de_dlg.js | 85 -------------------------------------------------------------------------------------
public/javascripts/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/en_dlg.js | 85 -------------------------------------------------------------------------------------
public/javascripts/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/eo_dlg.js | 1 -
public/javascripts/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/es_dlg.js | 85 -------------------------------------------------------------------------------------
public/javascripts/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/fr_dlg.js | 85 -------------------------------------------------------------------------------------
public/javascripts/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/ja_dlg.js | 85 -------------------------------------------------------------------------------------
public/javascripts/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/nl_dlg.js | 85 -------------------------------------------------------------------------------------
public/javascripts/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/pt_dlg.js | 85 -------------------------------------------------------------------------------------
public/javascripts/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/ru_dlg.js | 85 -------------------------------------------------------------------------------------
public/javascripts/tinymce/jscripts/tiny_mce/plugins/fullscreen/editor_plugin.js | 1 -
public/javascripts/tinymce/jscripts/tiny_mce/plugins/fullscreen/editor_plugin_src.js | 159 ---------------------------------------------------------------------------------------------------------------------------------------------------------------
public/javascripts/tinymce/jscripts/tiny_mce/plugins/fullscreen/fullscreen.htm | 109 -------------------------------------------------------------------------------------------------------------
public/javascripts/tinymce/jscripts/tiny_mce/plugins/iespell/editor_plugin.js | 1 -
public/javascripts/tinymce/jscripts/tiny_mce/plugins/iespell/editor_plugin_src.js | 54 ------------------------------------------------------
public/javascripts/tinymce/jscripts/tiny_mce/plugins/inlinepopups/editor_plugin.js | 1 -
public/javascripts/tinymce/jscripts/tiny_mce/plugins/inlinepopups/editor_plugin_src.js | 696 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
public/javascripts/tinymce/jscripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/alert.gif | Bin 818 -> 0 bytes
public/javascripts/tinymce/jscripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/button.gif | Bin 280 -> 0 bytes
public/javascripts/tinymce/jscripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/buttons.gif | Bin 1195 -> 0 bytes
public/javascripts/tinymce/jscripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/confirm.gif | Bin 915 -> 0 bytes
public/javascripts/tinymce/jscripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/corners.gif | Bin 911 -> 0 bytes
public/javascripts/tinymce/jscripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/horizontal.gif | Bin 769 -> 0 bytes
public/javascripts/tinymce/jscripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/vertical.gif | Bin 92 -> 0 bytes
public/javascripts/tinymce/jscripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/window.css | 90 ------------------------------------------------------------------------------------------
public/javascripts/tinymce/jscripts/tiny_mce/plugins/inlinepopups/template.htm | 387 ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
public/javascripts/tinymce/jscripts/tiny_mce/plugins/insertdatetime/editor_plugin.js | 1 -
public/javascripts/tinymce/jscripts/tiny_mce/plugins/insertdatetime/editor_plugin_src.js | 83 -----------------------------------------------------------------------------------
public/javascripts/tinymce/jscripts/tiny_mce/plugins/layer/editor_plugin.js | 1 -
public/javascripts/tinymce/jscripts/tiny_mce/plugins/layer/editor_plugin_src.js | 214 ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
public/javascripts/tinymce/jscripts/tiny_mce/plugins/legacyoutput/editor_plugin.js | 1 -
public/javascripts/tinymce/jscripts/tiny_mce/plugins/legacyoutput/editor_plugin_src.js | 139 -------------------------------------------------------------------------------------------------------------------------------------------
public/javascripts/tinymce/jscripts/tiny_mce/plugins/lists/editor_plugin.js | 1 -
public/javascripts/tinymce/jscripts/tiny_mce/plugins/lists/editor_plugin_src.js | 617 -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
public/javascripts/tinymce/jscripts/tiny_mce/plugins/media/css/content.css | 6 ------
public/javascripts/tinymce/jscripts/tiny_mce/plugins/media/css/media.css | 17 -----------------
public/javascripts/tinymce/jscripts/tiny_mce/plugins/media/editor_plugin.js | 1 -
public/javascripts/tinymce/jscripts/tiny_mce/plugins/media/editor_plugin_src.js | 770 --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
public/javascripts/tinymce/jscripts/tiny_mce/plugins/media/img/flash.gif | Bin 241 -> 0 bytes
public/javascripts/tinymce/jscripts/tiny_mce/plugins/media/img/flv_player.swf | Bin 11668 -> 0 bytes
public/javascripts/tinymce/jscripts/tiny_mce/plugins/media/img/quicktime.gif | Bin 303 -> 0 bytes
public/javascripts/tinymce/jscripts/tiny_mce/plugins/media/img/realmedia.gif | Bin 439 -> 0 bytes
public/javascripts/tinymce/jscripts/tiny_mce/plugins/media/img/shockwave.gif | Bin 387 -> 0 bytes
public/javascripts/tinymce/jscripts/tiny_mce/plugins/media/img/trans.gif | Bin 43 -> 0 bytes
public/javascripts/tinymce/jscripts/tiny_mce/plugins/media/img/windowsmedia.gif | Bin 415 -> 0 bytes
public/javascripts/tinymce/jscripts/tiny_mce/plugins/media/js/embed.js | 73 -------------------------------------------------------------------------
public/javascripts/tinymce/jscripts/tiny_mce/plugins/media/js/media.js | 354 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
public/javascripts/tinymce/jscripts/tiny_mce/plugins/media/langs/de_dlg.js | 103 -------------------------------------------------------------------------------------------------------
public/javascripts/tinymce/jscripts/tiny_mce/plugins/media/langs/en_dlg.js | 109 -------------------------------------------------------------------------------------------------------------
public/javascripts/tinymce/jscripts/tiny_mce/plugins/media/langs/eo_dlg.js | 1 -
public/javascripts/tinymce/jscripts/tiny_mce/plugins/media/langs/es_dlg.js | 103 -------------------------------------------------------------------------------------------------------
public/javascripts/tinymce/jscripts/tiny_mce/plugins/media/langs/fr_dlg.js | 103 -------------------------------------------------------------------------------------------------------
public/javascripts/tinymce/jscripts/tiny_mce/plugins/media/langs/ja_dlg.js | 103 -------------------------------------------------------------------------------------------------------
public/javascripts/tinymce/jscripts/tiny_mce/plugins/media/langs/nl_dlg.js | 103 -------------------------------------------------------------------------------------------------------
public/javascripts/tinymce/jscripts/tiny_mce/plugins/media/langs/pt_dlg.js | 103 -------------------------------------------------------------------------------------------------------
public/javascripts/tinymce/jscripts/tiny_mce/plugins/media/langs/ru_dlg.js | 103 -------------------------------------------------------------------------------------------------------
public/javascripts/tinymce/jscripts/tiny_mce/plugins/media/media.htm | 812 --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
public/javascripts/tinymce/jscripts/tiny_mce/plugins/media/moxieplayer.swf | Bin 33931 -> 0 bytes
public/javascripts/tinymce/jscripts/tiny_mce/plugins/nonbreaking/editor_plugin.js | 1 -
public/javascripts/tinymce/jscripts/tiny_mce/plugins/nonbreaking/editor_plugin_src.js | 53 -----------------------------------------------------
public/javascripts/tinymce/jscripts/tiny_mce/plugins/noneditable/editor_plugin.js | 1 -
public/javascripts/tinymce/jscripts/tiny_mce/plugins/noneditable/editor_plugin_src.js | 92 --------------------------------------------------------------------------------------------
public/javascripts/tinymce/jscripts/tiny_mce/plugins/pagebreak/css/content.css | 1 -
public/javascripts/tinymce/jscripts/tiny_mce/plugins/pagebreak/editor_plugin.js | 1 -
public/javascripts/tinymce/jscripts/tiny_mce/plugins/pagebreak/editor_plugin_src.js | 74 --------------------------------------------------------------------------
public/javascripts/tinymce/jscripts/tiny_mce/plugins/pagebreak/img/pagebreak.gif | Bin 325 -> 0 bytes
public/javascripts/tinymce/jscripts/tiny_mce/plugins/pagebreak/img/trans.gif | Bin 43 -> 0 bytes
public/javascripts/tinymce/jscripts/tiny_mce/plugins/paste/editor_plugin.js | 1 -
public/javascripts/tinymce/jscripts/tiny_mce/plugins/paste/editor_plugin_src.js | 933 ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
public/javascripts/tinymce/jscripts/tiny_mce/plugins/paste/js/pastetext.js | 36 ------------------------------------
public/javascripts/tinymce/jscripts/tiny_mce/plugins/paste/js/pasteword.js | 51 ---------------------------------------------------
public/javascripts/tinymce/jscripts/tiny_mce/plugins/paste/langs/de_dlg.js | 5 -----
public/javascripts/tinymce/jscripts/tiny_mce/plugins/paste/langs/en_dlg.js | 5 -----
public/javascripts/tinymce/jscripts/tiny_mce/plugins/paste/langs/eo_dlg.js | 1 -
public/javascripts/tinymce/jscripts/tiny_mce/plugins/paste/langs/es_dlg.js | 5 -----
public/javascripts/tinymce/jscripts/tiny_mce/plugins/paste/langs/fr_dlg.js | 5 -----
public/javascripts/tinymce/jscripts/tiny_mce/plugins/paste/langs/ja_dlg.js | 5 -----
public/javascripts/tinymce/jscripts/tiny_mce/plugins/paste/langs/nl_dlg.js | 5 -----
public/javascripts/tinymce/jscripts/tiny_mce/plugins/paste/langs/pt_dlg.js | 5 -----
public/javascripts/tinymce/jscripts/tiny_mce/plugins/paste/langs/ru_dlg.js | 5 -----
public/javascripts/tinymce/jscripts/tiny_mce/plugins/paste/pastetext.htm | 27 ---------------------------
public/javascripts/tinymce/jscripts/tiny_mce/plugins/paste/pasteword.htm | 21 ---------------------
public/javascripts/tinymce/jscripts/tiny_mce/plugins/preview/editor_plugin.js | 1 -
public/javascripts/tinymce/jscripts/tiny_mce/plugins/preview/editor_plugin_src.js | 53 -----------------------------------------------------
public/javascripts/tinymce/jscripts/tiny_mce/plugins/preview/example.html | 28 ----------------------------
public/javascripts/tinymce/jscripts/tiny_mce/plugins/preview/jscripts/embed.js | 73 -------------------------------------------------------------------------
public/javascripts/tinymce/jscripts/tiny_mce/plugins/preview/preview.html | 17 -----------------
public/javascripts/tinymce/jscripts/tiny_mce/plugins/print/editor_plugin.js | 1 -
public/javascripts/tinymce/jscripts/tiny_mce/plugins/print/editor_plugin_src.js | 34 ----------------------------------
public/javascripts/tinymce/jscripts/tiny_mce/plugins/safari/blank.htm | 1 -
public/javascripts/tinymce/jscripts/tiny_mce/plugins/safari/editor_plugin.js | 1 -
public/javascripts/tinymce/jscripts/tiny_mce/plugins/safari/editor_plugin_src.js | 438 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
public/javascripts/tinymce/jscripts/tiny_mce/plugins/save/editor_plugin.js | 1 -
public/javascripts/tinymce/jscripts/tiny_mce/plugins/save/editor_plugin_src.js | 101 -----------------------------------------------------------------------------------------------------
public/javascripts/tinymce/jscripts/tiny_mce/plugins/searchreplace/css/searchreplace.css | 6 ------
public/javascripts/tinymce/jscripts/tiny_mce/plugins/searchreplace/editor_plugin.js | 1 -
public/javascripts/tinymce/jscripts/tiny_mce/plugins/searchreplace/editor_plugin_src.js | 61 -------------------------------------------------------------
public/javascripts/tinymce/jscripts/tiny_mce/plugins/searchreplace/js/searchreplace.js | 142 ----------------------------------------------------------------------------------------------------------------------------------------------
public/javascripts/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/de_dlg.js | 16 ----------------
public/javascripts/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/en_dlg.js | 16 ----------------
public/javascripts/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/eo_dlg.js | 1 -
public/javascripts/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/es_dlg.js | 16 ----------------
public/javascripts/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/fr_dlg.js | 16 ----------------
public/javascripts/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/ja_dlg.js | 16 ----------------
public/javascripts/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/nl_dlg.js | 16 ----------------
public/javascripts/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/pt_dlg.js | 16 ----------------
public/javascripts/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/ru_dlg.js | 16 ----------------
public/javascripts/tinymce/jscripts/tiny_mce/plugins/searchreplace/searchreplace.htm | 100 ----------------------------------------------------------------------------------------------------
public/javascripts/tinymce/jscripts/tiny_mce/plugins/spellchecker/css/content.css | 1 -
public/javascripts/tinymce/jscripts/tiny_mce/plugins/spellchecker/editor_plugin.js | 1 -
public/javascripts/tinymce/jscripts/tiny_mce/plugins/spellchecker/editor_plugin_src.js | 435 ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
public/javascripts/tinymce/jscripts/tiny_mce/plugins/spellchecker/img/wline.gif | Bin 46 -> 0 bytes
public/javascripts/tinymce/jscripts/tiny_mce/plugins/style/css/props.css | 13 -------------
public/javascripts/tinymce/jscripts/tiny_mce/plugins/style/editor_plugin.js | 1 -
public/javascripts/tinymce/jscripts/tiny_mce/plugins/style/editor_plugin_src.js | 55 -------------------------------------------------------
public/javascripts/tinymce/jscripts/tiny_mce/plugins/style/js/props.js | 635 -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
public/javascripts/tinymce/jscripts/tiny_mce/plugins/style/langs/de_dlg.js | 63 ---------------------------------------------------------------
public/javascripts/tinymce/jscripts/tiny_mce/plugins/style/langs/en_dlg.js | 70 ----------------------------------------------------------------------
public/javascripts/tinymce/jscripts/tiny_mce/plugins/style/langs/eo_dlg.js | 1 -
public/javascripts/tinymce/jscripts/tiny_mce/plugins/style/langs/es_dlg.js | 63 ---------------------------------------------------------------
public/javascripts/tinymce/jscripts/tiny_mce/plugins/style/langs/fr_dlg.js | 63 ---------------------------------------------------------------
public/javascripts/tinymce/jscripts/tiny_mce/plugins/style/langs/ja_dlg.js | 63 ---------------------------------------------------------------
public/javascripts/tinymce/jscripts/tiny_mce/plugins/style/langs/nl_dlg.js | 63 ---------------------------------------------------------------
public/javascripts/tinymce/jscripts/tiny_mce/plugins/style/langs/pt_dlg.js | 63 ---------------------------------------------------------------
public/javascripts/tinymce/jscripts/tiny_mce/plugins/style/langs/ru_dlg.js | 63 ---------------------------------------------------------------
public/javascripts/tinymce/jscripts/tiny_mce/plugins/style/props.htm | 838 ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
public/javascripts/tinymce/jscripts/tiny_mce/plugins/tabfocus/editor_plugin.js | 1 -
public/javascripts/tinymce/jscripts/tiny_mce/plugins/tabfocus/editor_plugin_src.js | 114 ------------------------------------------------------------------------------------------------------------------
public/javascripts/tinymce/jscripts/tiny_mce/plugins/table/cell.htm | 178 ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
public/javascripts/tinymce/jscripts/tiny_mce/plugins/table/css/cell.css | 17 -----------------
public/javascripts/tinymce/jscripts/tiny_mce/plugins/table/css/row.css | 25 -------------------------
public/javascripts/tinymce/jscripts/tiny_mce/plugins/table/css/table.css | 13 -------------
public/javascripts/tinymce/jscripts/tiny_mce/plugins/table/editor_plugin.js | 1 -
public/javascripts/tinymce/jscripts/tiny_mce/plugins/table/editor_plugin_src.js | 1202 --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
public/javascripts/tinymce/jscripts/tiny_mce/plugins/table/js/cell.js | 284 --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
public/javascripts/tinymce/jscripts/tiny_mce/plugins/table/js/merge_cells.js | 27 ---------------------------
public/javascripts/tinymce/jscripts/tiny_mce/plugins/table/js/row.js | 232 ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
public/javascripts/tinymce/jscripts/tiny_mce/plugins/table/js/table.js | 450 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
public/javascripts/tinymce/jscripts/tiny_mce/plugins/table/langs/de_dlg.js | 74 --------------------------------------------------------------------------
public/javascripts/tinymce/jscripts/tiny_mce/plugins/table/langs/en_dlg.js | 74 --------------------------------------------------------------------------
public/javascripts/tinymce/jscripts/tiny_mce/plugins/table/langs/eo_dlg.js | 1 -
public/javascripts/tinymce/jscripts/tiny_mce/plugins/table/langs/es_dlg.js | 74 --------------------------------------------------------------------------
public/javascripts/tinymce/jscripts/tiny_mce/plugins/table/langs/fr_dlg.js | 74 --------------------------------------------------------------------------
public/javascripts/tinymce/jscripts/tiny_mce/plugins/table/langs/ja_dlg.js | 74 --------------------------------------------------------------------------
public/javascripts/tinymce/jscripts/tiny_mce/plugins/table/langs/nl_dlg.js | 74 --------------------------------------------------------------------------
public/javascripts/tinymce/jscripts/tiny_mce/plugins/table/langs/pt_dlg.js | 74 --------------------------------------------------------------------------
public/javascripts/tinymce/jscripts/tiny_mce/plugins/table/langs/ru_dlg.js | 74 --------------------------------------------------------------------------
public/javascripts/tinymce/jscripts/tiny_mce/plugins/table/merge_cells.htm | 32 --------------------------------
public/javascripts/tinymce/jscripts/tiny_mce/plugins/table/row.htm | 157 -------------------------------------------------------------------------------------------------------------------------------------------------------------
public/javascripts/tinymce/jscripts/tiny_mce/plugins/table/table.htm | 188 --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
public/javascripts/tinymce/jscripts/tiny_mce/plugins/template/blank.htm | 12 ------------
public/javascripts/tinymce/jscripts/tiny_mce/plugins/template/css/template.css | 23 -----------------------
public/javascripts/tinymce/jscripts/tiny_mce/plugins/template/editor_plugin.js | 1 -
public/javascripts/tinymce/jscripts/tiny_mce/plugins/template/editor_plugin_src.js | 159 ---------------------------------------------------------------------------------------------------------------------------------------------------------------
public/javascripts/tinymce/jscripts/tiny_mce/plugins/template/js/template.js | 106 ----------------------------------------------------------------------------------------------------------
public/javascripts/tinymce/jscripts/tiny_mce/plugins/template/langs/de_dlg.js | 15 ---------------
public/javascripts/tinymce/jscripts/tiny_mce/plugins/template/langs/en_dlg.js | 15 ---------------
public/javascripts/tinymce/jscripts/tiny_mce/plugins/template/langs/eo_dlg.js | 1 -
public/javascripts/tinymce/jscripts/tiny_mce/plugins/template/langs/es_dlg.js | 15 ---------------
public/javascripts/tinymce/jscripts/tiny_mce/plugins/template/langs/fr_dlg.js | 15 ---------------
public/javascripts/tinymce/jscripts/tiny_mce/plugins/template/langs/ja_dlg.js | 15 ---------------
public/javascripts/tinymce/jscripts/tiny_mce/plugins/template/langs/nl_dlg.js | 15 ---------------
public/javascripts/tinymce/jscripts/tiny_mce/plugins/template/langs/pt_dlg.js | 15 ---------------
public/javascripts/tinymce/jscripts/tiny_mce/plugins/template/langs/ru_dlg.js | 15 ---------------
public/javascripts/tinymce/jscripts/tiny_mce/plugins/template/template.htm | 31 -------------------------------
public/javascripts/tinymce/jscripts/tiny_mce/plugins/visualchars/editor_plugin.js | 1 -
public/javascripts/tinymce/jscripts/tiny_mce/plugins/visualchars/editor_plugin_src.js | 83 -----------------------------------------------------------------------------------
public/javascripts/tinymce/jscripts/tiny_mce/plugins/wordcount/editor_plugin.js | 1 -
public/javascripts/tinymce/jscripts/tiny_mce/plugins/wordcount/editor_plugin_src.js | 114 ------------------------------------------------------------------------------------------------------------------
public/javascripts/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/abbr.htm | 142 ----------------------------------------------------------------------------------------------------------------------------------------------
public/javascripts/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/acronym.htm | 142 ----------------------------------------------------------------------------------------------------------------------------------------------
public/javascripts/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/attributes.htm | 149 -----------------------------------------------------------------------------------------------------------------------------------------------------
public/javascripts/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/cite.htm | 142 ----------------------------------------------------------------------------------------------------------------------------------------------
public/javascripts/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/css/attributes.css | 11 -----------
public/javascripts/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/css/popup.css | 9 ---------
public/javascripts/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/del.htm | 162 ------------------------------------------------------------------------------------------------------------------------------------------------------------------
public/javascripts/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/editor_plugin.js | 1 -
public/javascripts/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/editor_plugin_src.js | 132 ------------------------------------------------------------------------------------------------------------------------------------
public/javascripts/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/ins.htm | 162 ------------------------------------------------------------------------------------------------------------------------------------------------------------------
public/javascripts/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/js/abbr.js | 28 ----------------------------
public/javascripts/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/js/acronym.js | 28 ----------------------------
public/javascripts/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/js/attributes.js | 111 ---------------------------------------------------------------------------------------------------------------
public/javascripts/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/js/cite.js | 28 ----------------------------
public/javascripts/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/js/del.js | 53 -----------------------------------------------------
public/javascripts/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/js/element_common.js | 229 -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
public/javascripts/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/js/ins.js | 53 -----------------------------------------------------
public/javascripts/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/de_dlg.js | 32 --------------------------------
public/javascripts/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/en_dlg.js | 32 --------------------------------
public/javascripts/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/eo_dlg.js | 1 -
public/javascripts/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/es_dlg.js | 32 --------------------------------
public/javascripts/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/fr_dlg.js | 32 --------------------------------
public/javascripts/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/ja_dlg.js | 32 --------------------------------
public/javascripts/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/nl_dlg.js | 32 --------------------------------
public/javascripts/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/pt_dlg.js | 32 --------------------------------
public/javascripts/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/ru_dlg.js | 32 --------------------------------
public/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/about.htm | 52 ----------------------------------------------------
public/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/anchor.htm | 26 --------------------------
public/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/charmap.htm | 51 ---------------------------------------------------
public/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/color_picker.htm | 74 --------------------------------------------------------------------------
public/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/editor_template.js | 1 -
public/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/editor_template_src.js | 1360 ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
public/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/image.htm | 80 --------------------------------------------------------------------------------
public/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/img/colorpicker.jpg | Bin 3189 -> 0 bytes
public/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/img/flash.gif | Bin 241 -> 0 bytes
public/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/img/icons.gif | Bin 11794 -> 0 bytes
public/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/img/iframe.gif | Bin 600 -> 0 bytes
public/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/img/pagebreak.gif | Bin 325 -> 0 bytes
public/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/img/quicktime.gif | Bin 303 -> 0 bytes
public/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/img/realmedia.gif | Bin 439 -> 0 bytes
public/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/img/shockwave.gif | Bin 387 -> 0 bytes
public/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/img/trans.gif | Bin 43 -> 0 bytes
public/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/img/video.gif | Bin 597 -> 0 bytes
public/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/img/windowsmedia.gif | Bin 415 -> 0 bytes
public/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/js/about.js | 73 -------------------------------------------------------------------------
public/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/js/anchor.js | 42 ------------------------------------------
public/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/js/charmap.js | 355 -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
public/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/js/color_picker.js | 329 -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
public/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/js/image.js | 247 -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
public/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/js/link.js | 153 ---------------------------------------------------------------------------------------------------------------------------------------------------------
public/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/js/source_editor.js | 56 --------------------------------------------------------
public/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/langs/de.js | 63 ---------------------------------------------------------------
public/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/langs/de_dlg.js | 51 ---------------------------------------------------
public/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/langs/en.js | 68 --------------------------------------------------------------------
public/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/langs/en_dlg.js | 54 ------------------------------------------------------
public/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/langs/eo.js | 1 -
public/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/langs/eo_dlg.js | 1 -
public/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/langs/es.js | 62 --------------------------------------------------------------
public/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/langs/es_dlg.js | 51 ---------------------------------------------------
public/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/langs/fr.js | 65 -----------------------------------------------------------------
public/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/langs/fr_dlg.js | 51 ---------------------------------------------------
public/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/langs/hy.js | 1 -
public/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/langs/it.js | 1 -
public/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/langs/it_dlg.js | 1 -
public/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/langs/ja.js | 62 --------------------------------------------------------------
public/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/langs/ja_dlg.js | 51 ---------------------------------------------------
public/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/langs/nl.js | 62 --------------------------------------------------------------
public/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/langs/nl_dlg.js | 51 ---------------------------------------------------
public/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/langs/pt.js | 62 --------------------------------------------------------------
public/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/langs/pt_dlg.js | 51 ---------------------------------------------------
public/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/langs/ru.js | 62 --------------------------------------------------------------
public/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/langs/ru_dlg.js | 51 ---------------------------------------------------
public/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/link.htm | 57 ---------------------------------------------------------
public/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/shortcuts.htm | 47 -----------------------------------------------
public/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/content.css | 47 -----------------------------------------------
public/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/dialog.css | 117 ---------------------------------------------------------------------------------------------------------------------
public/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/img/buttons.png | Bin 3274 -> 0 bytes
public/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/img/items.gif | Bin 70 -> 0 bytes
public/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/img/menu_arrow.gif | Bin 68 -> 0 bytes
public/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/img/menu_check.gif | Bin 70 -> 0 bytes
public/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/img/progress.gif | Bin 1787 -> 0 bytes
public/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/img/tabs.gif | Bin 1326 -> 0 bytes
public/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/ui.css | 213 ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
public/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/skins/highcontrast/content.css | 23 -----------------------
public/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/skins/highcontrast/dialog.css | 105 ---------------------------------------------------------------------------------------------------------
public/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/skins/highcontrast/ui.css | 101 -----------------------------------------------------------------------------------------------------
public/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/content.css | 46 ----------------------------------------------
public/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/dialog.css | 117 ---------------------------------------------------------------------------------------------------------------------
public/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/img/button_bg.png | Bin 5859 -> 0 bytes
public/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/img/button_bg_black.png | Bin 3736 -> 0 bytes
public/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/img/button_bg_silver.png | Bin 5358 -> 0 bytes
public/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/ui.css | 216 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
public/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/ui_black.css | 8 --------
public/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/ui_silver.css | 5 -----
public/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/source_editor.htm | 25 -------------------------
public/javascripts/tinymce/jscripts/tiny_mce/themes/simple/editor_template.js | 1 -
public/javascripts/tinymce/jscripts/tiny_mce/themes/simple/editor_template_src.js | 84 ------------------------------------------------------------------------------------
public/javascripts/tinymce/jscripts/tiny_mce/themes/simple/img/icons.gif | Bin 1440 -> 0 bytes
public/javascripts/tinymce/jscripts/tiny_mce/themes/simple/langs/de.js | 11 -----------
public/javascripts/tinymce/jscripts/tiny_mce/themes/simple/langs/en.js | 11 -----------
public/javascripts/tinymce/jscripts/tiny_mce/themes/simple/langs/eo.js | 1 -
public/javascripts/tinymce/jscripts/tiny_mce/themes/simple/langs/es.js | 11 -----------
public/javascripts/tinymce/jscripts/tiny_mce/themes/simple/langs/fr.js | 11 -----------
public/javascripts/tinymce/jscripts/tiny_mce/themes/simple/langs/hy.js | 1 -
public/javascripts/tinymce/jscripts/tiny_mce/themes/simple/langs/it.js | 1 -
public/javascripts/tinymce/jscripts/tiny_mce/themes/simple/langs/ja.js | 11 -----------
public/javascripts/tinymce/jscripts/tiny_mce/themes/simple/langs/nl.js | 11 -----------
public/javascripts/tinymce/jscripts/tiny_mce/themes/simple/langs/pt.js | 11 -----------
public/javascripts/tinymce/jscripts/tiny_mce/themes/simple/langs/ru.js | 11 -----------
public/javascripts/tinymce/jscripts/tiny_mce/themes/simple/skins/default/content.css | 25 -------------------------
public/javascripts/tinymce/jscripts/tiny_mce/themes/simple/skins/default/ui.css | 32 --------------------------------
public/javascripts/tinymce/jscripts/tiny_mce/themes/simple/skins/o2k7/content.css | 17 -----------------
public/javascripts/tinymce/jscripts/tiny_mce/themes/simple/skins/o2k7/img/button_bg.png | Bin 5102 -> 0 bytes
public/javascripts/tinymce/jscripts/tiny_mce/themes/simple/skins/o2k7/ui.css | 35 -----------------------------------
public/javascripts/tinymce/jscripts/tiny_mce/tiny_mce.js | 1 -
public/javascripts/tinymce/jscripts/tiny_mce/tiny_mce_popup.js | 5 -----
public/javascripts/tinymce/jscripts/tiny_mce/tiny_mce_src.js | 15812 --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
public/javascripts/tinymce/jscripts/tiny_mce/utils/editable_selects.js | 70 ----------------------------------------------------------------------
public/javascripts/tinymce/jscripts/tiny_mce/utils/form_utils.js | 210 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
public/javascripts/tinymce/jscripts/tiny_mce/utils/mctabs.js | 162 ------------------------------------------------------------------------------------------------------------------------------------------------------------------
public/javascripts/tinymce/jscripts/tiny_mce/utils/validate.js | 252 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
public/stylesheets/application.css | 6148 ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
public/stylesheets/calendar_date_select/blue.css | 130 ----------------------------------------------------------------------------------------------------------------------------------
public/stylesheets/calendar_date_select/default.css | 135 ---------------------------------------------------------------------------------------------------------------------------------------
public/stylesheets/calendar_date_select/plain.css | 128 --------------------------------------------------------------------------------------------------------------------------------
public/stylesheets/calendar_date_select/red.css | 135 ---------------------------------------------------------------------------------------------------------------------------------------
public/stylesheets/calendar_date_select/silver.css | 133 -------------------------------------------------------------------------------------------------------------------------------------
public/stylesheets/colorbox.css | 82 ----------------------------------------------------------------------------------
public/stylesheets/colorpicker.css | 131 -----------------------------------------------------------------------------------------------------------------------------------
public/stylesheets/fancybox.css | 359 -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
public/stylesheets/iepngfix/blank.gif | Bin 49 -> 0 bytes
public/stylesheets/iepngfix/iepngfix.css | 1 -
public/stylesheets/iepngfix/iepngfix.htc | 103 -------------------------------------------------------------------------------------------------------
public/stylesheets/jquery.ui/redmond/images/ui-anim_basic_16x16.gif | Bin 1553 -> 0 bytes
public/stylesheets/jquery.ui/redmond/images/ui-bg_flat_0_aaaaaa_40x100.png | Bin 180 -> 0 bytes
public/stylesheets/jquery.ui/redmond/images/ui-bg_flat_55_fbec88_40x100.png | Bin 182 -> 0 bytes
public/stylesheets/jquery.ui/redmond/images/ui-bg_glass_75_d0e5f5_1x400.png | Bin 124 -> 0 bytes
public/stylesheets/jquery.ui/redmond/images/ui-bg_glass_85_dfeffc_1x400.png | Bin 123 -> 0 bytes
public/stylesheets/jquery.ui/redmond/images/ui-bg_glass_95_fef1ec_1x400.png | Bin 119 -> 0 bytes
public/stylesheets/jquery.ui/redmond/images/ui-bg_gloss-wave_55_5c9ccc_500x100.png | Bin 3457 -> 0 bytes
public/stylesheets/jquery.ui/redmond/images/ui-bg_inset-hard_100_f5f8f9_1x100.png | Bin 104 -> 0 bytes
public/stylesheets/jquery.ui/redmond/images/ui-bg_inset-hard_100_fcfdfd_1x100.png | Bin 88 -> 0 bytes
public/stylesheets/jquery.ui/redmond/images/ui-icons_217bc0_256x240.png | Bin 4369 -> 0 bytes
public/stylesheets/jquery.ui/redmond/images/ui-icons_2e83ff_256x240.png | Bin 4369 -> 0 bytes
public/stylesheets/jquery.ui/redmond/images/ui-icons_469bdd_256x240.png | Bin 5355 -> 0 bytes
public/stylesheets/jquery.ui/redmond/images/ui-icons_6da8d5_256x240.png | Bin 4369 -> 0 bytes
public/stylesheets/jquery.ui/redmond/images/ui-icons_cd0a0a_256x240.png | Bin 4369 -> 0 bytes
public/stylesheets/jquery.ui/redmond/images/ui-icons_d8e7f3_256x240.png | Bin 4369 -> 0 bytes
public/stylesheets/jquery.ui/redmond/images/ui-icons_f9bd01_256x240.png | Bin 4369 -> 0 bytes
public/stylesheets/jquery.ui/redmond/jquery-ui-1.8.2.custom.css | 489 ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
public/stylesheets/jquery.ui/smoothness/images/ui-anim_basic_16x16.gif | Bin 1553 -> 0 bytes
public/stylesheets/jquery.ui/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png | Bin 180 -> 0 bytes
public/stylesheets/jquery.ui/smoothness/images/ui-bg_flat_75_ffffff_40x100.png | Bin 178 -> 0 bytes
public/stylesheets/jquery.ui/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png | Bin 120 -> 0 bytes
public/stylesheets/jquery.ui/smoothness/images/ui-bg_glass_65_ffffff_1x400.png | Bin 105 -> 0 bytes
public/stylesheets/jquery.ui/smoothness/images/ui-bg_glass_75_dadada_1x400.png | Bin 111 -> 0 bytes
public/stylesheets/jquery.ui/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png | Bin 110 -> 0 bytes
public/stylesheets/jquery.ui/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png | Bin 119 -> 0 bytes
public/stylesheets/jquery.ui/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png | Bin 101 -> 0 bytes
public/stylesheets/jquery.ui/smoothness/images/ui-icons_222222_256x240.png | Bin 4369 -> 0 bytes
public/stylesheets/jquery.ui/smoothness/images/ui-icons_2e83ff_256x240.png | Bin 4369 -> 0 bytes
public/stylesheets/jquery.ui/smoothness/images/ui-icons_454545_256x240.png | Bin 4369 -> 0 bytes
public/stylesheets/jquery.ui/smoothness/images/ui-icons_888888_256x240.png | Bin 4369 -> 0 bytes
public/stylesheets/jquery.ui/smoothness/images/ui-icons_cd0a0a_256x240.png | Bin 4369 -> 0 bytes
public/stylesheets/jquery.ui/smoothness/jquery-ui-1.8.2.custom.css | 489 ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
public/stylesheets/jquery.ui/smoothness_mod/images/ui-anim_basic_16x16.gif | Bin 1553 -> 0 bytes
public/stylesheets/jquery.ui/smoothness_mod/images/ui-bg_flat_0_aaaaaa_40x100.png | Bin 180 -> 0 bytes
public/stylesheets/jquery.ui/smoothness_mod/images/ui-bg_flat_75_ffffff_40x100.png | Bin 178 -> 0 bytes
public/stylesheets/jquery.ui/smoothness_mod/images/ui-bg_glass_55_fbf9ee_1x400.png | Bin 120 -> 0 bytes
public/stylesheets/jquery.ui/smoothness_mod/images/ui-bg_glass_65_ffffff_1x400.png | Bin 105 -> 0 bytes
public/stylesheets/jquery.ui/smoothness_mod/images/ui-bg_glass_75_dadada_1x400.png | Bin 111 -> 0 bytes
public/stylesheets/jquery.ui/smoothness_mod/images/ui-bg_glass_75_e6e6e6_1x400.png | Bin 110 -> 0 bytes
public/stylesheets/jquery.ui/smoothness_mod/images/ui-bg_glass_95_fef1ec_1x400.png | Bin 119 -> 0 bytes
public/stylesheets/jquery.ui/smoothness_mod/images/ui-bg_highlight-soft_75_cccccc_1x100.png | Bin 101 -> 0 bytes
public/stylesheets/jquery.ui/smoothness_mod/images/ui-icons_222222_256x240.png | Bin 4369 -> 0 bytes
public/stylesheets/jquery.ui/smoothness_mod/images/ui-icons_2e83ff_256x240.png | Bin 4369 -> 0 bytes
public/stylesheets/jquery.ui/smoothness_mod/images/ui-icons_454545_256x240.png | Bin 4369 -> 0 bytes
public/stylesheets/jquery.ui/smoothness_mod/images/ui-icons_888888_256x240.png | Bin 4369 -> 0 bytes
public/stylesheets/jquery.ui/smoothness_mod/images/ui-icons_cd0a0a_256x240.png | Bin 4369 -> 0 bytes
public/stylesheets/jquery.ui/smoothness_mod/jquery-ui-1.8.2.custom.css | 489 ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
public/stylesheets/jquery.ui/south-street/images/ui-anim_basic_16x16.gif | Bin 1553 -> 0 bytes
public/stylesheets/jquery.ui/south-street/images/ui-bg_glass_55_fcf0ba_1x400.png | Bin 127 -> 0 bytes
public/stylesheets/jquery.ui/south-street/images/ui-bg_gloss-wave_100_ece8da_500x100.png | Bin 2130 -> 0 bytes
public/stylesheets/jquery.ui/south-street/images/ui-bg_highlight-hard_100_f5f3e5_1x100.png | Bin 110 -> 0 bytes
public/stylesheets/jquery.ui/south-street/images/ui-bg_highlight-hard_100_fafaf4_1x100.png | Bin 96 -> 0 bytes
public/stylesheets/jquery.ui/south-street/images/ui-bg_highlight-hard_15_459e00_1x100.png | Bin 153 -> 0 bytes
public/stylesheets/jquery.ui/south-street/images/ui-bg_highlight-hard_95_cccccc_1x100.png | Bin 105 -> 0 bytes
public/stylesheets/jquery.ui/south-street/images/ui-bg_highlight-soft_25_67b021_1x100.png | Bin 124 -> 0 bytes
public/stylesheets/jquery.ui/south-street/images/ui-bg_highlight-soft_95_ffedad_1x100.png | Bin 165 -> 0 bytes
public/stylesheets/jquery.ui/south-street/images/ui-bg_inset-soft_15_2b2922_1x100.png | Bin 119 -> 0 bytes
public/stylesheets/jquery.ui/south-street/images/ui-icons_808080_256x240.png | Bin 4369 -> 0 bytes
public/stylesheets/jquery.ui/south-street/images/ui-icons_847e71_256x240.png | Bin 4369 -> 0 bytes
public/stylesheets/jquery.ui/south-street/images/ui-icons_8dc262_256x240.png | Bin 5355 -> 0 bytes
public/stylesheets/jquery.ui/south-street/images/ui-icons_cd0a0a_256x240.png | Bin 4369 -> 0 bytes
public/stylesheets/jquery.ui/south-street/images/ui-icons_eeeeee_256x240.png | Bin 4369 -> 0 bytes
public/stylesheets/jquery.ui/south-street/images/ui-icons_ffffff_256x240.png | Bin 4369 -> 0 bytes
public/stylesheets/jquery.ui/south-street/jquery-ui-1.8.2.custom.css | 489 ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
public/stylesheets/jquery.ui/sunny-mod/images/ui-anim_basic_16x16.gif | Bin 1553 -> 0 bytes
public/stylesheets/jquery.ui/sunny-mod/images/ui-bg_diagonals-medium_20_d34d17_40x40.png | Bin 247 -> 0 bytes
public/stylesheets/jquery.ui/sunny-mod/images/ui-bg_flat_30_cccccc_40x100.png | Bin 180 -> 0 bytes
public/stylesheets/jquery.ui/sunny-mod/images/ui-bg_flat_50_5c5c5c_40x100.png | Bin 180 -> 0 bytes
public/stylesheets/jquery.ui/sunny-mod/images/ui-bg_gloss-wave_30_888a85_500x100.png | Bin 4699 -> 0 bytes
public/stylesheets/jquery.ui/sunny-mod/images/ui-bg_gloss-wave_45_918e88_500x100.png | Bin 4273 -> 0 bytes
public/stylesheets/jquery.ui/sunny-mod/images/ui-bg_gloss-wave_60_fece2f_500x100.png | Bin 3512 -> 0 bytes
public/stylesheets/jquery.ui/sunny-mod/images/ui-bg_gloss-wave_70_ffdd57_500x100.png | Bin 3830 -> 0 bytes
public/stylesheets/jquery.ui/sunny-mod/images/ui-bg_gloss-wave_90_fff9e5_500x100.png | Bin 2257 -> 0 bytes
public/stylesheets/jquery.ui/sunny-mod/images/ui-bg_highlight-soft_0_feeebd_1x100.png | Bin 79 -> 0 bytes
public/stylesheets/jquery.ui/sunny-mod/images/ui-bg_highlight-soft_70_feeebd_1x100.png | Bin 117 -> 0 bytes
public/stylesheets/jquery.ui/sunny-mod/images/ui-bg_inset-soft_30_feeebd_1x100.png | Bin 122 -> 0 bytes
public/stylesheets/jquery.ui/sunny-mod/images/ui-bg_inset-soft_70_feeebd_1x100.png | Bin 119 -> 0 bytes
public/stylesheets/jquery.ui/sunny-mod/images/ui-icons_3d3d3d_256x240.png | Bin 5355 -> 0 bytes
public/stylesheets/jquery.ui/sunny-mod/images/ui-icons_bd7b00_256x240.png | Bin 4369 -> 0 bytes
public/stylesheets/jquery.ui/sunny-mod/images/ui-icons_d19405_256x240.png | Bin 4369 -> 0 bytes
public/stylesheets/jquery.ui/sunny-mod/images/ui-icons_eb990f_256x240.png | Bin 4369 -> 0 bytes
public/stylesheets/jquery.ui/sunny-mod/images/ui-icons_ed9f26_256x240.png | Bin 4369 -> 0 bytes
public/stylesheets/jquery.ui/sunny-mod/images/ui-icons_fadc7a_256x240.png | Bin 4369 -> 0 bytes
public/stylesheets/jquery.ui/sunny-mod/images/ui-icons_ffe180_256x240.png | Bin 4369 -> 0 bytes
public/stylesheets/jquery.ui/sunny-mod/jquery-ui-1.8.2.custom.css | 489 ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
public/stylesheets/jquery.ui/sunny/images/ui-anim_basic_16x16.gif | Bin 1553 -> 0 bytes
public/stylesheets/jquery.ui/sunny/images/ui-bg_diagonals-medium_20_d34d17_40x40.png | Bin 199 -> 0 bytes
public/stylesheets/jquery.ui/sunny/images/ui-bg_flat_30_cccccc_40x100.png | Bin 180 -> 0 bytes
public/stylesheets/jquery.ui/sunny/images/ui-bg_flat_50_5c5c5c_40x100.png | Bin 180 -> 0 bytes
public/stylesheets/jquery.ui/sunny/images/ui-bg_gloss-wave_45_817865_500x100.png | Bin 3971 -> 0 bytes
public/stylesheets/jquery.ui/sunny/images/ui-bg_gloss-wave_60_fece2f_500x100.png | Bin 3512 -> 0 bytes
public/stylesheets/jquery.ui/sunny/images/ui-bg_gloss-wave_70_ffdd57_500x100.png | Bin 3122 -> 0 bytes
public/stylesheets/jquery.ui/sunny/images/ui-bg_gloss-wave_90_fff9e5_500x100.png | Bin 2257 -> 0 bytes
public/stylesheets/jquery.ui/sunny/images/ui-bg_highlight-soft_100_feeebd_1x100.png | Bin 108 -> 0 bytes
public/stylesheets/jquery.ui/sunny/images/ui-bg_inset-soft_30_ffffff_1x100.png | Bin 100 -> 0 bytes
public/stylesheets/jquery.ui/sunny/images/ui-icons_3d3d3d_256x240.png | Bin 4369 -> 0 bytes
public/stylesheets/jquery.ui/sunny/images/ui-icons_bd7b00_256x240.png | Bin 5355 -> 0 bytes
public/stylesheets/jquery.ui/sunny/images/ui-icons_d19405_256x240.png | Bin 4369 -> 0 bytes
public/stylesheets/jquery.ui/sunny/images/ui-icons_eb990f_256x240.png | Bin 4369 -> 0 bytes
public/stylesheets/jquery.ui/sunny/images/ui-icons_ed9f26_256x240.png | Bin 4369 -> 0 bytes
public/stylesheets/jquery.ui/sunny/images/ui-icons_fadc7a_256x240.png | Bin 4369 -> 0 bytes
public/stylesheets/jquery.ui/sunny/images/ui-icons_ffe180_256x240.png | Bin 5355 -> 0 bytes
public/stylesheets/jquery.ui/sunny/jquery-ui-1.8.2.custom.css | 489 ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
public/stylesheets/lightbox.css | 63 ---------------------------------------------------------------
public/stylesheets/search.css | 937 -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
public/stylesheets/slideshow.css | 55 -------------------------------------------------------
public/stylesheets/tasks.css | 46 ----------------------------------------------
public/stylesheets/thickbox.css | 163 -------------------------------------------------------------------------------------------------------------------------------------------------------------------
public/stylesheets/tinymce.css | 27 ---------------------------
public/stylesheets/token-input-facebook.css | 126 ------------------------------------------------------------------------------------------------------------------------------
public/stylesheets/token-input-facet.css | 119 -----------------------------------------------------------------------------------------------------------------------
public/stylesheets/token-input-mac.css | 208 ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
public/stylesheets/token-input.css | 116 --------------------------------------------------------------------------------------------------------------------
2999 files changed, 153174 insertions(+), 153161 deletions(-)
create mode 100644 app/assets/images/balloon-footer.png
create mode 100644 app/assets/images/balloon-header.png
create mode 100644 app/assets/images/balloon-middle.png
create mode 100644 app/assets/images/beta.gif
create mode 100644 app/assets/images/black-alpha-pixel-5.png
create mode 100644 app/assets/images/black-alpha-pixel.png
create mode 100644 app/assets/images/blocks/1.png
create mode 100644 app/assets/images/blocks/1.svg
create mode 100644 app/assets/images/blocks/2.png
create mode 100644 app/assets/images/blocks/2.svg
create mode 100644 app/assets/images/blocks/3.png
create mode 100644 app/assets/images/blocks/3.svg
create mode 100644 app/assets/images/bolota.gif
create mode 100644 app/assets/images/borda-esq-aba-azul.gif
create mode 100644 app/assets/images/bt-bookmark.gif
create mode 100644 app/assets/images/calendar_date_select/calendar.gif
create mode 100644 app/assets/images/calendar_date_select/calendar.png
create mode 100644 app/assets/images/catalog-expanders.png
create mode 100644 app/assets/images/ccc.gif
create mode 100644 app/assets/images/colorbox/border.png
create mode 100644 app/assets/images/colorbox/controls.png
create mode 100644 app/assets/images/colorbox/ie6/borderBottomCenter.png
create mode 100644 app/assets/images/colorbox/ie6/borderBottomLeft.png
create mode 100644 app/assets/images/colorbox/ie6/borderBottomRight.png
create mode 100644 app/assets/images/colorbox/ie6/borderMiddleLeft.png
create mode 100644 app/assets/images/colorbox/ie6/borderMiddleRight.png
create mode 100644 app/assets/images/colorbox/ie6/borderTopCenter.png
create mode 100644 app/assets/images/colorbox/ie6/borderTopLeft.png
create mode 100644 app/assets/images/colorbox/ie6/borderTopRight.png
create mode 100644 app/assets/images/colorbox/loading.gif
create mode 100644 app/assets/images/colorbox/loading_background.png
create mode 100644 app/assets/images/colorbox/overlay.png
create mode 100644 app/assets/images/colorpicker/apply.png
create mode 100644 app/assets/images/colorpicker/gradiente.png
create mode 100644 app/assets/images/colorpicker/indic.gif
create mode 100644 app/assets/images/colorpicker/overlay.png
create mode 100644 app/assets/images/colorpicker/select.gif
create mode 100644 app/assets/images/comment-owner-bg-L.png
create mode 100644 app/assets/images/comment-owner-bg-N.png
create mode 100644 app/assets/images/comment-owner-bg-NL.png
create mode 100644 app/assets/images/comment-owner-bg-NO.png
create mode 100644 app/assets/images/comment-owner-bg-O.png
create mode 100644 app/assets/images/comment-owner-bg-S.png
create mode 100644 app/assets/images/comment-owner-bg-SL.png
create mode 100644 app/assets/images/comment-owner-bg-SO.png
create mode 100644 app/assets/images/comment-reply-owner-bg.png
create mode 100644 app/assets/images/control-panel/Makefile
create mode 100644 app/assets/images/control-panel/application-certificate.gif
create mode 100644 app/assets/images/control-panel/application-certificate.png
create mode 100644 app/assets/images/control-panel/application-certificate.svg
create mode 100644 app/assets/images/control-panel/blocks.gif
create mode 100644 app/assets/images/control-panel/blocks.png
create mode 100644 app/assets/images/control-panel/blocks.svg
create mode 100644 app/assets/images/control-panel/contact.gif
create mode 100644 app/assets/images/control-panel/contact.png
create mode 100644 app/assets/images/control-panel/contact.svg
create mode 100644 app/assets/images/control-panel/edit-profile-enterprise.gif
create mode 100644 app/assets/images/control-panel/edit-profile-enterprise.png
create mode 100644 app/assets/images/control-panel/edit-profile-enterprise.svg
create mode 100644 app/assets/images/control-panel/edit-profile-group.gif
create mode 100644 app/assets/images/control-panel/edit-profile-group.png
create mode 100644 app/assets/images/control-panel/edit-profile-group.svg
create mode 100644 app/assets/images/control-panel/edit-profile.gif
create mode 100644 app/assets/images/control-panel/edit-profile.png
create mode 100644 app/assets/images/control-panel/edit-profile.svg
create mode 100644 app/assets/images/control-panel/editpaste.gif
create mode 100644 app/assets/images/control-panel/editpaste.png
create mode 120000 app/assets/images/control-panel/editpaste.svg
create mode 100644 app/assets/images/control-panel/email.gif
create mode 100644 app/assets/images/control-panel/email.png
create mode 120000 app/assets/images/control-panel/email.svg
create mode 100644 app/assets/images/control-panel/emblem-favorite.gif
create mode 100644 app/assets/images/control-panel/emblem-favorite.png
create mode 120000 app/assets/images/control-panel/emblem-favorite.svg
create mode 100644 app/assets/images/control-panel/header-footer.gif
create mode 100644 app/assets/images/control-panel/header-footer.png
create mode 100644 app/assets/images/control-panel/header-footer.svg
create mode 100644 app/assets/images/control-panel/important.gif
create mode 100644 app/assets/images/control-panel/important.png
create mode 120000 app/assets/images/control-panel/important.svg
create mode 100644 app/assets/images/control-panel/mail-mark-junk.png
create mode 100644 app/assets/images/control-panel/mail-mark-junk.svg
create mode 100644 app/assets/images/control-panel/package.gif
create mode 100644 app/assets/images/control-panel/package.png
create mode 100644 app/assets/images/control-panel/package.svg
create mode 100644 app/assets/images/control-panel/password.gif
create mode 100644 app/assets/images/control-panel/password.png
create mode 120000 app/assets/images/control-panel/password.svg
create mode 100644 app/assets/images/control-panel/preferences-desktop-wallpaper.gif
create mode 100644 app/assets/images/control-panel/preferences-desktop-wallpaper.png
create mode 120000 app/assets/images/control-panel/preferences-desktop-wallpaper.svg
create mode 100644 app/assets/images/control-panel/set-geolocation.gif
create mode 100644 app/assets/images/control-panel/set-geolocation.png
create mode 100644 app/assets/images/control-panel/stop.gif
create mode 100644 app/assets/images/control-panel/stop.png
create mode 100644 app/assets/images/control-panel/stop.svg
create mode 100644 app/assets/images/control-panel/system-file-manager.gif
create mode 100644 app/assets/images/control-panel/system-file-manager.png
create mode 120000 app/assets/images/control-panel/system-file-manager.svg
create mode 100644 app/assets/images/control-panel/system-users.gif
create mode 100644 app/assets/images/control-panel/system-users.png
create mode 120000 app/assets/images/control-panel/system-users.svg
create mode 100644 app/assets/images/control-panel/text-editor-disabled.gif
create mode 120000 app/assets/images/control-panel/text-editor-disabled.png
create mode 120000 app/assets/images/control-panel/text-editor-disabled.svg
create mode 100644 app/assets/images/control-panel/text-editor.gif
create mode 100644 app/assets/images/control-panel/text-editor.png
create mode 120000 app/assets/images/control-panel/text-editor.svg
create mode 100644 app/assets/images/doc/activation-conlusion.en.png
create mode 100644 app/assets/images/doc/activation-conlusion.pt.png
create mode 100644 app/assets/images/doc/activation-question.en.png
create mode 100644 app/assets/images/doc/activation-question.pt.png
create mode 100644 app/assets/images/doc/add-member-enterprise.en.png
create mode 100644 app/assets/images/doc/add-member-enterprise.pt.png
create mode 100644 app/assets/images/doc/admin-panel-export-users.en.png
create mode 100644 app/assets/images/doc/admin-panel-export-users.pt.png
create mode 100644 app/assets/images/doc/admin-panel-manage-users.en.png
create mode 100644 app/assets/images/doc/admin-panel-manage-users.pt.png
create mode 100644 app/assets/images/doc/admin-panel-send-email.en.png
create mode 100644 app/assets/images/doc/admin-panel-send-email.pt.png
create mode 100644 app/assets/images/doc/admin-send-email.en.png
create mode 100644 app/assets/images/doc/admin-send-email.pt.png
create mode 100644 app/assets/images/doc/advanced-article-archives-list.en.png
create mode 100644 app/assets/images/doc/advanced-article-archives-list.pt.png
create mode 100644 app/assets/images/doc/advanced-article-created-link.en.png
create mode 100644 app/assets/images/doc/advanced-article-created-link.pt.png
create mode 100644 app/assets/images/doc/advanced-article-created-object.en.png
create mode 100644 app/assets/images/doc/advanced-article-created-object.pt.png
create mode 100644 app/assets/images/doc/advanced-article-insert-html.en.png
create mode 100644 app/assets/images/doc/advanced-article-insert-html.pt.png
create mode 100644 app/assets/images/doc/advanced-article-insert-links.en.png
create mode 100644 app/assets/images/doc/advanced-article-insert-links.pt.png
create mode 100644 app/assets/images/doc/advanced-article-popup-insert-html.en.png
create mode 100644 app/assets/images/doc/advanced-article-popup-insert-html.pt.png
create mode 100644 app/assets/images/doc/advanced-article-popup-insert-link.en.png
create mode 100644 app/assets/images/doc/advanced-article-popup-insert-link.pt.png
create mode 100644 app/assets/images/doc/advanced-article-upload-images.en.png
create mode 100644 app/assets/images/doc/advanced-article-upload-images.pt.png
create mode 100644 app/assets/images/doc/article-bigger-spread-view.en.png
create mode 100644 app/assets/images/doc/article-bigger-spread-view.pt.png
create mode 100644 app/assets/images/doc/article-block.en.png
create mode 100644 app/assets/images/doc/article-block.pt.png
create mode 100644 app/assets/images/doc/article-creation-categorization.en.png
create mode 100644 app/assets/images/doc/article-creation-categorization.pt.png
create mode 100644 app/assets/images/doc/article-creation-category-choosen.en.png
create mode 100644 app/assets/images/doc/article-creation-category-choosen.pt.png
create mode 100644 app/assets/images/doc/article-creation-options.en.png
create mode 100644 app/assets/images/doc/article-creation-options.pt.png
create mode 100644 app/assets/images/doc/article-creation-tags.en.png
create mode 100644 app/assets/images/doc/article-creation-tags.pt.png
create mode 100644 app/assets/images/doc/article-spread-view.en.png
create mode 100644 app/assets/images/doc/article-spread-view.pt.png
create mode 100644 app/assets/images/doc/article-spread.en.png
create mode 100644 app/assets/images/doc/article-spread.pt.png
create mode 100644 app/assets/images/doc/article-text-lead.en.png
create mode 100644 app/assets/images/doc/article-text-lead.pt.png
create mode 100644 app/assets/images/doc/article-text.en.png
create mode 100644 app/assets/images/doc/article-text.pt.png
create mode 100644 app/assets/images/doc/block-actions.en.png
create mode 100644 app/assets/images/doc/blog-buttons.en.png
create mode 100644 app/assets/images/doc/blog-buttons.pt.png
create mode 100644 app/assets/images/doc/box-register.en.png
create mode 100644 app/assets/images/doc/box-register.pt.png
create mode 100644 app/assets/images/doc/change-password.en.png
create mode 100644 app/assets/images/doc/change-password.pt.png
create mode 100644 app/assets/images/doc/changing-role-enterprise-member.en.png
create mode 100644 app/assets/images/doc/changing-role-enterprise-member.pt.png
create mode 100644 app/assets/images/doc/closed-comment-box.en.png
create mode 100644 app/assets/images/doc/closed-comment-box.pt.png
create mode 100644 app/assets/images/doc/cms-article-icons.en.png
create mode 100644 app/assets/images/doc/cms-article-icons.pt.png
create mode 100644 app/assets/images/doc/cms-article-types.en.png
create mode 100644 app/assets/images/doc/cms-article-types.pt.png
create mode 100644 app/assets/images/doc/cms-blog-creation.en.png
create mode 100644 app/assets/images/doc/cms-blog-creation.pt.png
create mode 100644 app/assets/images/doc/cms-blog-public-visualization.en.png
create mode 100644 app/assets/images/doc/cms-blog-public-visualization.pt.png
create mode 100644 app/assets/images/doc/cms-folder-icons.en.png
create mode 100644 app/assets/images/doc/cms-folder-icons.pt.png
create mode 100644 app/assets/images/doc/cms-gallery-public-visualization.en.png
create mode 100644 app/assets/images/doc/cms-gallery-public-visualization.pt.png
create mode 100644 app/assets/images/doc/cms-new-article.en.png
create mode 100644 app/assets/images/doc/cms-new-article.pt.png
create mode 100644 app/assets/images/doc/cms-spread-article-icon.en.png
create mode 100644 app/assets/images/doc/cms-spread-article-icon.pt.png
create mode 100644 app/assets/images/doc/cms-uploading-files.en.png
create mode 100644 app/assets/images/doc/cms-uploading-files.pt.png
create mode 100644 app/assets/images/doc/cms.en.png
create mode 100644 app/assets/images/doc/cms.pt.png
create mode 100644 app/assets/images/doc/comments-of-logged-in-out-person.en.png
create mode 100644 app/assets/images/doc/comments-of-logged-in-out-person.pt.png
create mode 100644 app/assets/images/doc/comments.en.png
create mode 100644 app/assets/images/doc/comments.pt.png
create mode 100644 app/assets/images/doc/communities-block.en.png
create mode 100644 app/assets/images/doc/communities-block.pt.png
create mode 100644 app/assets/images/doc/communities-search-field.en.png
create mode 100644 app/assets/images/doc/communities-search-field.pt.png
create mode 100644 app/assets/images/doc/communities-search-results-with-example.en.png
create mode 100644 app/assets/images/doc/communities-search-results-with-example.pt.png
create mode 100644 app/assets/images/doc/community-balloon-closed-en.png
create mode 100644 app/assets/images/doc/community-balloon-closed.en.png
create mode 100644 app/assets/images/doc/community-balloon-en.png
create mode 100644 app/assets/images/doc/community-balloon-pt.png
create mode 100644 app/assets/images/doc/community-balloon.en.png
create mode 100644 app/assets/images/doc/community-balloon.pt.png
create mode 100644 app/assets/images/doc/community-control-panel-manage-members.en.png
create mode 100644 app/assets/images/doc/community-control-panel-manage-members.pt.png
create mode 100644 app/assets/images/doc/community-control-panel-with-approval-task.en.png
create mode 100644 app/assets/images/doc/community-control-panel-with-approval-task.pt.png
create mode 100644 app/assets/images/doc/community-control-panel-with-tasks.en.png
create mode 100644 app/assets/images/doc/community-control-panel-with-tasks.pt.png
create mode 100644 app/assets/images/doc/community-creation-form.en.png
create mode 100644 app/assets/images/doc/community-creation-form.pt.png
create mode 100644 app/assets/images/doc/community-creation.en.png
create mode 100644 app/assets/images/doc/community-creation.pt.png
create mode 100644 app/assets/images/doc/community-edit-sideboxes.en.png
create mode 100644 app/assets/images/doc/community-edit-sideboxes.pt.png
create mode 100644 app/assets/images/doc/community-image-block.en.png
create mode 100644 app/assets/images/doc/community-image-block.pt.png
create mode 100644 app/assets/images/doc/community-import-invitation-step-1.en.png
create mode 100644 app/assets/images/doc/community-import-invitation-step-1.pt.png
create mode 100644 app/assets/images/doc/community-import-invitation-step-2.en.png
create mode 100644 app/assets/images/doc/community-import-invitation-step-2.pt.png
create mode 100644 app/assets/images/doc/community-info-block.en.png
create mode 100644 app/assets/images/doc/community-info-block.pt.png
create mode 100644 app/assets/images/doc/community-manually-invitation-step-1.en.png
create mode 100644 app/assets/images/doc/community-manually-invitation-step-1.pt.png
create mode 100644 app/assets/images/doc/community-manually-invitation-step-2.en.png
create mode 100644 app/assets/images/doc/community-manually-invitation-step-2.pt.png
create mode 100644 app/assets/images/doc/community-members-with-invitation-button.en.png
create mode 100644 app/assets/images/doc/community-members-with-invitation-button.pt.png
create mode 100644 app/assets/images/doc/community-members-with-send-mail-button.en.png
create mode 100644 app/assets/images/doc/community-members-with-send-mail-button.pt.png
create mode 100644 app/assets/images/doc/community-network-block.en.png
create mode 100644 app/assets/images/doc/community-network-block.pt.png
create mode 100644 app/assets/images/doc/community-send-email.en.png
create mode 100644 app/assets/images/doc/community-send-email.pt.png
create mode 100644 app/assets/images/doc/community-sideboxes-add-block.en.png
create mode 100644 app/assets/images/doc/community-sideboxes-add-block.pt.png
create mode 100644 app/assets/images/doc/confirmation-adding-friend.en.png
create mode 100644 app/assets/images/doc/confirmation-adding-friend.pt.png
create mode 100644 app/assets/images/doc/contact-button.en.png
create mode 100644 app/assets/images/doc/contact-button.pt.png
create mode 100644 app/assets/images/doc/control-panel-change-password.en.png
create mode 100644 app/assets/images/doc/control-panel-change-password.pt.png
create mode 100644 app/assets/images/doc/control-panel-community-edit-appearance.en.png
create mode 100644 app/assets/images/doc/control-panel-community-edit-appearance.pt.png
create mode 100644 app/assets/images/doc/control-panel-community-edit-header-footer.en.png
create mode 100644 app/assets/images/doc/control-panel-community-edit-header-footer.pt.png
create mode 100644 app/assets/images/doc/control-panel-community-edit-sideboxes.en.png
create mode 100644 app/assets/images/doc/control-panel-community-edit-sideboxes.pt.png
create mode 100644 app/assets/images/doc/control-panel-content-management.en.png
create mode 100644 app/assets/images/doc/control-panel-content-management.pt.png
create mode 100644 app/assets/images/doc/control-panel-create-blog.en.png
create mode 100644 app/assets/images/doc/control-panel-create-blog.pt.png
create mode 100644 app/assets/images/doc/control-panel-disable-enterprise.en.png
create mode 100644 app/assets/images/doc/control-panel-disable-enterprise.pt.png
create mode 100644 app/assets/images/doc/control-panel-enterprise-edit-appearance.en.png
create mode 100644 app/assets/images/doc/control-panel-enterprise-edit-appearance.pt.png
create mode 100644 app/assets/images/doc/control-panel-enterprise-edit-header-footer.en.png
create mode 100644 app/assets/images/doc/control-panel-enterprise-edit-header-footer.pt.png
create mode 100644 app/assets/images/doc/control-panel-enterprise-edit-profile-info.en.png
create mode 100644 app/assets/images/doc/control-panel-enterprise-edit-profile-info.pt.png
create mode 100644 app/assets/images/doc/control-panel-enterprise-edit-sideboxes.en.png
create mode 100644 app/assets/images/doc/control-panel-enterprise-edit-sideboxes.pt.png
create mode 100644 app/assets/images/doc/control-panel-manage-groups.en.png
create mode 100644 app/assets/images/doc/control-panel-manage-groups.pt.png
create mode 100644 app/assets/images/doc/control-panel-manage-members.en.png
create mode 100644 app/assets/images/doc/control-panel-manage-members.pt.png
create mode 100644 app/assets/images/doc/control-panel-manage-products.en.png
create mode 100644 app/assets/images/doc/control-panel-manage-products.pt.png
create mode 100644 app/assets/images/doc/control-panel-menu.en.png
create mode 100644 app/assets/images/doc/control-panel-menu.pt.png
create mode 100644 app/assets/images/doc/control-panel-person-delete-profile.en.png
create mode 100644 app/assets/images/doc/control-panel-person-delete-profile.pt.png
create mode 100644 app/assets/images/doc/control-panel-person-edit-profile-info.en.png
create mode 100644 app/assets/images/doc/control-panel-person-edit-profile-info.pt.png
create mode 100644 app/assets/images/doc/control-panel-user-edit-appearance.en.png
create mode 100644 app/assets/images/doc/control-panel-user-edit-appearance.pt.png
create mode 100644 app/assets/images/doc/control-panel-user-edit-header-footer.en.png
create mode 100644 app/assets/images/doc/control-panel-user-edit-header-footer.pt.png
create mode 100644 app/assets/images/doc/control-panel-user-edit-sideboxes.en.png
create mode 100644 app/assets/images/doc/control-panel-user-edit-sideboxes.pt.png
create mode 100644 app/assets/images/doc/control-panel-with-tasks.en.png
create mode 100644 app/assets/images/doc/control-panel-with-tasks.pt.png
create mode 100644 app/assets/images/doc/disable-enterprise-confirmation.en.png
create mode 100644 app/assets/images/doc/disable-enterprise-confirmation.pt.png
create mode 100644 app/assets/images/doc/disabled-enterprise-block.en.png
create mode 100644 app/assets/images/doc/disabled-enterprise-block.pt.png
create mode 100644 app/assets/images/doc/edit-appearance.en.png
create mode 100644 app/assets/images/doc/edit-appearance.pt.png
create mode 100644 app/assets/images/doc/edit-block.en.png
create mode 100644 app/assets/images/doc/edit-block.pt.png
create mode 100644 app/assets/images/doc/edit-header-footer.en.png
create mode 100644 app/assets/images/doc/edit-header-footer.pt.png
create mode 100644 app/assets/images/doc/enterprise-activation-box.en.png
create mode 100644 app/assets/images/doc/enterprise-activation-box.pt.png
create mode 100644 app/assets/images/doc/enterprise-activation-terms.en.png
create mode 100644 app/assets/images/doc/enterprise-activation-terms.pt.png
create mode 100644 app/assets/images/doc/enterprise-edit-profile-categories.en.png
create mode 100644 app/assets/images/doc/enterprise-edit-profile-categories.pt.png
create mode 100644 app/assets/images/doc/enterprise-edit-profile-info-add-picture.en.png
create mode 100644 app/assets/images/doc/enterprise-edit-profile-info-add-picture.pt.png
create mode 100644 app/assets/images/doc/enterprise-edit-profile-info-change-picture.en.png
create mode 100644 app/assets/images/doc/enterprise-edit-profile-info-change-picture.pt.png
create mode 100644 app/assets/images/doc/enterprise-edit-profile-info-general-information.en.png
create mode 100644 app/assets/images/doc/enterprise-edit-profile-info-general-information.pt.png
create mode 100644 app/assets/images/doc/enterprise-edit-profile-info-moderation-options.en.png
create mode 100644 app/assets/images/doc/enterprise-edit-profile-info-moderation-options.pt.png
create mode 100644 app/assets/images/doc/enterprise-edit-profile-privacy-options.en.png
create mode 100644 app/assets/images/doc/enterprise-edit-profile-privacy-options.pt.png
create mode 100644 app/assets/images/doc/enterprise-edit-sideboxes.en.png
create mode 100644 app/assets/images/doc/enterprise-edit-sideboxes.pt.png
create mode 100644 app/assets/images/doc/enterprise-image-block.en.png
create mode 100644 app/assets/images/doc/enterprise-image-block.pt.png
create mode 100644 app/assets/images/doc/enterprise-info-block.en.png
create mode 100644 app/assets/images/doc/enterprise-info-block.pt.png
create mode 100644 app/assets/images/doc/enterprise-members-list.en.png
create mode 100644 app/assets/images/doc/enterprise-members-list.pt.png
create mode 100644 app/assets/images/doc/enterprise-network-block.en.png
create mode 100644 app/assets/images/doc/enterprise-network-block.pt.png
create mode 100644 app/assets/images/doc/enterprise-new-product-last-category.en.png
create mode 100644 app/assets/images/doc/enterprise-new-product-no-category.en.png
create mode 100644 app/assets/images/doc/enterprise-new-product-second-category.en.png
create mode 100644 app/assets/images/doc/enterprise-product-add-input-button.en.png
create mode 100644 app/assets/images/doc/enterprise-product-add-input-form.en.png
create mode 100644 app/assets/images/doc/enterprise-product-change-image-form.en.png
create mode 100644 app/assets/images/doc/enterprise-product-complete.en.png
create mode 100644 app/assets/images/doc/enterprise-product-edit-basic-info-form.en.png
create mode 100644 app/assets/images/doc/enterprise-product-edit-description-form.en.png
create mode 100644 app/assets/images/doc/enterprise-product-edit-name-form.en.png
create mode 100644 app/assets/images/doc/enterprise-product-list-new-product-button.en.png
create mode 100644 app/assets/images/doc/enterprise-product-list-new-product-button.pt.png
create mode 100644 app/assets/images/doc/enterprise-product.en.png
create mode 100644 app/assets/images/doc/enterprise-sideboxes-add-block.en.png
create mode 100644 app/assets/images/doc/enterprise-sideboxes-add-block.pt.png
create mode 100644 app/assets/images/doc/enterprises-block.en.png
create mode 100644 app/assets/images/doc/enterprises-block.pt.png
create mode 100644 app/assets/images/doc/enterprises-search-field.en.png
create mode 100644 app/assets/images/doc/enterprises-search-field.pt.png
create mode 100644 app/assets/images/doc/enterprises-search-results-with-example.en.png
create mode 100644 app/assets/images/doc/enterprises-search-results-with-example.pt.png
create mode 100644 app/assets/images/doc/environment-homepage-with-login-button.en.png
create mode 100644 app/assets/images/doc/environment-homepage-with-login-button.pt.png
create mode 100644 app/assets/images/doc/favorite-enterprises-block.en.png
create mode 100644 app/assets/images/doc/favorite-enterprises-block.pt.png
create mode 100644 app/assets/images/doc/feed-reader-block.en.png
create mode 100644 app/assets/images/doc/feed-reader-block.pt.png
create mode 100644 app/assets/images/doc/friends-block.en.png
create mode 100644 app/assets/images/doc/friends-block.pt.png
create mode 100644 app/assets/images/doc/gallery-buttons.en.png
create mode 100644 app/assets/images/doc/gallery-buttons.pt.png
create mode 100644 app/assets/images/doc/groups-list-with-create-community.en.png
create mode 100644 app/assets/images/doc/groups-list-with-create-community.pt.png
create mode 100644 app/assets/images/doc/groups-list-with-manage-community.en.png
create mode 100644 app/assets/images/doc/groups-list-with-manage-community.pt.png
create mode 100644 app/assets/images/doc/groups-list-with-manage-enterprise.en.png
create mode 100644 app/assets/images/doc/groups-list-with-manage-enterprise.pt.png
create mode 100644 app/assets/images/doc/join-community-confirmation.en.png
create mode 100644 app/assets/images/doc/join-community-confirmation.pt.png
create mode 100644 app/assets/images/doc/joining-community-button.en.png
create mode 100644 app/assets/images/doc/joining-community-button.pt.png
create mode 100644 app/assets/images/doc/links-block.en.png
create mode 100644 app/assets/images/doc/links-block.pt.png
create mode 100644 app/assets/images/doc/location-map-block.en.png
create mode 100644 app/assets/images/doc/location-map-block.pt.png
create mode 100644 app/assets/images/doc/manage-friends.en.png
create mode 100644 app/assets/images/doc/manage-friends.pt.png
create mode 100644 app/assets/images/doc/members-block.en.png
create mode 100644 app/assets/images/doc/members-block.pt.png
create mode 100644 app/assets/images/doc/menu-admin.en.png
create mode 100644 app/assets/images/doc/menu-admin.pt.png
create mode 100644 app/assets/images/doc/menu-communities.en.png
create mode 100644 app/assets/images/doc/menu-communities.pt.png
create mode 100644 app/assets/images/doc/menu-control-panel.en.png
create mode 100644 app/assets/images/doc/menu-control-panel.pt.png
create mode 100644 app/assets/images/doc/menu-enterprises.en.png
create mode 100644 app/assets/images/doc/menu-enterprises.pt.png
create mode 100644 app/assets/images/doc/menu-logout.en.png
create mode 100644 app/assets/images/doc/menu-logout.pt.png
create mode 100644 app/assets/images/doc/menu-more-active-communities.en.png
create mode 100644 app/assets/images/doc/menu-more-active-communities.pt.png
create mode 100644 app/assets/images/doc/menu-more-active-people.en.png
create mode 100644 app/assets/images/doc/menu-more-active-people.pt.png
create mode 100644 app/assets/images/doc/menu-more-popular-communities.en.png
create mode 100644 app/assets/images/doc/menu-more-popular-communities.pt.png
create mode 100644 app/assets/images/doc/menu-more-popular-people.en.png
create mode 100644 app/assets/images/doc/menu-more-popular-people.pt.png
create mode 100644 app/assets/images/doc/menu-more-recent-communities.en.png
create mode 100644 app/assets/images/doc/menu-more-recent-communities.pt.png
create mode 100644 app/assets/images/doc/menu-more-recent-people.en.png
create mode 100644 app/assets/images/doc/menu-more-recent-people.pt.png
create mode 100644 app/assets/images/doc/menu-people.en.png
create mode 100644 app/assets/images/doc/menu-people.pt.png
create mode 100644 app/assets/images/doc/menu-products.en.png
create mode 100644 app/assets/images/doc/menu-products.pt.png
create mode 100644 app/assets/images/doc/menu-search.en.png
create mode 100644 app/assets/images/doc/menu-search.pt.png
create mode 100644 app/assets/images/doc/more-active-communities-detail.en.png
create mode 100644 app/assets/images/doc/more-active-communities-detail.pt.png
create mode 100644 app/assets/images/doc/more-active-communities-with-example.en.png
create mode 100644 app/assets/images/doc/more-active-communities-with-example.pt.png
create mode 100644 app/assets/images/doc/more-active-communities.en.png
create mode 100644 app/assets/images/doc/more-active-communities.pt.png
create mode 100644 app/assets/images/doc/more-active-people-detail.en.png
create mode 100644 app/assets/images/doc/more-active-people-detail.pt.png
create mode 100644 app/assets/images/doc/more-active-people-with-example.en.png
create mode 100644 app/assets/images/doc/more-active-people-with-example.pt.png
create mode 100644 app/assets/images/doc/more-active-people.en.png
create mode 100644 app/assets/images/doc/more-active-people.pt.png
create mode 100644 app/assets/images/doc/more-popular-communities-detail.en.png
create mode 100644 app/assets/images/doc/more-popular-communities-detail.pt.png
create mode 100644 app/assets/images/doc/more-popular-communities-with-example.en.png
create mode 100644 app/assets/images/doc/more-popular-communities-with-example.pt.png
create mode 100644 app/assets/images/doc/more-popular-communities.en.png
create mode 100644 app/assets/images/doc/more-popular-communities.pt.png
create mode 100644 app/assets/images/doc/more-popular-people-detail.en.png
create mode 100644 app/assets/images/doc/more-popular-people-detail.pt.png
create mode 100644 app/assets/images/doc/more-popular-people-with-example.en.png
create mode 100644 app/assets/images/doc/more-popular-people-with-example.pt.png
create mode 100644 app/assets/images/doc/more-popular-people.en.png
create mode 100644 app/assets/images/doc/more-popular-people.pt.png
create mode 100644 app/assets/images/doc/more-recent-communities-detail.en.png
create mode 100644 app/assets/images/doc/more-recent-communities-detail.pt.png
create mode 100644 app/assets/images/doc/more-recent-communities-with-example.en.png
create mode 100644 app/assets/images/doc/more-recent-communities-with-example.pt.png
create mode 100644 app/assets/images/doc/more-recent-communities.en.png
create mode 100644 app/assets/images/doc/more-recent-communities.pt.png
create mode 100644 app/assets/images/doc/more-recent-people-detail.en.png
create mode 100644 app/assets/images/doc/more-recent-people-detail.pt.png
create mode 100644 app/assets/images/doc/more-recent-people-with-example.en.png
create mode 100644 app/assets/images/doc/more-recent-people-with-example.pt.png
create mode 100644 app/assets/images/doc/more-recent-people.en.png
create mode 100644 app/assets/images/doc/more-recent-people.pt.png
create mode 100644 app/assets/images/doc/new-folder.en.png
create mode 100644 app/assets/images/doc/new-folder.pt.png
create mode 100644 app/assets/images/doc/open-comment-box-for-logged-in.en.png
create mode 100644 app/assets/images/doc/open-comment-box-for-logged-in.pt.png
create mode 100644 app/assets/images/doc/open-comment-box-for-not-logged-in.en.png
create mode 100644 app/assets/images/doc/open-comment-box-for-not-logged-in.pt.png
create mode 100644 app/assets/images/doc/other-person-view-profile-link.en.png
create mode 100644 app/assets/images/doc/other-person-view-profile-link.pt.png
create mode 100644 app/assets/images/doc/people-search-field.en.png
create mode 100644 app/assets/images/doc/people-search-field.pt.png
create mode 100644 app/assets/images/doc/people-search-results-with-example.en.png
create mode 100644 app/assets/images/doc/people-search-results-with-example.pt.png
create mode 100644 app/assets/images/doc/person-activities-list.en.png
create mode 100644 app/assets/images/doc/person-activities-list.pt.png
create mode 100644 app/assets/images/doc/person-balloon-closed-en.png
create mode 100644 app/assets/images/doc/person-balloon-closed.en.png
create mode 100644 app/assets/images/doc/person-balloon-en.png
create mode 100644 app/assets/images/doc/person-balloon-pt.png
create mode 100644 app/assets/images/doc/person-balloon.en.png
create mode 100644 app/assets/images/doc/person-balloon.pt.png
create mode 100644 app/assets/images/doc/person-delete-profile-confirmation.en.png
create mode 100644 app/assets/images/doc/person-delete-profile-confirmation.pt.png
create mode 100644 app/assets/images/doc/person-edit-profile-categories.en.png
create mode 100644 app/assets/images/doc/person-edit-profile-categories.pt.png
create mode 100644 app/assets/images/doc/person-edit-profile-info-change-picture.en.png
create mode 100644 app/assets/images/doc/person-edit-profile-info-change-picture.pt.png
create mode 100644 app/assets/images/doc/person-edit-profile-info-general-informationen.en.png
create mode 100644 app/assets/images/doc/person-edit-profile-info-general-informationen.pt.png
create mode 100644 app/assets/images/doc/person-edit-profile-privacy-options.en.png
create mode 100644 app/assets/images/doc/person-edit-profile-privacy-options.pt.png
create mode 100644 app/assets/images/doc/person-view-profile-link.en.png
create mode 100644 app/assets/images/doc/person-view-profile-link.pt.png
create mode 100644 app/assets/images/doc/person-wall-scrap-reply-button.en.png
create mode 100644 app/assets/images/doc/person-wall-scrap-reply-form.en.png
create mode 100644 app/assets/images/doc/person-wall-scrap-reply-form.pt.png
create mode 100644 app/assets/images/doc/person-wall-scrap-reply-sent.en.png
create mode 100644 app/assets/images/doc/person-wall-scrap-reply-sent.pt.png
create mode 100644 app/assets/images/doc/person-wall-scrap-sent.en.png
create mode 100644 app/assets/images/doc/person-wall-scrap-sent.pt.png
create mode 100644 app/assets/images/doc/person-wall-writing-scrap.en.png
create mode 100644 app/assets/images/doc/person-wall-writing-scrap.pt.png
create mode 100644 app/assets/images/doc/products-block.en.png
create mode 100644 app/assets/images/doc/products-block.pt.png
create mode 100644 app/assets/images/doc/products-search-field.en.png
create mode 100644 app/assets/images/doc/products-search-field.pt.png
create mode 100644 app/assets/images/doc/products-search-results-with-example.en.png
create mode 100644 app/assets/images/doc/products-search-results-with-example.pt.png
create mode 100644 app/assets/images/doc/profile-image-block.en.png
create mode 100644 app/assets/images/doc/profile-image-block.pt.png
create mode 100644 app/assets/images/doc/profile-info-block.en.png
create mode 100644 app/assets/images/doc/profile-info-block.pt.png
create mode 100644 app/assets/images/doc/profile-with-button-to-add-friends.en.png
create mode 100644 app/assets/images/doc/profile-with-button-to-add-friends.pt.png
create mode 100644 app/assets/images/doc/recent-content-block.en.png
create mode 100644 app/assets/images/doc/recent-content-block.pt.png
create mode 100644 app/assets/images/doc/remove-comment-confirmation.en.png
create mode 100644 app/assets/images/doc/remove-comment-confirmation.pt.png
create mode 100644 app/assets/images/doc/remove-friend-confirmation.en.png
create mode 100644 app/assets/images/doc/remove-friend-confirmation.pt.png
create mode 100644 app/assets/images/doc/remove-friend.en.png
create mode 100644 app/assets/images/doc/remove-friend.pt.png
create mode 100644 app/assets/images/doc/search-more-options-open.en.png
create mode 100644 app/assets/images/doc/search-more-options-open.pt.png
create mode 100644 app/assets/images/doc/search-more-options.en.png
create mode 100644 app/assets/images/doc/search-more-options.pt.png
create mode 100644 app/assets/images/doc/search-results-with-example.en.png
create mode 100644 app/assets/images/doc/search-results-with-example.pt.png
create mode 100644 app/assets/images/doc/search-view-all-results-with-example.en.png
create mode 100644 app/assets/images/doc/search-view-all-results-with-example.pt.png
create mode 100644 app/assets/images/doc/send-message.en.png
create mode 100644 app/assets/images/doc/send-message.pt.png
create mode 100644 app/assets/images/doc/signup-form.en.png
create mode 100644 app/assets/images/doc/signup-form.pt.png
create mode 100644 app/assets/images/doc/slideshow-block.en.png
create mode 100644 app/assets/images/doc/slideshow-block.pt.png
create mode 100644 app/assets/images/doc/system-homepage-top-menu-admin.en.png
create mode 100644 app/assets/images/doc/system-homepage-top-menu-admin.pt.png
create mode 100644 app/assets/images/doc/system-homepage-top-menu.en.png
create mode 100644 app/assets/images/doc/system-homepage-top-menu.pt.png
create mode 100644 app/assets/images/doc/tags-block.en.png
create mode 100644 app/assets/images/doc/tags-block.pt.png
create mode 100644 app/assets/images/doc/tasks-list-approval-request.en.png
create mode 100644 app/assets/images/doc/tasks-list-approval-request.pt.png
create mode 100644 app/assets/images/doc/tasks-list-friendship-request.en.png
create mode 100644 app/assets/images/doc/tasks-list-friendship-request.pt.png
create mode 100644 app/assets/images/doc/tasks-list-membership-request.en.png
create mode 100644 app/assets/images/doc/tasks-list-membership-request.pt.png
create mode 100644 app/assets/images/doc/top-menu.en.png
create mode 100644 app/assets/images/doc/top-menu.pt.png
create mode 100644 app/assets/images/doc/uploading-files-to-gallery.en.png
create mode 100644 app/assets/images/doc/uploading-files-to-gallery.pt.png
create mode 100644 app/assets/images/doc/user-edit-sideboxes.en.png
create mode 100644 app/assets/images/doc/user-edit-sideboxes.pt.png
create mode 100644 app/assets/images/doc/user-friends-with-invitation-button.en.png
create mode 100644 app/assets/images/doc/user-friends-with-invitation-button.pt.png
create mode 100644 app/assets/images/doc/user-import-invitation-step-1.en.png
create mode 100644 app/assets/images/doc/user-import-invitation-step-1.pt.png
create mode 100644 app/assets/images/doc/user-import-invitation-step-2.en.png
create mode 100644 app/assets/images/doc/user-import-invitation-step-2.pt.png
create mode 100644 app/assets/images/doc/user-manually-invitation-step-1.en.png
create mode 100644 app/assets/images/doc/user-manually-invitation-step-1.pt.png
create mode 100644 app/assets/images/doc/user-manually-invitation-step-2.en.png
create mode 100644 app/assets/images/doc/user-manually-invitation-step-2.pt.png
create mode 100644 app/assets/images/doc/user-network-block.en.png
create mode 100644 app/assets/images/doc/user-network-block.pt.png
create mode 100644 app/assets/images/doc/user-sideboxes-add-block.en.png
create mode 100644 app/assets/images/doc/user-sideboxes-add-block.pt.png
create mode 100644 app/assets/images/doc/wysiwyg-buttons.en.png
create mode 100644 app/assets/images/doc/wysiwyg-buttons.pt.png
create mode 100644 app/assets/images/dotleaders.png
create mode 100644 app/assets/images/down-arrow.png
create mode 100644 app/assets/images/ecosol-tree-sprite.png
create mode 100644 app/assets/images/fancybox/blank.gif
create mode 100644 app/assets/images/fancybox/fancy_close.png
create mode 100644 app/assets/images/fancybox/fancy_loading.png
create mode 100644 app/assets/images/fancybox/fancy_nav_left.png
create mode 100644 app/assets/images/fancybox/fancy_nav_right.png
create mode 100644 app/assets/images/fancybox/fancy_shadow_e.png
create mode 100644 app/assets/images/fancybox/fancy_shadow_n.png
create mode 100644 app/assets/images/fancybox/fancy_shadow_ne.png
create mode 100644 app/assets/images/fancybox/fancy_shadow_nw.png
create mode 100644 app/assets/images/fancybox/fancy_shadow_s.png
create mode 100644 app/assets/images/fancybox/fancy_shadow_se.png
create mode 100644 app/assets/images/fancybox/fancy_shadow_sw.png
create mode 100644 app/assets/images/fancybox/fancy_shadow_w.png
create mode 100644 app/assets/images/fancybox/fancy_title_left.png
create mode 100644 app/assets/images/fancybox/fancy_title_main.png
create mode 100644 app/assets/images/fancybox/fancy_title_over.png
create mode 100644 app/assets/images/fancybox/fancy_title_right.png
create mode 100644 app/assets/images/fancybox/fancybox-x.png
create mode 100644 app/assets/images/fancybox/fancybox-y.png
create mode 100644 app/assets/images/fancybox/fancybox.png
create mode 100644 app/assets/images/fff.gif
create mode 100644 app/assets/images/field-bg.png
create mode 100644 app/assets/images/forum-activity-bg-onecol.png
create mode 100644 app/assets/images/forum-activity-bg.png
create mode 100644 app/assets/images/forum-activity-icon.png
create mode 100644 app/assets/images/gallery-image-activity-border-big-onecol.png
create mode 100644 app/assets/images/gallery-image-activity-border-big.png
create mode 100644 app/assets/images/gallery-image-activity-border-onecol.png
create mode 100644 app/assets/images/gallery-image-activity-border.png
create mode 100644 app/assets/images/grip-clue.png
create mode 100644 app/assets/images/hachure.png
create mode 100644 app/assets/images/help-avatar.gif
create mode 100644 app/assets/images/icon_filter_exclude.png
create mode 100644 app/assets/images/icon_more_options.png
create mode 120000 app/assets/images/icons-app/alert.png
create mode 100644 app/assets/images/icons-app/article-minor.png
create mode 100644 app/assets/images/icons-app/article-portrait.png
create mode 100644 app/assets/images/icons-app/article-thumb.png
create mode 120000 app/assets/images/icons-app/chat-22x22.png
create mode 100644 app/assets/images/icons-app/community-big.png
create mode 100644 app/assets/images/icons-app/community-icon.png
create mode 100644 app/assets/images/icons-app/community-minor.png
create mode 100644 app/assets/images/icons-app/community-portrait.png
create mode 100644 app/assets/images/icons-app/community-thumb.png
create mode 100644 app/assets/images/icons-app/design-editor.png
create mode 100644 app/assets/images/icons-app/emblem-important.png
create mode 100644 app/assets/images/icons-app/enterprise-big.png
create mode 100644 app/assets/images/icons-app/enterprise-icon.png
create mode 100644 app/assets/images/icons-app/enterprise-minor.png
create mode 100644 app/assets/images/icons-app/enterprise-portrait.png
create mode 120000 app/assets/images/icons-app/enterprise-registration.png
create mode 100644 app/assets/images/icons-app/enterprise-thumb.png
create mode 100644 app/assets/images/icons-app/gnome-irc-22x22.png
create mode 100644 app/assets/images/icons-app/gnome-irc.png
create mode 100644 app/assets/images/icons-app/gnome-settings-theme.png
create mode 100644 app/assets/images/icons-app/gtk-folder.png
create mode 100644 app/assets/images/icons-app/ico-female.png
create mode 100644 app/assets/images/icons-app/ico-male.png
create mode 100644 app/assets/images/icons-app/ico-sex-undef.png
create mode 100644 app/assets/images/icons-app/image-loading-big.png
create mode 100644 app/assets/images/icons-app/image-loading-display.png
create mode 100644 app/assets/images/icons-app/image-loading-icon.png
create mode 100644 app/assets/images/icons-app/image-loading-minor.png
create mode 100644 app/assets/images/icons-app/image-loading-portrait.png
create mode 100644 app/assets/images/icons-app/image-loading-slideshow.png
create mode 100644 app/assets/images/icons-app/image-loading-small.png
create mode 100644 app/assets/images/icons-app/image-loading-thumb.png
create mode 100644 app/assets/images/icons-app/person-big.png
create mode 100644 app/assets/images/icons-app/person-icon.png
create mode 100644 app/assets/images/icons-app/person-minor.png
create mode 100644 app/assets/images/icons-app/person-portrait.png
create mode 100644 app/assets/images/icons-app/person-thumb.png
create mode 100644 app/assets/images/icons-app/product-default-pic-big.png
create mode 100644 app/assets/images/icons-app/product-default-pic-minor.png
create mode 100644 app/assets/images/icons-app/product-default-pic-portrait.png
create mode 100644 app/assets/images/icons-app/product-default-pic-thumb.png
create mode 100644 app/assets/images/icons-app/user_icon.png
create mode 100644 app/assets/images/icons-app/user_icon.svg
create mode 100644 app/assets/images/icons-app/users.svg
create mode 100644 app/assets/images/icons-bar/accessibility.png
create mode 100644 app/assets/images/icons-bar/admin.png
create mode 100644 app/assets/images/icons-bar/go-content.png
create mode 100644 app/assets/images/icons-bar/go-home.png
create mode 100644 app/assets/images/icons-bar/help.png
create mode 100644 app/assets/images/icons-bar/login.png
create mode 100644 app/assets/images/icons-bar/logout.png
create mode 100644 app/assets/images/icons-bar/logout2.png
create mode 100644 app/assets/images/icons-cat/Agropecuária_extrativismo_e_pesca.png
create mode 100644 app/assets/images/icons-cat/Alimentos_e_bebidas.png
create mode 100644 app/assets/images/icons-cat/Artefatos_artesanais.png
create mode 100644 app/assets/images/icons-cat/Ação_comunitária.png
create mode 100644 app/assets/images/icons-cat/Coleta_e_reciclagem_de_materiais.png
create mode 100644 app/assets/images/icons-cat/Crédito_e_finanças.png
create mode 100644 app/assets/images/icons-cat/Fitoterápicos_e_produtos_de_limpeza_e_higiene.png
create mode 100644 app/assets/images/icons-cat/Prestação_de_serviços_diversos.png
create mode 100644 app/assets/images/icons-cat/Produção_industrial.png
create mode 100644 app/assets/images/icons-cat/Produção_têxtil_e_confecção.png
create mode 100644 app/assets/images/icons-cat/Software.png
create mode 100644 app/assets/images/icons-cat/Software_Livre.png
create mode 100644 app/assets/images/icons-cat/undefined.png
create mode 100644 app/assets/images/icons-map/enterprise.png
create mode 100644 app/assets/images/icons-map/enterprise_shadow.png
create mode 100644 app/assets/images/icons-mime/README
create mode 100644 app/assets/images/icons-mime/empty.png
create mode 120000 app/assets/images/icons-mime/event.png
create mode 120000 app/assets/images/icons-mime/folder.png
create mode 100644 app/assets/images/icons-mime/gnome-folder.png
create mode 100644 app/assets/images/icons-mime/gnome-mime-empty.png
create mode 100644 app/assets/images/icons-mime/gnome-mime-text-html.png
create mode 100644 app/assets/images/icons-mime/ico-feed-on.png
create mode 100644 app/assets/images/icons-mime/rss-feed-16.png
create mode 120000 app/assets/images/icons-mime/rss-feed.png
create mode 120000 app/assets/images/icons-mime/text-html.png
create mode 120000 app/assets/images/icons-mime/unknown.png
create mode 100644 app/assets/images/icons-task/closed-arrow-hover.png
create mode 100644 app/assets/images/icons-task/closed-arrow.png
create mode 100644 app/assets/images/icons-task/opened-arrow-hover.png
create mode 100644 app/assets/images/icons-task/opened-arrow.png
create mode 100644 app/assets/images/input-bg.gif
create mode 100644 app/assets/images/loading-dark.gif
create mode 100644 app/assets/images/loading-small-dark.gif
create mode 100644 app/assets/images/loading-small.gif
create mode 100644 app/assets/images/loading.gif
create mode 100644 app/assets/images/login_checking.png
create mode 100644 app/assets/images/logo-anhetegua-200x50.png
create mode 100644 app/assets/images/logo-anhetegua.png
create mode 100644 app/assets/images/noosfero-network.png
create mode 100755 app/assets/images/noosfero-network.svg
create mode 100644 app/assets/images/orange-balloon.png
create mode 100644 app/assets/images/orange-bg.png
create mode 100644 app/assets/images/passwords_match.png
create mode 100644 app/assets/images/passwords_nomatch.png
create mode 100644 app/assets/images/rails.png
create mode 100644 app/assets/images/scrap-bg-gray.png
create mode 100644 app/assets/images/scrap-bg.png
create mode 100644 app/assets/images/solidarity-economy.png
create mode 100644 app/assets/images/top-arrow.png
create mode 100644 app/assets/images/white-pixel.gif
create mode 100644 app/assets/images/zoom-dark.png
create mode 100644 app/assets/images/zoom.png
create mode 100644 app/assets/javascripts/add-and-join.js
create mode 100644 app/assets/javascripts/application.js
create mode 100644 app/assets/javascripts/article.js
create mode 100644 app/assets/javascripts/ba-linkify.js
create mode 100644 app/assets/javascripts/catalog.js
create mode 100644 app/assets/javascripts/chat.js
create mode 100644 app/assets/javascripts/codepress/codepress.css
create mode 100644 app/assets/javascripts/codepress/codepress.html
create mode 100644 app/assets/javascripts/codepress/codepress.js
create mode 100644 app/assets/javascripts/codepress/engines/gecko.js
create mode 100644 app/assets/javascripts/codepress/engines/khtml.js
create mode 100644 app/assets/javascripts/codepress/engines/msie.js
create mode 100644 app/assets/javascripts/codepress/engines/older.js
create mode 100644 app/assets/javascripts/codepress/engines/opera.js
create mode 100644 app/assets/javascripts/codepress/images/line-numbers.png
create mode 100644 app/assets/javascripts/codepress/index.html
create mode 100644 app/assets/javascripts/codepress/languages/asp.css
create mode 100644 app/assets/javascripts/codepress/languages/asp.js
create mode 100644 app/assets/javascripts/codepress/languages/autoit.css
create mode 100644 app/assets/javascripts/codepress/languages/autoit.js
create mode 100644 app/assets/javascripts/codepress/languages/csharp.css
create mode 100644 app/assets/javascripts/codepress/languages/csharp.js
create mode 100644 app/assets/javascripts/codepress/languages/css.css
create mode 100644 app/assets/javascripts/codepress/languages/css.js
create mode 100644 app/assets/javascripts/codepress/languages/generic.css
create mode 100644 app/assets/javascripts/codepress/languages/generic.js
create mode 100644 app/assets/javascripts/codepress/languages/html.css
create mode 100644 app/assets/javascripts/codepress/languages/html.js
create mode 100644 app/assets/javascripts/codepress/languages/java.css
create mode 100644 app/assets/javascripts/codepress/languages/java.js
create mode 100644 app/assets/javascripts/codepress/languages/javascript.css
create mode 100644 app/assets/javascripts/codepress/languages/javascript.js
create mode 100644 app/assets/javascripts/codepress/languages/perl.css
create mode 100644 app/assets/javascripts/codepress/languages/perl.js
create mode 100644 app/assets/javascripts/codepress/languages/php.css
create mode 100644 app/assets/javascripts/codepress/languages/php.js
create mode 100644 app/assets/javascripts/codepress/languages/ruby.css
create mode 100644 app/assets/javascripts/codepress/languages/ruby.js
create mode 100644 app/assets/javascripts/codepress/languages/sql.css
create mode 100644 app/assets/javascripts/codepress/languages/sql.js
create mode 100644 app/assets/javascripts/codepress/languages/text.css
create mode 100644 app/assets/javascripts/codepress/languages/text.js
create mode 100644 app/assets/javascripts/codepress/languages/vbscript.css
create mode 100644 app/assets/javascripts/codepress/languages/vbscript.js
create mode 100644 app/assets/javascripts/codepress/languages/xsl.css
create mode 100644 app/assets/javascripts/codepress/languages/xsl.js
create mode 100644 app/assets/javascripts/codepress/license.txt
create mode 100644 app/assets/javascripts/colorbox.js
create mode 100644 app/assets/javascripts/colorpicker-noosfero.js
create mode 100644 app/assets/javascripts/colorpicker.js
create mode 100644 app/assets/javascripts/controls.js
create mode 100644 app/assets/javascripts/dragdrop.js
create mode 100644 app/assets/javascripts/effects.js
create mode 100644 app/assets/javascripts/errors.js
create mode 100644 app/assets/javascripts/google_maps.js
create mode 100644 app/assets/javascripts/jquery-latest.js
create mode 100644 app/assets/javascripts/jquery-ui-1.8.2.custom.min.js
create mode 100644 app/assets/javascripts/jquery-validation/README.md
create mode 100644 app/assets/javascripts/jquery-validation/changelog.txt
create mode 100644 app/assets/javascripts/jquery-validation/jquery.validate.js
create mode 100644 app/assets/javascripts/jquery-validation/jquery.validate.min.js
create mode 100644 app/assets/javascripts/jquery-validation/lib/jquery-1.4.2.js
create mode 100644 app/assets/javascripts/jquery-validation/lib/jquery-1.4.4.js
create mode 100644 app/assets/javascripts/jquery-validation/lib/jquery-1.5.1.js
create mode 100644 app/assets/javascripts/jquery-validation/lib/jquery-1.5.js
create mode 100644 app/assets/javascripts/jquery-validation/lib/jquery.form.js
create mode 100644 app/assets/javascripts/jquery-validation/lib/jquery.js
create mode 100644 app/assets/javascripts/jquery-validation/lib/jquery.metadata.js
create mode 100644 app/assets/javascripts/jquery-validation/localization/messages_ar.js
create mode 100644 app/assets/javascripts/jquery-validation/localization/messages_bg.js
create mode 100644 app/assets/javascripts/jquery-validation/localization/messages_ca.js
create mode 100644 app/assets/javascripts/jquery-validation/localization/messages_cn.js
create mode 100644 app/assets/javascripts/jquery-validation/localization/messages_cs.js
create mode 100644 app/assets/javascripts/jquery-validation/localization/messages_da.js
create mode 100644 app/assets/javascripts/jquery-validation/localization/messages_de.js
create mode 100644 app/assets/javascripts/jquery-validation/localization/messages_el.js
create mode 100644 app/assets/javascripts/jquery-validation/localization/messages_es.js
create mode 100644 app/assets/javascripts/jquery-validation/localization/messages_fa.js
create mode 100644 app/assets/javascripts/jquery-validation/localization/messages_fi.js
create mode 100644 app/assets/javascripts/jquery-validation/localization/messages_fr.js
create mode 100644 app/assets/javascripts/jquery-validation/localization/messages_ge.js
create mode 100644 app/assets/javascripts/jquery-validation/localization/messages_he.js
create mode 100644 app/assets/javascripts/jquery-validation/localization/messages_hu.js
create mode 100644 app/assets/javascripts/jquery-validation/localization/messages_it.js
create mode 100644 app/assets/javascripts/jquery-validation/localization/messages_ja.js
create mode 100644 app/assets/javascripts/jquery-validation/localization/messages_kk.js
create mode 100644 app/assets/javascripts/jquery-validation/localization/messages_lt.js
create mode 100644 app/assets/javascripts/jquery-validation/localization/messages_lv.js
create mode 100644 app/assets/javascripts/jquery-validation/localization/messages_nl.js
create mode 100644 app/assets/javascripts/jquery-validation/localization/messages_no.js
create mode 100644 app/assets/javascripts/jquery-validation/localization/messages_pl.js
create mode 120000 app/assets/javascripts/jquery-validation/localization/messages_pt.js
create mode 100644 app/assets/javascripts/jquery-validation/localization/messages_ptbr.js
create mode 100644 app/assets/javascripts/jquery-validation/localization/messages_ptpt.js
create mode 100644 app/assets/javascripts/jquery-validation/localization/messages_ro.js
create mode 100644 app/assets/javascripts/jquery-validation/localization/messages_ru.js
create mode 100644 app/assets/javascripts/jquery-validation/localization/messages_se.js
create mode 100644 app/assets/javascripts/jquery-validation/localization/messages_si.js
create mode 100644 app/assets/javascripts/jquery-validation/localization/messages_sk.js
create mode 100644 app/assets/javascripts/jquery-validation/localization/messages_sr.js
create mode 100644 app/assets/javascripts/jquery-validation/localization/messages_tr.js
create mode 100644 app/assets/javascripts/jquery-validation/localization/messages_tw.js
create mode 100644 app/assets/javascripts/jquery-validation/localization/messages_ua.js
create mode 100644 app/assets/javascripts/jquery-validation/localization/methods_de.js
create mode 100644 app/assets/javascripts/jquery-validation/localization/methods_nl.js
create mode 100644 app/assets/javascripts/jquery-validation/localization/methods_pt.js
create mode 100644 app/assets/javascripts/jquery-validation/test/events.html
create mode 100644 app/assets/javascripts/jquery-validation/test/firebug/errorIcon.png
create mode 100644 app/assets/javascripts/jquery-validation/test/firebug/firebug.css
create mode 100644 app/assets/javascripts/jquery-validation/test/firebug/firebug.html
create mode 100644 app/assets/javascripts/jquery-validation/test/firebug/firebug.js
create mode 100644 app/assets/javascripts/jquery-validation/test/firebug/firebugx.js
create mode 100644 app/assets/javascripts/jquery-validation/test/firebug/infoIcon.png
create mode 100644 app/assets/javascripts/jquery-validation/test/firebug/warningIcon.png
create mode 100644 app/assets/javascripts/jquery-validation/test/index.html
create mode 100644 app/assets/javascripts/jquery-validation/test/jquery.js
create mode 100644 app/assets/javascripts/jquery-validation/test/large.html
create mode 100644 app/assets/javascripts/jquery-validation/test/messages.js
create mode 100644 app/assets/javascripts/jquery-validation/test/methods.js
create mode 100644 app/assets/javascripts/jquery-validation/test/qunit/qunit.css
create mode 100644 app/assets/javascripts/jquery-validation/test/qunit/qunit.js
create mode 100644 app/assets/javascripts/jquery-validation/test/rules.js
create mode 100644 app/assets/javascripts/jquery-validation/test/selects/index.html
create mode 100644 app/assets/javascripts/jquery-validation/test/tabs.html
create mode 100644 app/assets/javascripts/jquery-validation/test/test.js
create mode 100644 app/assets/javascripts/jquery-validation/test/users.php
create mode 100644 app/assets/javascripts/jquery-validation/test/users2.php
create mode 100644 app/assets/javascripts/jquery-validation/todo
create mode 100644 app/assets/javascripts/jquery-validation/version.txt
create mode 100644 app/assets/javascripts/jquery.ba-bbq.min.js
create mode 100644 app/assets/javascripts/jquery.ba-hashchange.js
create mode 100644 app/assets/javascripts/jquery.cookie.js
create mode 100644 app/assets/javascripts/jquery.cycle.all.min.js
create mode 100644 app/assets/javascripts/jquery.emoticon.js
create mode 100644 app/assets/javascripts/jquery.fancybox-1.3.4.pack.js
create mode 100644 app/assets/javascripts/jquery.form.js
create mode 100644 app/assets/javascripts/jquery.noconflict.js
create mode 100644 app/assets/javascripts/jquery.scrollTo.js
create mode 100644 app/assets/javascripts/jquery.scrollabletab.js
create mode 100644 app/assets/javascripts/jquery.sound.js
create mode 100644 app/assets/javascripts/jquery.tokeninput.js
create mode 100644 app/assets/javascripts/lightbox.js
create mode 100644 app/assets/javascripts/lowpro.js
create mode 100644 app/assets/javascripts/manage-categories.js
create mode 100644 app/assets/javascripts/manage-products.js
create mode 100644 app/assets/javascripts/miscellaneous.js
create mode 100644 app/assets/javascripts/pikachoose.js
create mode 100644 app/assets/javascripts/prototype.js
create mode 100644 app/assets/javascripts/reflection.js
create mode 100644 app/assets/javascripts/report-abuse.js
create mode 100644 app/assets/javascripts/sliderjs.js
create mode 100644 app/assets/javascripts/strophejs-1.0.1/LICENSE.txt
create mode 100644 app/assets/javascripts/strophejs-1.0.1/README.txt
create mode 100644 app/assets/javascripts/strophejs-1.0.1/contrib/discojs/README.txt
create mode 100644 app/assets/javascripts/strophejs-1.0.1/contrib/discojs/css/disco.css
create mode 100644 app/assets/javascripts/strophejs-1.0.1/contrib/discojs/index.html
create mode 100644 app/assets/javascripts/strophejs-1.0.1/contrib/discojs/punjab.tac
create mode 100644 app/assets/javascripts/strophejs-1.0.1/contrib/discojs/scripts/basic.js
create mode 100644 app/assets/javascripts/strophejs-1.0.1/contrib/discojs/scripts/disco.js
create mode 100644 app/assets/javascripts/strophejs-1.0.1/doc/files/core-js.html
create mode 100644 app/assets/javascripts/strophejs-1.0.1/doc/index.html
create mode 100644 app/assets/javascripts/strophejs-1.0.1/doc/javascript/main.js
create mode 100644 app/assets/javascripts/strophejs-1.0.1/doc/javascript/searchdata.js
create mode 100644 app/assets/javascripts/strophejs-1.0.1/doc/search/ClassesS.html
create mode 100644 app/assets/javascripts/strophejs-1.0.1/doc/search/ConstantsA.html
create mode 100644 app/assets/javascripts/strophejs-1.0.1/doc/search/ConstantsB.html
create mode 100644 app/assets/javascripts/strophejs-1.0.1/doc/search/ConstantsC.html
create mode 100644 app/assets/javascripts/strophejs-1.0.1/doc/search/ConstantsD.html
create mode 100644 app/assets/javascripts/strophejs-1.0.1/doc/search/ConstantsE.html
create mode 100644 app/assets/javascripts/strophejs-1.0.1/doc/search/ConstantsF.html
create mode 100644 app/assets/javascripts/strophejs-1.0.1/doc/search/ConstantsH.html
create mode 100644 app/assets/javascripts/strophejs-1.0.1/doc/search/ConstantsI.html
create mode 100644 app/assets/javascripts/strophejs-1.0.1/doc/search/ConstantsL.html
create mode 100644 app/assets/javascripts/strophejs-1.0.1/doc/search/ConstantsM.html
create mode 100644 app/assets/javascripts/strophejs-1.0.1/doc/search/ConstantsP.html
create mode 100644 app/assets/javascripts/strophejs-1.0.1/doc/search/ConstantsR.html
create mode 100644 app/assets/javascripts/strophejs-1.0.1/doc/search/ConstantsS.html
create mode 100644 app/assets/javascripts/strophejs-1.0.1/doc/search/ConstantsV.html
create mode 100644 app/assets/javascripts/strophejs-1.0.1/doc/search/ConstantsW.html
create mode 100644 app/assets/javascripts/strophejs-1.0.1/doc/search/ConstantsX.html
create mode 100644 app/assets/javascripts/strophejs-1.0.1/doc/search/FilesS.html
create mode 100644 app/assets/javascripts/strophejs-1.0.1/doc/search/FunctionsA.html
create mode 100644 app/assets/javascripts/strophejs-1.0.1/doc/search/FunctionsB.html
create mode 100644 app/assets/javascripts/strophejs-1.0.1/doc/search/FunctionsC.html
create mode 100644 app/assets/javascripts/strophejs-1.0.1/doc/search/FunctionsD.html
create mode 100644 app/assets/javascripts/strophejs-1.0.1/doc/search/FunctionsE.html
create mode 100644 app/assets/javascripts/strophejs-1.0.1/doc/search/FunctionsF.html
create mode 100644 app/assets/javascripts/strophejs-1.0.1/doc/search/FunctionsG.html
create mode 100644 app/assets/javascripts/strophejs-1.0.1/doc/search/FunctionsI.html
create mode 100644 app/assets/javascripts/strophejs-1.0.1/doc/search/FunctionsL.html
create mode 100644 app/assets/javascripts/strophejs-1.0.1/doc/search/FunctionsP.html
create mode 100644 app/assets/javascripts/strophejs-1.0.1/doc/search/FunctionsR.html
create mode 100644 app/assets/javascripts/strophejs-1.0.1/doc/search/FunctionsS.html
create mode 100644 app/assets/javascripts/strophejs-1.0.1/doc/search/FunctionsSymbols.html
create mode 100644 app/assets/javascripts/strophejs-1.0.1/doc/search/FunctionsT.html
create mode 100644 app/assets/javascripts/strophejs-1.0.1/doc/search/FunctionsU.html
create mode 100644 app/assets/javascripts/strophejs-1.0.1/doc/search/FunctionsW.html
create mode 100644 app/assets/javascripts/strophejs-1.0.1/doc/search/FunctionsX.html
create mode 100644 app/assets/javascripts/strophejs-1.0.1/doc/search/GeneralA.html
create mode 100644 app/assets/javascripts/strophejs-1.0.1/doc/search/GeneralB.html
create mode 100644 app/assets/javascripts/strophejs-1.0.1/doc/search/GeneralC.html
create mode 100644 app/assets/javascripts/strophejs-1.0.1/doc/search/GeneralD.html
create mode 100644 app/assets/javascripts/strophejs-1.0.1/doc/search/GeneralE.html
create mode 100644 app/assets/javascripts/strophejs-1.0.1/doc/search/GeneralF.html
create mode 100644 app/assets/javascripts/strophejs-1.0.1/doc/search/GeneralG.html
create mode 100644 app/assets/javascripts/strophejs-1.0.1/doc/search/GeneralH.html
create mode 100644 app/assets/javascripts/strophejs-1.0.1/doc/search/GeneralI.html
create mode 100644 app/assets/javascripts/strophejs-1.0.1/doc/search/GeneralL.html
create mode 100644 app/assets/javascripts/strophejs-1.0.1/doc/search/GeneralM.html
create mode 100644 app/assets/javascripts/strophejs-1.0.1/doc/search/GeneralP.html
create mode 100644 app/assets/javascripts/strophejs-1.0.1/doc/search/GeneralR.html
create mode 100644 app/assets/javascripts/strophejs-1.0.1/doc/search/GeneralS.html
create mode 100644 app/assets/javascripts/strophejs-1.0.1/doc/search/GeneralSymbols.html
create mode 100644 app/assets/javascripts/strophejs-1.0.1/doc/search/GeneralT.html
create mode 100644 app/assets/javascripts/strophejs-1.0.1/doc/search/GeneralU.html
create mode 100644 app/assets/javascripts/strophejs-1.0.1/doc/search/GeneralV.html
create mode 100644 app/assets/javascripts/strophejs-1.0.1/doc/search/GeneralW.html
create mode 100644 app/assets/javascripts/strophejs-1.0.1/doc/search/GeneralX.html
create mode 100644 app/assets/javascripts/strophejs-1.0.1/doc/search/NoResults.html
create mode 100644 app/assets/javascripts/strophejs-1.0.1/doc/styles/main.css
create mode 100644 app/assets/javascripts/strophejs-1.0.1/examples/attach/README
create mode 100644 app/assets/javascripts/strophejs-1.0.1/examples/attach/__init__.py
create mode 100644 app/assets/javascripts/strophejs-1.0.1/examples/attach/attacher/__init__.py
create mode 100644 app/assets/javascripts/strophejs-1.0.1/examples/attach/attacher/views.py
create mode 100644 app/assets/javascripts/strophejs-1.0.1/examples/attach/boshclient.py
create mode 100755 app/assets/javascripts/strophejs-1.0.1/examples/attach/manage.py
create mode 100644 app/assets/javascripts/strophejs-1.0.1/examples/attach/settings.py
create mode 100644 app/assets/javascripts/strophejs-1.0.1/examples/attach/templates/attacher/index.html
create mode 100644 app/assets/javascripts/strophejs-1.0.1/examples/attach/urls.py
create mode 100644 app/assets/javascripts/strophejs-1.0.1/examples/basic.html
create mode 100644 app/assets/javascripts/strophejs-1.0.1/examples/basic.js
create mode 100644 app/assets/javascripts/strophejs-1.0.1/examples/crossdomain.html
create mode 100644 app/assets/javascripts/strophejs-1.0.1/examples/crossdomain.js
create mode 100644 app/assets/javascripts/strophejs-1.0.1/examples/crossdomain.xml
create mode 100644 app/assets/javascripts/strophejs-1.0.1/examples/dojo-ping.html
create mode 100644 app/assets/javascripts/strophejs-1.0.1/examples/dojo-ping.js
create mode 100644 app/assets/javascripts/strophejs-1.0.1/examples/echobot.html
create mode 100644 app/assets/javascripts/strophejs-1.0.1/examples/echobot.js
create mode 100644 app/assets/javascripts/strophejs-1.0.1/examples/prebind.html
create mode 100644 app/assets/javascripts/strophejs-1.0.1/examples/prebind.js
create mode 100644 app/assets/javascripts/strophejs-1.0.1/examples/prototype-ping.html
create mode 100644 app/assets/javascripts/strophejs-1.0.1/examples/prototype-ping.js
create mode 100644 app/assets/javascripts/strophejs-1.0.1/examples/yui-ping.html
create mode 100644 app/assets/javascripts/strophejs-1.0.1/examples/yui-ping.js
create mode 100644 app/assets/javascripts/strophejs-1.0.1/plugins/strophe.flxhr.js
create mode 100644 app/assets/javascripts/strophejs-1.0.1/plugins/strophe.flxhr.min.js
create mode 100644 app/assets/javascripts/strophejs-1.0.1/plugins/strophe.pubsub.js
create mode 100644 app/assets/javascripts/strophejs-1.0.1/plugins/strophe.pubsub.min.js
create mode 100644 app/assets/javascripts/strophejs-1.0.1/strophe.js
create mode 100644 app/assets/javascripts/strophejs-1.0.1/strophe.min.js
create mode 100644 app/assets/javascripts/strophejs-1.0.1/tests/jstests.js
create mode 100644 app/assets/javascripts/strophejs-1.0.1/tests/jsyuitests.js
create mode 100644 app/assets/javascripts/strophejs-1.0.1/tests/pubsub.html
create mode 100644 app/assets/javascripts/strophejs-1.0.1/tests/pubsub.js
create mode 100644 app/assets/javascripts/strophejs-1.0.1/tests/strophe.html
create mode 100644 app/assets/javascripts/strophejs-1.0.1/tests/testrunner.js
create mode 100644 app/assets/javascripts/strophejs-1.0.1/tests/tests.js
create mode 100644 app/assets/javascripts/strophejs-1.0.1/tests/testsuite.css
create mode 100644 app/assets/javascripts/strophejs-1.0.1/tests/yuitests.html
create mode 100644 app/assets/javascripts/strophejs-1.0.1/tests/yuitests.js
create mode 100644 app/assets/javascripts/tasks.js
create mode 100644 app/assets/javascripts/thickbox.js
create mode 100644 app/assets/javascripts/tinymce/changelog.txt
create mode 100644 app/assets/javascripts/tinymce/examples/accessibility.html
create mode 100644 app/assets/javascripts/tinymce/examples/css/content.css
create mode 100644 app/assets/javascripts/tinymce/examples/css/word.css
create mode 100644 app/assets/javascripts/tinymce/examples/custom_formats.html
create mode 100644 app/assets/javascripts/tinymce/examples/full.html
create mode 100644 app/assets/javascripts/tinymce/examples/index.html
create mode 100644 app/assets/javascripts/tinymce/examples/lists/image_list.js
create mode 100644 app/assets/javascripts/tinymce/examples/lists/link_list.js
create mode 100644 app/assets/javascripts/tinymce/examples/lists/media_list.js
create mode 100644 app/assets/javascripts/tinymce/examples/lists/template_list.js
create mode 100644 app/assets/javascripts/tinymce/examples/media/logo.jpg
create mode 100644 app/assets/javascripts/tinymce/examples/media/logo_over.jpg
create mode 100644 app/assets/javascripts/tinymce/examples/media/sample.avi
create mode 100644 app/assets/javascripts/tinymce/examples/media/sample.dcr
create mode 100644 app/assets/javascripts/tinymce/examples/media/sample.flv
create mode 100644 app/assets/javascripts/tinymce/examples/media/sample.mov
create mode 100644 app/assets/javascripts/tinymce/examples/media/sample.ram
create mode 100644 app/assets/javascripts/tinymce/examples/media/sample.rm
create mode 100644 app/assets/javascripts/tinymce/examples/media/sample.swf
create mode 100644 app/assets/javascripts/tinymce/examples/menu.html
create mode 100644 app/assets/javascripts/tinymce/examples/simple.html
create mode 100644 app/assets/javascripts/tinymce/examples/skins.html
create mode 100644 app/assets/javascripts/tinymce/examples/templates/layout1.htm
create mode 100644 app/assets/javascripts/tinymce/examples/templates/snippet1.htm
create mode 100644 app/assets/javascripts/tinymce/examples/translate.html
create mode 100644 app/assets/javascripts/tinymce/examples/word.html
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/langs/de.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/langs/en.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/langs/eo.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/langs/es.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/langs/fr.js
create mode 120000 app/assets/javascripts/tinymce/jscripts/tiny_mce/langs/hy.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/langs/it.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/langs/ja.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/langs/nl.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/langs/pt.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/langs/ru.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/license.txt
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/advhr/css/advhr.css
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/advhr/editor_plugin.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/advhr/editor_plugin_src.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/advhr/js/rule.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/advhr/langs/de_dlg.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/advhr/langs/en_dlg.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/advhr/langs/eo_dlg.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/advhr/langs/es_dlg.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/advhr/langs/fr_dlg.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/advhr/langs/ja_dlg.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/advhr/langs/nl_dlg.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/advhr/langs/pt_dlg.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/advhr/langs/ru_dlg.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/advhr/rule.htm
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/advimage/css/advimage.css
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/advimage/editor_plugin.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/advimage/editor_plugin_src.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/advimage/image.htm
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/advimage/img/sample.gif
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/advimage/js/image.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/advimage/langs/de_dlg.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/advimage/langs/en_dlg.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/advimage/langs/eo_dlg.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/advimage/langs/es_dlg.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/advimage/langs/fr_dlg.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/advimage/langs/ja_dlg.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/advimage/langs/nl_dlg.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/advimage/langs/pt_dlg.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/advimage/langs/ru_dlg.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/advlink/css/advlink.css
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/advlink/editor_plugin.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/advlink/editor_plugin_src.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/advlink/js/advlink.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/advlink/langs/de_dlg.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/advlink/langs/en_dlg.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/advlink/langs/eo_dlg.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/advlink/langs/es_dlg.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/advlink/langs/fr_dlg.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/advlink/langs/ja_dlg.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/advlink/langs/nl_dlg.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/advlink/langs/pt_dlg.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/advlink/langs/ru_dlg.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/advlink/link.htm
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/advlist/editor_plugin.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/advlist/editor_plugin_src.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/autolink/editor_plugin.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/autolink/editor_plugin_src.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/autoresize/editor_plugin.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/autoresize/editor_plugin_src.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/autosave/editor_plugin.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/autosave/editor_plugin_src.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/autosave/langs/en.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/bbcode/editor_plugin.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/bbcode/editor_plugin_src.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/contextmenu/editor_plugin.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/contextmenu/editor_plugin_src.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/directionality/editor_plugin.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/directionality/editor_plugin_src.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/emotions/editor_plugin.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/emotions/editor_plugin_src.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/emotions/emotions.htm
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-cool.gif
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-cry.gif
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-embarassed.gif
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-foot-in-mouth.gif
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-frown.gif
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-innocent.gif
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-kiss.gif
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-laughing.gif
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-money-mouth.gif
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-sealed.gif
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-smile.gif
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-surprised.gif
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-tongue-out.gif
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-undecided.gif
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-wink.gif
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-yell.gif
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/emotions/js/emotions.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/emotions/langs/de_dlg.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/emotions/langs/en_dlg.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/emotions/langs/eo_dlg.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/emotions/langs/es_dlg.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/emotions/langs/fr_dlg.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/emotions/langs/ja_dlg.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/emotions/langs/nl_dlg.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/emotions/langs/pt_dlg.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/emotions/langs/ru_dlg.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/example/dialog.htm
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/example/editor_plugin.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/example/editor_plugin_src.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/example/img/example.gif
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/example/js/dialog.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/example/langs/en.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/example/langs/en_dlg.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/fullpage/css/fullpage.css
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/fullpage/editor_plugin.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/fullpage/editor_plugin_src.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/fullpage/fullpage.htm
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/fullpage/js/fullpage.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/de_dlg.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/en_dlg.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/eo_dlg.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/es_dlg.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/fr_dlg.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/ja_dlg.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/nl_dlg.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/pt_dlg.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/ru_dlg.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/fullscreen/editor_plugin.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/fullscreen/editor_plugin_src.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/fullscreen/fullscreen.htm
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/iespell/editor_plugin.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/iespell/editor_plugin_src.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/inlinepopups/editor_plugin.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/inlinepopups/editor_plugin_src.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/alert.gif
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/button.gif
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/buttons.gif
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/confirm.gif
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/corners.gif
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/horizontal.gif
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/vertical.gif
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/window.css
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/inlinepopups/template.htm
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/insertdatetime/editor_plugin.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/insertdatetime/editor_plugin_src.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/layer/editor_plugin.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/layer/editor_plugin_src.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/legacyoutput/editor_plugin.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/legacyoutput/editor_plugin_src.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/lists/editor_plugin.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/lists/editor_plugin_src.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/media/css/content.css
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/media/css/media.css
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/media/editor_plugin.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/media/editor_plugin_src.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/media/img/flash.gif
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/media/img/flv_player.swf
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/media/img/quicktime.gif
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/media/img/realmedia.gif
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/media/img/shockwave.gif
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/media/img/trans.gif
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/media/img/windowsmedia.gif
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/media/js/embed.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/media/js/media.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/media/langs/de_dlg.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/media/langs/en_dlg.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/media/langs/eo_dlg.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/media/langs/es_dlg.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/media/langs/fr_dlg.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/media/langs/ja_dlg.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/media/langs/nl_dlg.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/media/langs/pt_dlg.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/media/langs/ru_dlg.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/media/media.htm
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/media/moxieplayer.swf
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/nonbreaking/editor_plugin.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/nonbreaking/editor_plugin_src.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/noneditable/editor_plugin.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/noneditable/editor_plugin_src.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/pagebreak/css/content.css
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/pagebreak/editor_plugin.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/pagebreak/editor_plugin_src.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/pagebreak/img/pagebreak.gif
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/pagebreak/img/trans.gif
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/paste/editor_plugin.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/paste/editor_plugin_src.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/paste/js/pastetext.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/paste/js/pasteword.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/paste/langs/de_dlg.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/paste/langs/en_dlg.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/paste/langs/eo_dlg.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/paste/langs/es_dlg.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/paste/langs/fr_dlg.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/paste/langs/ja_dlg.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/paste/langs/nl_dlg.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/paste/langs/pt_dlg.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/paste/langs/ru_dlg.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/paste/pastetext.htm
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/paste/pasteword.htm
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/preview/editor_plugin.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/preview/editor_plugin_src.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/preview/example.html
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/preview/jscripts/embed.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/preview/preview.html
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/print/editor_plugin.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/print/editor_plugin_src.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/safari/blank.htm
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/safari/editor_plugin.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/safari/editor_plugin_src.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/save/editor_plugin.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/save/editor_plugin_src.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/searchreplace/css/searchreplace.css
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/searchreplace/editor_plugin.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/searchreplace/editor_plugin_src.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/searchreplace/js/searchreplace.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/de_dlg.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/en_dlg.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/eo_dlg.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/es_dlg.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/fr_dlg.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/ja_dlg.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/nl_dlg.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/pt_dlg.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/ru_dlg.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/searchreplace/searchreplace.htm
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/spellchecker/css/content.css
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/spellchecker/editor_plugin.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/spellchecker/editor_plugin_src.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/spellchecker/img/wline.gif
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/style/css/props.css
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/style/editor_plugin.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/style/editor_plugin_src.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/style/js/props.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/style/langs/de_dlg.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/style/langs/en_dlg.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/style/langs/eo_dlg.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/style/langs/es_dlg.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/style/langs/fr_dlg.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/style/langs/ja_dlg.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/style/langs/nl_dlg.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/style/langs/pt_dlg.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/style/langs/ru_dlg.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/style/props.htm
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/tabfocus/editor_plugin.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/tabfocus/editor_plugin_src.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/table/cell.htm
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/table/css/cell.css
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/table/css/row.css
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/table/css/table.css
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/table/editor_plugin.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/table/editor_plugin_src.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/table/js/cell.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/table/js/merge_cells.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/table/js/row.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/table/js/table.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/table/langs/de_dlg.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/table/langs/en_dlg.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/table/langs/eo_dlg.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/table/langs/es_dlg.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/table/langs/fr_dlg.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/table/langs/ja_dlg.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/table/langs/nl_dlg.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/table/langs/pt_dlg.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/table/langs/ru_dlg.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/table/merge_cells.htm
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/table/row.htm
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/table/table.htm
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/template/blank.htm
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/template/css/template.css
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/template/editor_plugin.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/template/editor_plugin_src.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/template/js/template.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/template/langs/de_dlg.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/template/langs/en_dlg.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/template/langs/eo_dlg.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/template/langs/es_dlg.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/template/langs/fr_dlg.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/template/langs/ja_dlg.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/template/langs/nl_dlg.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/template/langs/pt_dlg.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/template/langs/ru_dlg.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/template/template.htm
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/visualchars/editor_plugin.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/visualchars/editor_plugin_src.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/wordcount/editor_plugin.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/wordcount/editor_plugin_src.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/abbr.htm
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/acronym.htm
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/attributes.htm
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/cite.htm
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/css/attributes.css
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/css/popup.css
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/del.htm
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/editor_plugin.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/editor_plugin_src.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/ins.htm
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/js/abbr.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/js/acronym.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/js/attributes.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/js/cite.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/js/del.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/js/element_common.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/js/ins.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/de_dlg.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/en_dlg.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/eo_dlg.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/es_dlg.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/fr_dlg.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/ja_dlg.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/nl_dlg.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/pt_dlg.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/ru_dlg.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/about.htm
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/anchor.htm
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/charmap.htm
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/color_picker.htm
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/editor_template.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/editor_template_src.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/image.htm
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/img/colorpicker.jpg
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/img/flash.gif
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/img/icons.gif
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/img/iframe.gif
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/img/pagebreak.gif
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/img/quicktime.gif
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/img/realmedia.gif
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/img/shockwave.gif
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/img/trans.gif
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/img/video.gif
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/img/windowsmedia.gif
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/js/about.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/js/anchor.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/js/charmap.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/js/color_picker.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/js/image.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/js/link.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/js/source_editor.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/langs/de.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/langs/de_dlg.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/langs/en.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/langs/en_dlg.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/langs/eo.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/langs/eo_dlg.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/langs/es.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/langs/es_dlg.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/langs/fr.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/langs/fr_dlg.js
create mode 120000 app/assets/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/langs/hy.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/langs/it.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/langs/it_dlg.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/langs/ja.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/langs/ja_dlg.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/langs/nl.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/langs/nl_dlg.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/langs/pt.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/langs/pt_dlg.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/langs/ru.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/langs/ru_dlg.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/link.htm
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/shortcuts.htm
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/content.css
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/dialog.css
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/img/buttons.png
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/img/items.gif
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/img/menu_arrow.gif
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/img/menu_check.gif
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/img/progress.gif
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/img/tabs.gif
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/ui.css
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/skins/highcontrast/content.css
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/skins/highcontrast/dialog.css
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/skins/highcontrast/ui.css
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/content.css
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/dialog.css
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/img/button_bg.png
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/img/button_bg_black.png
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/img/button_bg_silver.png
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/ui.css
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/ui_black.css
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/ui_silver.css
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/source_editor.htm
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/themes/simple/editor_template.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/themes/simple/editor_template_src.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/themes/simple/img/icons.gif
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/themes/simple/langs/de.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/themes/simple/langs/en.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/themes/simple/langs/eo.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/themes/simple/langs/es.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/themes/simple/langs/fr.js
create mode 120000 app/assets/javascripts/tinymce/jscripts/tiny_mce/themes/simple/langs/hy.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/themes/simple/langs/it.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/themes/simple/langs/ja.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/themes/simple/langs/nl.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/themes/simple/langs/pt.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/themes/simple/langs/ru.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/themes/simple/skins/default/content.css
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/themes/simple/skins/default/ui.css
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/themes/simple/skins/o2k7/content.css
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/themes/simple/skins/o2k7/img/button_bg.png
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/themes/simple/skins/o2k7/ui.css
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/tiny_mce.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/tiny_mce_popup.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/tiny_mce_src.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/utils/editable_selects.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/utils/form_utils.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/utils/mctabs.js
create mode 100644 app/assets/javascripts/tinymce/jscripts/tiny_mce/utils/validate.js
create mode 100644 app/assets/stylesheets/application.css
create mode 100644 app/assets/stylesheets/calendar_date_select/blue.css
create mode 100644 app/assets/stylesheets/calendar_date_select/default.css
create mode 100644 app/assets/stylesheets/calendar_date_select/plain.css
create mode 100644 app/assets/stylesheets/calendar_date_select/red.css
create mode 100644 app/assets/stylesheets/calendar_date_select/silver.css
create mode 100644 app/assets/stylesheets/colorbox.css
create mode 100644 app/assets/stylesheets/colorpicker.css
create mode 100644 app/assets/stylesheets/fancybox.css
create mode 100755 app/assets/stylesheets/iepngfix/blank.gif
create mode 100644 app/assets/stylesheets/iepngfix/iepngfix.css
create mode 100755 app/assets/stylesheets/iepngfix/iepngfix.htc
create mode 100644 app/assets/stylesheets/jquery.ui/redmond/images/ui-anim_basic_16x16.gif
create mode 100644 app/assets/stylesheets/jquery.ui/redmond/images/ui-bg_flat_0_aaaaaa_40x100.png
create mode 100644 app/assets/stylesheets/jquery.ui/redmond/images/ui-bg_flat_55_fbec88_40x100.png
create mode 100644 app/assets/stylesheets/jquery.ui/redmond/images/ui-bg_glass_75_d0e5f5_1x400.png
create mode 100644 app/assets/stylesheets/jquery.ui/redmond/images/ui-bg_glass_85_dfeffc_1x400.png
create mode 100644 app/assets/stylesheets/jquery.ui/redmond/images/ui-bg_glass_95_fef1ec_1x400.png
create mode 100644 app/assets/stylesheets/jquery.ui/redmond/images/ui-bg_gloss-wave_55_5c9ccc_500x100.png
create mode 100644 app/assets/stylesheets/jquery.ui/redmond/images/ui-bg_inset-hard_100_f5f8f9_1x100.png
create mode 100644 app/assets/stylesheets/jquery.ui/redmond/images/ui-bg_inset-hard_100_fcfdfd_1x100.png
create mode 100644 app/assets/stylesheets/jquery.ui/redmond/images/ui-icons_217bc0_256x240.png
create mode 100644 app/assets/stylesheets/jquery.ui/redmond/images/ui-icons_2e83ff_256x240.png
create mode 100644 app/assets/stylesheets/jquery.ui/redmond/images/ui-icons_469bdd_256x240.png
create mode 100644 app/assets/stylesheets/jquery.ui/redmond/images/ui-icons_6da8d5_256x240.png
create mode 100644 app/assets/stylesheets/jquery.ui/redmond/images/ui-icons_cd0a0a_256x240.png
create mode 100644 app/assets/stylesheets/jquery.ui/redmond/images/ui-icons_d8e7f3_256x240.png
create mode 100644 app/assets/stylesheets/jquery.ui/redmond/images/ui-icons_f9bd01_256x240.png
create mode 100644 app/assets/stylesheets/jquery.ui/redmond/jquery-ui-1.8.2.custom.css
create mode 100644 app/assets/stylesheets/jquery.ui/smoothness/images/ui-anim_basic_16x16.gif
create mode 100644 app/assets/stylesheets/jquery.ui/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png
create mode 100644 app/assets/stylesheets/jquery.ui/smoothness/images/ui-bg_flat_75_ffffff_40x100.png
create mode 100644 app/assets/stylesheets/jquery.ui/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png
create mode 100644 app/assets/stylesheets/jquery.ui/smoothness/images/ui-bg_glass_65_ffffff_1x400.png
create mode 100644 app/assets/stylesheets/jquery.ui/smoothness/images/ui-bg_glass_75_dadada_1x400.png
create mode 100644 app/assets/stylesheets/jquery.ui/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png
create mode 100644 app/assets/stylesheets/jquery.ui/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png
create mode 100644 app/assets/stylesheets/jquery.ui/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png
create mode 100644 app/assets/stylesheets/jquery.ui/smoothness/images/ui-icons_222222_256x240.png
create mode 100644 app/assets/stylesheets/jquery.ui/smoothness/images/ui-icons_2e83ff_256x240.png
create mode 100644 app/assets/stylesheets/jquery.ui/smoothness/images/ui-icons_454545_256x240.png
create mode 100644 app/assets/stylesheets/jquery.ui/smoothness/images/ui-icons_888888_256x240.png
create mode 100644 app/assets/stylesheets/jquery.ui/smoothness/images/ui-icons_cd0a0a_256x240.png
create mode 100644 app/assets/stylesheets/jquery.ui/smoothness/jquery-ui-1.8.2.custom.css
create mode 100644 app/assets/stylesheets/jquery.ui/smoothness_mod/images/ui-anim_basic_16x16.gif
create mode 100644 app/assets/stylesheets/jquery.ui/smoothness_mod/images/ui-bg_flat_0_aaaaaa_40x100.png
create mode 100644 app/assets/stylesheets/jquery.ui/smoothness_mod/images/ui-bg_flat_75_ffffff_40x100.png
create mode 100644 app/assets/stylesheets/jquery.ui/smoothness_mod/images/ui-bg_glass_55_fbf9ee_1x400.png
create mode 100644 app/assets/stylesheets/jquery.ui/smoothness_mod/images/ui-bg_glass_65_ffffff_1x400.png
create mode 100644 app/assets/stylesheets/jquery.ui/smoothness_mod/images/ui-bg_glass_75_dadada_1x400.png
create mode 100644 app/assets/stylesheets/jquery.ui/smoothness_mod/images/ui-bg_glass_75_e6e6e6_1x400.png
create mode 100644 app/assets/stylesheets/jquery.ui/smoothness_mod/images/ui-bg_glass_95_fef1ec_1x400.png
create mode 100644 app/assets/stylesheets/jquery.ui/smoothness_mod/images/ui-bg_highlight-soft_75_cccccc_1x100.png
create mode 100644 app/assets/stylesheets/jquery.ui/smoothness_mod/images/ui-icons_222222_256x240.png
create mode 100644 app/assets/stylesheets/jquery.ui/smoothness_mod/images/ui-icons_2e83ff_256x240.png
create mode 100644 app/assets/stylesheets/jquery.ui/smoothness_mod/images/ui-icons_454545_256x240.png
create mode 100644 app/assets/stylesheets/jquery.ui/smoothness_mod/images/ui-icons_888888_256x240.png
create mode 100644 app/assets/stylesheets/jquery.ui/smoothness_mod/images/ui-icons_cd0a0a_256x240.png
create mode 100644 app/assets/stylesheets/jquery.ui/smoothness_mod/jquery-ui-1.8.2.custom.css
create mode 100644 app/assets/stylesheets/jquery.ui/south-street/images/ui-anim_basic_16x16.gif
create mode 100644 app/assets/stylesheets/jquery.ui/south-street/images/ui-bg_glass_55_fcf0ba_1x400.png
create mode 100644 app/assets/stylesheets/jquery.ui/south-street/images/ui-bg_gloss-wave_100_ece8da_500x100.png
create mode 100644 app/assets/stylesheets/jquery.ui/south-street/images/ui-bg_highlight-hard_100_f5f3e5_1x100.png
create mode 100644 app/assets/stylesheets/jquery.ui/south-street/images/ui-bg_highlight-hard_100_fafaf4_1x100.png
create mode 100644 app/assets/stylesheets/jquery.ui/south-street/images/ui-bg_highlight-hard_15_459e00_1x100.png
create mode 100644 app/assets/stylesheets/jquery.ui/south-street/images/ui-bg_highlight-hard_95_cccccc_1x100.png
create mode 100644 app/assets/stylesheets/jquery.ui/south-street/images/ui-bg_highlight-soft_25_67b021_1x100.png
create mode 100644 app/assets/stylesheets/jquery.ui/south-street/images/ui-bg_highlight-soft_95_ffedad_1x100.png
create mode 100644 app/assets/stylesheets/jquery.ui/south-street/images/ui-bg_inset-soft_15_2b2922_1x100.png
create mode 100644 app/assets/stylesheets/jquery.ui/south-street/images/ui-icons_808080_256x240.png
create mode 100644 app/assets/stylesheets/jquery.ui/south-street/images/ui-icons_847e71_256x240.png
create mode 100644 app/assets/stylesheets/jquery.ui/south-street/images/ui-icons_8dc262_256x240.png
create mode 100644 app/assets/stylesheets/jquery.ui/south-street/images/ui-icons_cd0a0a_256x240.png
create mode 100644 app/assets/stylesheets/jquery.ui/south-street/images/ui-icons_eeeeee_256x240.png
create mode 100644 app/assets/stylesheets/jquery.ui/south-street/images/ui-icons_ffffff_256x240.png
create mode 100644 app/assets/stylesheets/jquery.ui/south-street/jquery-ui-1.8.2.custom.css
create mode 100644 app/assets/stylesheets/jquery.ui/sunny-mod/images/ui-anim_basic_16x16.gif
create mode 100644 app/assets/stylesheets/jquery.ui/sunny-mod/images/ui-bg_diagonals-medium_20_d34d17_40x40.png
create mode 100644 app/assets/stylesheets/jquery.ui/sunny-mod/images/ui-bg_flat_30_cccccc_40x100.png
create mode 100644 app/assets/stylesheets/jquery.ui/sunny-mod/images/ui-bg_flat_50_5c5c5c_40x100.png
create mode 100644 app/assets/stylesheets/jquery.ui/sunny-mod/images/ui-bg_gloss-wave_30_888a85_500x100.png
create mode 100644 app/assets/stylesheets/jquery.ui/sunny-mod/images/ui-bg_gloss-wave_45_918e88_500x100.png
create mode 100644 app/assets/stylesheets/jquery.ui/sunny-mod/images/ui-bg_gloss-wave_60_fece2f_500x100.png
create mode 100644 app/assets/stylesheets/jquery.ui/sunny-mod/images/ui-bg_gloss-wave_70_ffdd57_500x100.png
create mode 100644 app/assets/stylesheets/jquery.ui/sunny-mod/images/ui-bg_gloss-wave_90_fff9e5_500x100.png
create mode 100644 app/assets/stylesheets/jquery.ui/sunny-mod/images/ui-bg_highlight-soft_0_feeebd_1x100.png
create mode 100644 app/assets/stylesheets/jquery.ui/sunny-mod/images/ui-bg_highlight-soft_70_feeebd_1x100.png
create mode 100644 app/assets/stylesheets/jquery.ui/sunny-mod/images/ui-bg_inset-soft_30_feeebd_1x100.png
create mode 100644 app/assets/stylesheets/jquery.ui/sunny-mod/images/ui-bg_inset-soft_70_feeebd_1x100.png
create mode 100644 app/assets/stylesheets/jquery.ui/sunny-mod/images/ui-icons_3d3d3d_256x240.png
create mode 100644 app/assets/stylesheets/jquery.ui/sunny-mod/images/ui-icons_bd7b00_256x240.png
create mode 100644 app/assets/stylesheets/jquery.ui/sunny-mod/images/ui-icons_d19405_256x240.png
create mode 100644 app/assets/stylesheets/jquery.ui/sunny-mod/images/ui-icons_eb990f_256x240.png
create mode 100644 app/assets/stylesheets/jquery.ui/sunny-mod/images/ui-icons_ed9f26_256x240.png
create mode 100644 app/assets/stylesheets/jquery.ui/sunny-mod/images/ui-icons_fadc7a_256x240.png
create mode 100644 app/assets/stylesheets/jquery.ui/sunny-mod/images/ui-icons_ffe180_256x240.png
create mode 100644 app/assets/stylesheets/jquery.ui/sunny-mod/jquery-ui-1.8.2.custom.css
create mode 100644 app/assets/stylesheets/jquery.ui/sunny/images/ui-anim_basic_16x16.gif
create mode 100644 app/assets/stylesheets/jquery.ui/sunny/images/ui-bg_diagonals-medium_20_d34d17_40x40.png
create mode 100644 app/assets/stylesheets/jquery.ui/sunny/images/ui-bg_flat_30_cccccc_40x100.png
create mode 100644 app/assets/stylesheets/jquery.ui/sunny/images/ui-bg_flat_50_5c5c5c_40x100.png
create mode 100644 app/assets/stylesheets/jquery.ui/sunny/images/ui-bg_gloss-wave_45_817865_500x100.png
create mode 100644 app/assets/stylesheets/jquery.ui/sunny/images/ui-bg_gloss-wave_60_fece2f_500x100.png
create mode 100644 app/assets/stylesheets/jquery.ui/sunny/images/ui-bg_gloss-wave_70_ffdd57_500x100.png
create mode 100644 app/assets/stylesheets/jquery.ui/sunny/images/ui-bg_gloss-wave_90_fff9e5_500x100.png
create mode 100644 app/assets/stylesheets/jquery.ui/sunny/images/ui-bg_highlight-soft_100_feeebd_1x100.png
create mode 100644 app/assets/stylesheets/jquery.ui/sunny/images/ui-bg_inset-soft_30_ffffff_1x100.png
create mode 100644 app/assets/stylesheets/jquery.ui/sunny/images/ui-icons_3d3d3d_256x240.png
create mode 100644 app/assets/stylesheets/jquery.ui/sunny/images/ui-icons_bd7b00_256x240.png
create mode 100644 app/assets/stylesheets/jquery.ui/sunny/images/ui-icons_d19405_256x240.png
create mode 100644 app/assets/stylesheets/jquery.ui/sunny/images/ui-icons_eb990f_256x240.png
create mode 100644 app/assets/stylesheets/jquery.ui/sunny/images/ui-icons_ed9f26_256x240.png
create mode 100644 app/assets/stylesheets/jquery.ui/sunny/images/ui-icons_fadc7a_256x240.png
create mode 100644 app/assets/stylesheets/jquery.ui/sunny/images/ui-icons_ffe180_256x240.png
create mode 100644 app/assets/stylesheets/jquery.ui/sunny/jquery-ui-1.8.2.custom.css
create mode 100644 app/assets/stylesheets/lightbox.css
create mode 100644 app/assets/stylesheets/search.css
create mode 100644 app/assets/stylesheets/slideshow.css
create mode 100644 app/assets/stylesheets/tasks.css
create mode 100644 app/assets/stylesheets/thickbox.css
create mode 100644 app/assets/stylesheets/tinymce.css
create mode 100644 app/assets/stylesheets/token-input-facebook.css
create mode 100644 app/assets/stylesheets/token-input-facet.css
create mode 100644 app/assets/stylesheets/token-input-mac.css
create mode 100644 app/assets/stylesheets/token-input.css
delete mode 100644 public/images/balloon-footer.png
delete mode 100644 public/images/balloon-header.png
delete mode 100644 public/images/balloon-middle.png
delete mode 100644 public/images/beta.gif
delete mode 100644 public/images/black-alpha-pixel-5.png
delete mode 100644 public/images/black-alpha-pixel.png
delete mode 100644 public/images/blocks/1.png
delete mode 100644 public/images/blocks/1.svg
delete mode 100644 public/images/blocks/2.png
delete mode 100644 public/images/blocks/2.svg
delete mode 100644 public/images/blocks/3.png
delete mode 100644 public/images/blocks/3.svg
delete mode 100644 public/images/bolota.gif
delete mode 100644 public/images/borda-esq-aba-azul.gif
delete mode 100644 public/images/bt-bookmark.gif
delete mode 100644 public/images/calendar_date_select/calendar.gif
delete mode 100644 public/images/calendar_date_select/calendar.png
delete mode 100644 public/images/catalog-expanders.png
delete mode 100644 public/images/ccc.gif
delete mode 100644 public/images/colorbox/border.png
delete mode 100644 public/images/colorbox/controls.png
delete mode 100644 public/images/colorbox/ie6/borderBottomCenter.png
delete mode 100644 public/images/colorbox/ie6/borderBottomLeft.png
delete mode 100644 public/images/colorbox/ie6/borderBottomRight.png
delete mode 100644 public/images/colorbox/ie6/borderMiddleLeft.png
delete mode 100644 public/images/colorbox/ie6/borderMiddleRight.png
delete mode 100644 public/images/colorbox/ie6/borderTopCenter.png
delete mode 100644 public/images/colorbox/ie6/borderTopLeft.png
delete mode 100644 public/images/colorbox/ie6/borderTopRight.png
delete mode 100644 public/images/colorbox/loading.gif
delete mode 100644 public/images/colorbox/loading_background.png
delete mode 100644 public/images/colorbox/overlay.png
delete mode 100644 public/images/colorpicker/apply.png
delete mode 100644 public/images/colorpicker/gradiente.png
delete mode 100644 public/images/colorpicker/indic.gif
delete mode 100644 public/images/colorpicker/overlay.png
delete mode 100644 public/images/colorpicker/select.gif
delete mode 100644 public/images/comment-owner-bg-L.png
delete mode 100644 public/images/comment-owner-bg-N.png
delete mode 100644 public/images/comment-owner-bg-NL.png
delete mode 100644 public/images/comment-owner-bg-NO.png
delete mode 100644 public/images/comment-owner-bg-O.png
delete mode 100644 public/images/comment-owner-bg-S.png
delete mode 100644 public/images/comment-owner-bg-SL.png
delete mode 100644 public/images/comment-owner-bg-SO.png
delete mode 100644 public/images/comment-reply-owner-bg.png
delete mode 100644 public/images/control-panel/Makefile
delete mode 100644 public/images/control-panel/application-certificate.gif
delete mode 100644 public/images/control-panel/application-certificate.png
delete mode 100644 public/images/control-panel/application-certificate.svg
delete mode 100644 public/images/control-panel/blocks.gif
delete mode 100644 public/images/control-panel/blocks.png
delete mode 100644 public/images/control-panel/blocks.svg
delete mode 100644 public/images/control-panel/contact.gif
delete mode 100644 public/images/control-panel/contact.png
delete mode 100644 public/images/control-panel/contact.svg
delete mode 100644 public/images/control-panel/edit-profile-enterprise.gif
delete mode 100644 public/images/control-panel/edit-profile-enterprise.png
delete mode 100644 public/images/control-panel/edit-profile-enterprise.svg
delete mode 100644 public/images/control-panel/edit-profile-group.gif
delete mode 100644 public/images/control-panel/edit-profile-group.png
delete mode 100644 public/images/control-panel/edit-profile-group.svg
delete mode 100644 public/images/control-panel/edit-profile.gif
delete mode 100644 public/images/control-panel/edit-profile.png
delete mode 100644 public/images/control-panel/edit-profile.svg
delete mode 100644 public/images/control-panel/editpaste.gif
delete mode 100644 public/images/control-panel/editpaste.png
delete mode 120000 public/images/control-panel/editpaste.svg
delete mode 100644 public/images/control-panel/email.gif
delete mode 100644 public/images/control-panel/email.png
delete mode 120000 public/images/control-panel/email.svg
delete mode 100644 public/images/control-panel/emblem-favorite.gif
delete mode 100644 public/images/control-panel/emblem-favorite.png
delete mode 120000 public/images/control-panel/emblem-favorite.svg
delete mode 100644 public/images/control-panel/header-footer.gif
delete mode 100644 public/images/control-panel/header-footer.png
delete mode 100644 public/images/control-panel/header-footer.svg
delete mode 100644 public/images/control-panel/important.gif
delete mode 100644 public/images/control-panel/important.png
delete mode 120000 public/images/control-panel/important.svg
delete mode 100644 public/images/control-panel/mail-mark-junk.png
delete mode 100644 public/images/control-panel/mail-mark-junk.svg
delete mode 100644 public/images/control-panel/package.gif
delete mode 100644 public/images/control-panel/package.png
delete mode 100644 public/images/control-panel/package.svg
delete mode 100644 public/images/control-panel/password.gif
delete mode 100644 public/images/control-panel/password.png
delete mode 120000 public/images/control-panel/password.svg
delete mode 100644 public/images/control-panel/preferences-desktop-wallpaper.gif
delete mode 100644 public/images/control-panel/preferences-desktop-wallpaper.png
delete mode 120000 public/images/control-panel/preferences-desktop-wallpaper.svg
delete mode 100644 public/images/control-panel/set-geolocation.gif
delete mode 100644 public/images/control-panel/set-geolocation.png
delete mode 100644 public/images/control-panel/stop.gif
delete mode 100644 public/images/control-panel/stop.png
delete mode 100644 public/images/control-panel/stop.svg
delete mode 100644 public/images/control-panel/system-file-manager.gif
delete mode 100644 public/images/control-panel/system-file-manager.png
delete mode 120000 public/images/control-panel/system-file-manager.svg
delete mode 100644 public/images/control-panel/system-users.gif
delete mode 100644 public/images/control-panel/system-users.png
delete mode 120000 public/images/control-panel/system-users.svg
delete mode 100644 public/images/control-panel/text-editor-disabled.gif
delete mode 120000 public/images/control-panel/text-editor-disabled.png
delete mode 120000 public/images/control-panel/text-editor-disabled.svg
delete mode 100644 public/images/control-panel/text-editor.gif
delete mode 100644 public/images/control-panel/text-editor.png
delete mode 120000 public/images/control-panel/text-editor.svg
delete mode 100644 public/images/doc/activation-conlusion.en.png
delete mode 100644 public/images/doc/activation-conlusion.pt.png
delete mode 100644 public/images/doc/activation-question.en.png
delete mode 100644 public/images/doc/activation-question.pt.png
delete mode 100644 public/images/doc/add-member-enterprise.en.png
delete mode 100644 public/images/doc/add-member-enterprise.pt.png
delete mode 100644 public/images/doc/admin-panel-export-users.en.png
delete mode 100644 public/images/doc/admin-panel-export-users.pt.png
delete mode 100644 public/images/doc/admin-panel-manage-users.en.png
delete mode 100644 public/images/doc/admin-panel-manage-users.pt.png
delete mode 100644 public/images/doc/admin-panel-send-email.en.png
delete mode 100644 public/images/doc/admin-panel-send-email.pt.png
delete mode 100644 public/images/doc/admin-send-email.en.png
delete mode 100644 public/images/doc/admin-send-email.pt.png
delete mode 100644 public/images/doc/advanced-article-archives-list.en.png
delete mode 100644 public/images/doc/advanced-article-archives-list.pt.png
delete mode 100644 public/images/doc/advanced-article-created-link.en.png
delete mode 100644 public/images/doc/advanced-article-created-link.pt.png
delete mode 100644 public/images/doc/advanced-article-created-object.en.png
delete mode 100644 public/images/doc/advanced-article-created-object.pt.png
delete mode 100644 public/images/doc/advanced-article-insert-html.en.png
delete mode 100644 public/images/doc/advanced-article-insert-html.pt.png
delete mode 100644 public/images/doc/advanced-article-insert-links.en.png
delete mode 100644 public/images/doc/advanced-article-insert-links.pt.png
delete mode 100644 public/images/doc/advanced-article-popup-insert-html.en.png
delete mode 100644 public/images/doc/advanced-article-popup-insert-html.pt.png
delete mode 100644 public/images/doc/advanced-article-popup-insert-link.en.png
delete mode 100644 public/images/doc/advanced-article-popup-insert-link.pt.png
delete mode 100644 public/images/doc/advanced-article-upload-images.en.png
delete mode 100644 public/images/doc/advanced-article-upload-images.pt.png
delete mode 100644 public/images/doc/article-bigger-spread-view.en.png
delete mode 100644 public/images/doc/article-bigger-spread-view.pt.png
delete mode 100644 public/images/doc/article-block.en.png
delete mode 100644 public/images/doc/article-block.pt.png
delete mode 100644 public/images/doc/article-creation-categorization.en.png
delete mode 100644 public/images/doc/article-creation-categorization.pt.png
delete mode 100644 public/images/doc/article-creation-category-choosen.en.png
delete mode 100644 public/images/doc/article-creation-category-choosen.pt.png
delete mode 100644 public/images/doc/article-creation-options.en.png
delete mode 100644 public/images/doc/article-creation-options.pt.png
delete mode 100644 public/images/doc/article-creation-tags.en.png
delete mode 100644 public/images/doc/article-creation-tags.pt.png
delete mode 100644 public/images/doc/article-spread-view.en.png
delete mode 100644 public/images/doc/article-spread-view.pt.png
delete mode 100644 public/images/doc/article-spread.en.png
delete mode 100644 public/images/doc/article-spread.pt.png
delete mode 100644 public/images/doc/article-text-lead.en.png
delete mode 100644 public/images/doc/article-text-lead.pt.png
delete mode 100644 public/images/doc/article-text.en.png
delete mode 100644 public/images/doc/article-text.pt.png
delete mode 100644 public/images/doc/block-actions.en.png
delete mode 100644 public/images/doc/blog-buttons.en.png
delete mode 100644 public/images/doc/blog-buttons.pt.png
delete mode 100644 public/images/doc/box-register.en.png
delete mode 100644 public/images/doc/box-register.pt.png
delete mode 100644 public/images/doc/change-password.en.png
delete mode 100644 public/images/doc/change-password.pt.png
delete mode 100644 public/images/doc/changing-role-enterprise-member.en.png
delete mode 100644 public/images/doc/changing-role-enterprise-member.pt.png
delete mode 100644 public/images/doc/closed-comment-box.en.png
delete mode 100644 public/images/doc/closed-comment-box.pt.png
delete mode 100644 public/images/doc/cms-article-icons.en.png
delete mode 100644 public/images/doc/cms-article-icons.pt.png
delete mode 100644 public/images/doc/cms-article-types.en.png
delete mode 100644 public/images/doc/cms-article-types.pt.png
delete mode 100644 public/images/doc/cms-blog-creation.en.png
delete mode 100644 public/images/doc/cms-blog-creation.pt.png
delete mode 100644 public/images/doc/cms-blog-public-visualization.en.png
delete mode 100644 public/images/doc/cms-blog-public-visualization.pt.png
delete mode 100644 public/images/doc/cms-folder-icons.en.png
delete mode 100644 public/images/doc/cms-folder-icons.pt.png
delete mode 100644 public/images/doc/cms-gallery-public-visualization.en.png
delete mode 100644 public/images/doc/cms-gallery-public-visualization.pt.png
delete mode 100644 public/images/doc/cms-new-article.en.png
delete mode 100644 public/images/doc/cms-new-article.pt.png
delete mode 100644 public/images/doc/cms-spread-article-icon.en.png
delete mode 100644 public/images/doc/cms-spread-article-icon.pt.png
delete mode 100644 public/images/doc/cms-uploading-files.en.png
delete mode 100644 public/images/doc/cms-uploading-files.pt.png
delete mode 100644 public/images/doc/cms.en.png
delete mode 100644 public/images/doc/cms.pt.png
delete mode 100644 public/images/doc/comments-of-logged-in-out-person.en.png
delete mode 100644 public/images/doc/comments-of-logged-in-out-person.pt.png
delete mode 100644 public/images/doc/comments.en.png
delete mode 100644 public/images/doc/comments.pt.png
delete mode 100644 public/images/doc/communities-block.en.png
delete mode 100644 public/images/doc/communities-block.pt.png
delete mode 100644 public/images/doc/communities-search-field.en.png
delete mode 100644 public/images/doc/communities-search-field.pt.png
delete mode 100644 public/images/doc/communities-search-results-with-example.en.png
delete mode 100644 public/images/doc/communities-search-results-with-example.pt.png
delete mode 100644 public/images/doc/community-balloon-closed-en.png
delete mode 100644 public/images/doc/community-balloon-closed.en.png
delete mode 100644 public/images/doc/community-balloon-en.png
delete mode 100644 public/images/doc/community-balloon-pt.png
delete mode 100644 public/images/doc/community-balloon.en.png
delete mode 100644 public/images/doc/community-balloon.pt.png
delete mode 100644 public/images/doc/community-control-panel-manage-members.en.png
delete mode 100644 public/images/doc/community-control-panel-manage-members.pt.png
delete mode 100644 public/images/doc/community-control-panel-with-approval-task.en.png
delete mode 100644 public/images/doc/community-control-panel-with-approval-task.pt.png
delete mode 100644 public/images/doc/community-control-panel-with-tasks.en.png
delete mode 100644 public/images/doc/community-control-panel-with-tasks.pt.png
delete mode 100644 public/images/doc/community-creation-form.en.png
delete mode 100644 public/images/doc/community-creation-form.pt.png
delete mode 100644 public/images/doc/community-creation.en.png
delete mode 100644 public/images/doc/community-creation.pt.png
delete mode 100644 public/images/doc/community-edit-sideboxes.en.png
delete mode 100644 public/images/doc/community-edit-sideboxes.pt.png
delete mode 100644 public/images/doc/community-image-block.en.png
delete mode 100644 public/images/doc/community-image-block.pt.png
delete mode 100644 public/images/doc/community-import-invitation-step-1.en.png
delete mode 100644 public/images/doc/community-import-invitation-step-1.pt.png
delete mode 100644 public/images/doc/community-import-invitation-step-2.en.png
delete mode 100644 public/images/doc/community-import-invitation-step-2.pt.png
delete mode 100644 public/images/doc/community-info-block.en.png
delete mode 100644 public/images/doc/community-info-block.pt.png
delete mode 100644 public/images/doc/community-manually-invitation-step-1.en.png
delete mode 100644 public/images/doc/community-manually-invitation-step-1.pt.png
delete mode 100644 public/images/doc/community-manually-invitation-step-2.en.png
delete mode 100644 public/images/doc/community-manually-invitation-step-2.pt.png
delete mode 100644 public/images/doc/community-members-with-invitation-button.en.png
delete mode 100644 public/images/doc/community-members-with-invitation-button.pt.png
delete mode 100644 public/images/doc/community-members-with-send-mail-button.en.png
delete mode 100644 public/images/doc/community-members-with-send-mail-button.pt.png
delete mode 100644 public/images/doc/community-network-block.en.png
delete mode 100644 public/images/doc/community-network-block.pt.png
delete mode 100644 public/images/doc/community-send-email.en.png
delete mode 100644 public/images/doc/community-send-email.pt.png
delete mode 100644 public/images/doc/community-sideboxes-add-block.en.png
delete mode 100644 public/images/doc/community-sideboxes-add-block.pt.png
delete mode 100644 public/images/doc/confirmation-adding-friend.en.png
delete mode 100644 public/images/doc/confirmation-adding-friend.pt.png
delete mode 100644 public/images/doc/contact-button.en.png
delete mode 100644 public/images/doc/contact-button.pt.png
delete mode 100644 public/images/doc/control-panel-change-password.en.png
delete mode 100644 public/images/doc/control-panel-change-password.pt.png
delete mode 100644 public/images/doc/control-panel-community-edit-appearance.en.png
delete mode 100644 public/images/doc/control-panel-community-edit-appearance.pt.png
delete mode 100644 public/images/doc/control-panel-community-edit-header-footer.en.png
delete mode 100644 public/images/doc/control-panel-community-edit-header-footer.pt.png
delete mode 100644 public/images/doc/control-panel-community-edit-sideboxes.en.png
delete mode 100644 public/images/doc/control-panel-community-edit-sideboxes.pt.png
delete mode 100644 public/images/doc/control-panel-content-management.en.png
delete mode 100644 public/images/doc/control-panel-content-management.pt.png
delete mode 100644 public/images/doc/control-panel-create-blog.en.png
delete mode 100644 public/images/doc/control-panel-create-blog.pt.png
delete mode 100644 public/images/doc/control-panel-disable-enterprise.en.png
delete mode 100644 public/images/doc/control-panel-disable-enterprise.pt.png
delete mode 100644 public/images/doc/control-panel-enterprise-edit-appearance.en.png
delete mode 100644 public/images/doc/control-panel-enterprise-edit-appearance.pt.png
delete mode 100644 public/images/doc/control-panel-enterprise-edit-header-footer.en.png
delete mode 100644 public/images/doc/control-panel-enterprise-edit-header-footer.pt.png
delete mode 100644 public/images/doc/control-panel-enterprise-edit-profile-info.en.png
delete mode 100644 public/images/doc/control-panel-enterprise-edit-profile-info.pt.png
delete mode 100644 public/images/doc/control-panel-enterprise-edit-sideboxes.en.png
delete mode 100644 public/images/doc/control-panel-enterprise-edit-sideboxes.pt.png
delete mode 100644 public/images/doc/control-panel-manage-groups.en.png
delete mode 100644 public/images/doc/control-panel-manage-groups.pt.png
delete mode 100644 public/images/doc/control-panel-manage-members.en.png
delete mode 100644 public/images/doc/control-panel-manage-members.pt.png
delete mode 100644 public/images/doc/control-panel-manage-products.en.png
delete mode 100644 public/images/doc/control-panel-manage-products.pt.png
delete mode 100644 public/images/doc/control-panel-menu.en.png
delete mode 100644 public/images/doc/control-panel-menu.pt.png
delete mode 100644 public/images/doc/control-panel-person-delete-profile.en.png
delete mode 100644 public/images/doc/control-panel-person-delete-profile.pt.png
delete mode 100644 public/images/doc/control-panel-person-edit-profile-info.en.png
delete mode 100644 public/images/doc/control-panel-person-edit-profile-info.pt.png
delete mode 100644 public/images/doc/control-panel-user-edit-appearance.en.png
delete mode 100644 public/images/doc/control-panel-user-edit-appearance.pt.png
delete mode 100644 public/images/doc/control-panel-user-edit-header-footer.en.png
delete mode 100644 public/images/doc/control-panel-user-edit-header-footer.pt.png
delete mode 100644 public/images/doc/control-panel-user-edit-sideboxes.en.png
delete mode 100644 public/images/doc/control-panel-user-edit-sideboxes.pt.png
delete mode 100644 public/images/doc/control-panel-with-tasks.en.png
delete mode 100644 public/images/doc/control-panel-with-tasks.pt.png
delete mode 100644 public/images/doc/disable-enterprise-confirmation.en.png
delete mode 100644 public/images/doc/disable-enterprise-confirmation.pt.png
delete mode 100644 public/images/doc/disabled-enterprise-block.en.png
delete mode 100644 public/images/doc/disabled-enterprise-block.pt.png
delete mode 100644 public/images/doc/edit-appearance.en.png
delete mode 100644 public/images/doc/edit-appearance.pt.png
delete mode 100644 public/images/doc/edit-block.en.png
delete mode 100644 public/images/doc/edit-block.pt.png
delete mode 100644 public/images/doc/edit-header-footer.en.png
delete mode 100644 public/images/doc/edit-header-footer.pt.png
delete mode 100644 public/images/doc/enterprise-activation-box.en.png
delete mode 100644 public/images/doc/enterprise-activation-box.pt.png
delete mode 100644 public/images/doc/enterprise-activation-terms.en.png
delete mode 100644 public/images/doc/enterprise-activation-terms.pt.png
delete mode 100644 public/images/doc/enterprise-edit-profile-categories.en.png
delete mode 100644 public/images/doc/enterprise-edit-profile-categories.pt.png
delete mode 100644 public/images/doc/enterprise-edit-profile-info-add-picture.en.png
delete mode 100644 public/images/doc/enterprise-edit-profile-info-add-picture.pt.png
delete mode 100644 public/images/doc/enterprise-edit-profile-info-change-picture.en.png
delete mode 100644 public/images/doc/enterprise-edit-profile-info-change-picture.pt.png
delete mode 100644 public/images/doc/enterprise-edit-profile-info-general-information.en.png
delete mode 100644 public/images/doc/enterprise-edit-profile-info-general-information.pt.png
delete mode 100644 public/images/doc/enterprise-edit-profile-info-moderation-options.en.png
delete mode 100644 public/images/doc/enterprise-edit-profile-info-moderation-options.pt.png
delete mode 100644 public/images/doc/enterprise-edit-profile-privacy-options.en.png
delete mode 100644 public/images/doc/enterprise-edit-profile-privacy-options.pt.png
delete mode 100644 public/images/doc/enterprise-edit-sideboxes.en.png
delete mode 100644 public/images/doc/enterprise-edit-sideboxes.pt.png
delete mode 100644 public/images/doc/enterprise-image-block.en.png
delete mode 100644 public/images/doc/enterprise-image-block.pt.png
delete mode 100644 public/images/doc/enterprise-info-block.en.png
delete mode 100644 public/images/doc/enterprise-info-block.pt.png
delete mode 100644 public/images/doc/enterprise-members-list.en.png
delete mode 100644 public/images/doc/enterprise-members-list.pt.png
delete mode 100644 public/images/doc/enterprise-network-block.en.png
delete mode 100644 public/images/doc/enterprise-network-block.pt.png
delete mode 100644 public/images/doc/enterprise-new-product-last-category.en.png
delete mode 100644 public/images/doc/enterprise-new-product-no-category.en.png
delete mode 100644 public/images/doc/enterprise-new-product-second-category.en.png
delete mode 100644 public/images/doc/enterprise-product-add-input-button.en.png
delete mode 100644 public/images/doc/enterprise-product-add-input-form.en.png
delete mode 100644 public/images/doc/enterprise-product-change-image-form.en.png
delete mode 100644 public/images/doc/enterprise-product-complete.en.png
delete mode 100644 public/images/doc/enterprise-product-edit-basic-info-form.en.png
delete mode 100644 public/images/doc/enterprise-product-edit-description-form.en.png
delete mode 100644 public/images/doc/enterprise-product-edit-name-form.en.png
delete mode 100644 public/images/doc/enterprise-product-list-new-product-button.en.png
delete mode 100644 public/images/doc/enterprise-product-list-new-product-button.pt.png
delete mode 100644 public/images/doc/enterprise-product.en.png
delete mode 100644 public/images/doc/enterprise-sideboxes-add-block.en.png
delete mode 100644 public/images/doc/enterprise-sideboxes-add-block.pt.png
delete mode 100644 public/images/doc/enterprises-block.en.png
delete mode 100644 public/images/doc/enterprises-block.pt.png
delete mode 100644 public/images/doc/enterprises-search-field.en.png
delete mode 100644 public/images/doc/enterprises-search-field.pt.png
delete mode 100644 public/images/doc/enterprises-search-results-with-example.en.png
delete mode 100644 public/images/doc/enterprises-search-results-with-example.pt.png
delete mode 100644 public/images/doc/environment-homepage-with-login-button.en.png
delete mode 100644 public/images/doc/environment-homepage-with-login-button.pt.png
delete mode 100644 public/images/doc/favorite-enterprises-block.en.png
delete mode 100644 public/images/doc/favorite-enterprises-block.pt.png
delete mode 100644 public/images/doc/feed-reader-block.en.png
delete mode 100644 public/images/doc/feed-reader-block.pt.png
delete mode 100644 public/images/doc/friends-block.en.png
delete mode 100644 public/images/doc/friends-block.pt.png
delete mode 100644 public/images/doc/gallery-buttons.en.png
delete mode 100644 public/images/doc/gallery-buttons.pt.png
delete mode 100644 public/images/doc/groups-list-with-create-community.en.png
delete mode 100644 public/images/doc/groups-list-with-create-community.pt.png
delete mode 100644 public/images/doc/groups-list-with-manage-community.en.png
delete mode 100644 public/images/doc/groups-list-with-manage-community.pt.png
delete mode 100644 public/images/doc/groups-list-with-manage-enterprise.en.png
delete mode 100644 public/images/doc/groups-list-with-manage-enterprise.pt.png
delete mode 100644 public/images/doc/join-community-confirmation.en.png
delete mode 100644 public/images/doc/join-community-confirmation.pt.png
delete mode 100644 public/images/doc/joining-community-button.en.png
delete mode 100644 public/images/doc/joining-community-button.pt.png
delete mode 100644 public/images/doc/links-block.en.png
delete mode 100644 public/images/doc/links-block.pt.png
delete mode 100644 public/images/doc/location-map-block.en.png
delete mode 100644 public/images/doc/location-map-block.pt.png
delete mode 100644 public/images/doc/manage-friends.en.png
delete mode 100644 public/images/doc/manage-friends.pt.png
delete mode 100644 public/images/doc/members-block.en.png
delete mode 100644 public/images/doc/members-block.pt.png
delete mode 100644 public/images/doc/menu-admin.en.png
delete mode 100644 public/images/doc/menu-admin.pt.png
delete mode 100644 public/images/doc/menu-communities.en.png
delete mode 100644 public/images/doc/menu-communities.pt.png
delete mode 100644 public/images/doc/menu-control-panel.en.png
delete mode 100644 public/images/doc/menu-control-panel.pt.png
delete mode 100644 public/images/doc/menu-enterprises.en.png
delete mode 100644 public/images/doc/menu-enterprises.pt.png
delete mode 100644 public/images/doc/menu-logout.en.png
delete mode 100644 public/images/doc/menu-logout.pt.png
delete mode 100644 public/images/doc/menu-more-active-communities.en.png
delete mode 100644 public/images/doc/menu-more-active-communities.pt.png
delete mode 100644 public/images/doc/menu-more-active-people.en.png
delete mode 100644 public/images/doc/menu-more-active-people.pt.png
delete mode 100644 public/images/doc/menu-more-popular-communities.en.png
delete mode 100644 public/images/doc/menu-more-popular-communities.pt.png
delete mode 100644 public/images/doc/menu-more-popular-people.en.png
delete mode 100644 public/images/doc/menu-more-popular-people.pt.png
delete mode 100644 public/images/doc/menu-more-recent-communities.en.png
delete mode 100644 public/images/doc/menu-more-recent-communities.pt.png
delete mode 100644 public/images/doc/menu-more-recent-people.en.png
delete mode 100644 public/images/doc/menu-more-recent-people.pt.png
delete mode 100644 public/images/doc/menu-people.en.png
delete mode 100644 public/images/doc/menu-people.pt.png
delete mode 100644 public/images/doc/menu-products.en.png
delete mode 100644 public/images/doc/menu-products.pt.png
delete mode 100644 public/images/doc/menu-search.en.png
delete mode 100644 public/images/doc/menu-search.pt.png
delete mode 100644 public/images/doc/more-active-communities-detail.en.png
delete mode 100644 public/images/doc/more-active-communities-detail.pt.png
delete mode 100644 public/images/doc/more-active-communities-with-example.en.png
delete mode 100644 public/images/doc/more-active-communities-with-example.pt.png
delete mode 100644 public/images/doc/more-active-communities.en.png
delete mode 100644 public/images/doc/more-active-communities.pt.png
delete mode 100644 public/images/doc/more-active-people-detail.en.png
delete mode 100644 public/images/doc/more-active-people-detail.pt.png
delete mode 100644 public/images/doc/more-active-people-with-example.en.png
delete mode 100644 public/images/doc/more-active-people-with-example.pt.png
delete mode 100644 public/images/doc/more-active-people.en.png
delete mode 100644 public/images/doc/more-active-people.pt.png
delete mode 100644 public/images/doc/more-popular-communities-detail.en.png
delete mode 100644 public/images/doc/more-popular-communities-detail.pt.png
delete mode 100644 public/images/doc/more-popular-communities-with-example.en.png
delete mode 100644 public/images/doc/more-popular-communities-with-example.pt.png
delete mode 100644 public/images/doc/more-popular-communities.en.png
delete mode 100644 public/images/doc/more-popular-communities.pt.png
delete mode 100644 public/images/doc/more-popular-people-detail.en.png
delete mode 100644 public/images/doc/more-popular-people-detail.pt.png
delete mode 100644 public/images/doc/more-popular-people-with-example.en.png
delete mode 100644 public/images/doc/more-popular-people-with-example.pt.png
delete mode 100644 public/images/doc/more-popular-people.en.png
delete mode 100644 public/images/doc/more-popular-people.pt.png
delete mode 100644 public/images/doc/more-recent-communities-detail.en.png
delete mode 100644 public/images/doc/more-recent-communities-detail.pt.png
delete mode 100644 public/images/doc/more-recent-communities-with-example.en.png
delete mode 100644 public/images/doc/more-recent-communities-with-example.pt.png
delete mode 100644 public/images/doc/more-recent-communities.en.png
delete mode 100644 public/images/doc/more-recent-communities.pt.png
delete mode 100644 public/images/doc/more-recent-people-detail.en.png
delete mode 100644 public/images/doc/more-recent-people-detail.pt.png
delete mode 100644 public/images/doc/more-recent-people-with-example.en.png
delete mode 100644 public/images/doc/more-recent-people-with-example.pt.png
delete mode 100644 public/images/doc/more-recent-people.en.png
delete mode 100644 public/images/doc/more-recent-people.pt.png
delete mode 100644 public/images/doc/new-folder.en.png
delete mode 100644 public/images/doc/new-folder.pt.png
delete mode 100644 public/images/doc/open-comment-box-for-logged-in.en.png
delete mode 100644 public/images/doc/open-comment-box-for-logged-in.pt.png
delete mode 100644 public/images/doc/open-comment-box-for-not-logged-in.en.png
delete mode 100644 public/images/doc/open-comment-box-for-not-logged-in.pt.png
delete mode 100644 public/images/doc/other-person-view-profile-link.en.png
delete mode 100644 public/images/doc/other-person-view-profile-link.pt.png
delete mode 100644 public/images/doc/people-search-field.en.png
delete mode 100644 public/images/doc/people-search-field.pt.png
delete mode 100644 public/images/doc/people-search-results-with-example.en.png
delete mode 100644 public/images/doc/people-search-results-with-example.pt.png
delete mode 100644 public/images/doc/person-activities-list.en.png
delete mode 100644 public/images/doc/person-activities-list.pt.png
delete mode 100644 public/images/doc/person-balloon-closed-en.png
delete mode 100644 public/images/doc/person-balloon-closed.en.png
delete mode 100644 public/images/doc/person-balloon-en.png
delete mode 100644 public/images/doc/person-balloon-pt.png
delete mode 100644 public/images/doc/person-balloon.en.png
delete mode 100644 public/images/doc/person-balloon.pt.png
delete mode 100644 public/images/doc/person-delete-profile-confirmation.en.png
delete mode 100644 public/images/doc/person-delete-profile-confirmation.pt.png
delete mode 100644 public/images/doc/person-edit-profile-categories.en.png
delete mode 100644 public/images/doc/person-edit-profile-categories.pt.png
delete mode 100644 public/images/doc/person-edit-profile-info-change-picture.en.png
delete mode 100644 public/images/doc/person-edit-profile-info-change-picture.pt.png
delete mode 100644 public/images/doc/person-edit-profile-info-general-informationen.en.png
delete mode 100644 public/images/doc/person-edit-profile-info-general-informationen.pt.png
delete mode 100644 public/images/doc/person-edit-profile-privacy-options.en.png
delete mode 100644 public/images/doc/person-edit-profile-privacy-options.pt.png
delete mode 100644 public/images/doc/person-view-profile-link.en.png
delete mode 100644 public/images/doc/person-view-profile-link.pt.png
delete mode 100644 public/images/doc/person-wall-scrap-reply-button.en.png
delete mode 100644 public/images/doc/person-wall-scrap-reply-form.en.png
delete mode 100644 public/images/doc/person-wall-scrap-reply-form.pt.png
delete mode 100644 public/images/doc/person-wall-scrap-reply-sent.en.png
delete mode 100644 public/images/doc/person-wall-scrap-reply-sent.pt.png
delete mode 100644 public/images/doc/person-wall-scrap-sent.en.png
delete mode 100644 public/images/doc/person-wall-scrap-sent.pt.png
delete mode 100644 public/images/doc/person-wall-writing-scrap.en.png
delete mode 100644 public/images/doc/person-wall-writing-scrap.pt.png
delete mode 100644 public/images/doc/products-block.en.png
delete mode 100644 public/images/doc/products-block.pt.png
delete mode 100644 public/images/doc/products-search-field.en.png
delete mode 100644 public/images/doc/products-search-field.pt.png
delete mode 100644 public/images/doc/products-search-results-with-example.en.png
delete mode 100644 public/images/doc/products-search-results-with-example.pt.png
delete mode 100644 public/images/doc/profile-image-block.en.png
delete mode 100644 public/images/doc/profile-image-block.pt.png
delete mode 100644 public/images/doc/profile-info-block.en.png
delete mode 100644 public/images/doc/profile-info-block.pt.png
delete mode 100644 public/images/doc/profile-with-button-to-add-friends.en.png
delete mode 100644 public/images/doc/profile-with-button-to-add-friends.pt.png
delete mode 100644 public/images/doc/recent-content-block.en.png
delete mode 100644 public/images/doc/recent-content-block.pt.png
delete mode 100644 public/images/doc/remove-comment-confirmation.en.png
delete mode 100644 public/images/doc/remove-comment-confirmation.pt.png
delete mode 100644 public/images/doc/remove-friend-confirmation.en.png
delete mode 100644 public/images/doc/remove-friend-confirmation.pt.png
delete mode 100644 public/images/doc/remove-friend.en.png
delete mode 100644 public/images/doc/remove-friend.pt.png
delete mode 100644 public/images/doc/search-more-options-open.en.png
delete mode 100644 public/images/doc/search-more-options-open.pt.png
delete mode 100644 public/images/doc/search-more-options.en.png
delete mode 100644 public/images/doc/search-more-options.pt.png
delete mode 100644 public/images/doc/search-results-with-example.en.png
delete mode 100644 public/images/doc/search-results-with-example.pt.png
delete mode 100644 public/images/doc/search-view-all-results-with-example.en.png
delete mode 100644 public/images/doc/search-view-all-results-with-example.pt.png
delete mode 100644 public/images/doc/send-message.en.png
delete mode 100644 public/images/doc/send-message.pt.png
delete mode 100644 public/images/doc/signup-form.en.png
delete mode 100644 public/images/doc/signup-form.pt.png
delete mode 100644 public/images/doc/slideshow-block.en.png
delete mode 100644 public/images/doc/slideshow-block.pt.png
delete mode 100644 public/images/doc/system-homepage-top-menu-admin.en.png
delete mode 100644 public/images/doc/system-homepage-top-menu-admin.pt.png
delete mode 100644 public/images/doc/system-homepage-top-menu.en.png
delete mode 100644 public/images/doc/system-homepage-top-menu.pt.png
delete mode 100644 public/images/doc/tags-block.en.png
delete mode 100644 public/images/doc/tags-block.pt.png
delete mode 100644 public/images/doc/tasks-list-approval-request.en.png
delete mode 100644 public/images/doc/tasks-list-approval-request.pt.png
delete mode 100644 public/images/doc/tasks-list-friendship-request.en.png
delete mode 100644 public/images/doc/tasks-list-friendship-request.pt.png
delete mode 100644 public/images/doc/tasks-list-membership-request.en.png
delete mode 100644 public/images/doc/tasks-list-membership-request.pt.png
delete mode 100644 public/images/doc/top-menu.en.png
delete mode 100644 public/images/doc/top-menu.pt.png
delete mode 100644 public/images/doc/uploading-files-to-gallery.en.png
delete mode 100644 public/images/doc/uploading-files-to-gallery.pt.png
delete mode 100644 public/images/doc/user-edit-sideboxes.en.png
delete mode 100644 public/images/doc/user-edit-sideboxes.pt.png
delete mode 100644 public/images/doc/user-friends-with-invitation-button.en.png
delete mode 100644 public/images/doc/user-friends-with-invitation-button.pt.png
delete mode 100644 public/images/doc/user-import-invitation-step-1.en.png
delete mode 100644 public/images/doc/user-import-invitation-step-1.pt.png
delete mode 100644 public/images/doc/user-import-invitation-step-2.en.png
delete mode 100644 public/images/doc/user-import-invitation-step-2.pt.png
delete mode 100644 public/images/doc/user-manually-invitation-step-1.en.png
delete mode 100644 public/images/doc/user-manually-invitation-step-1.pt.png
delete mode 100644 public/images/doc/user-manually-invitation-step-2.en.png
delete mode 100644 public/images/doc/user-manually-invitation-step-2.pt.png
delete mode 100644 public/images/doc/user-network-block.en.png
delete mode 100644 public/images/doc/user-network-block.pt.png
delete mode 100644 public/images/doc/user-sideboxes-add-block.en.png
delete mode 100644 public/images/doc/user-sideboxes-add-block.pt.png
delete mode 100644 public/images/doc/wysiwyg-buttons.en.png
delete mode 100644 public/images/doc/wysiwyg-buttons.pt.png
delete mode 100644 public/images/dotleaders.png
delete mode 100644 public/images/down-arrow.png
delete mode 100644 public/images/ecosol-tree-sprite.png
delete mode 100644 public/images/fancybox/blank.gif
delete mode 100644 public/images/fancybox/fancy_close.png
delete mode 100644 public/images/fancybox/fancy_loading.png
delete mode 100644 public/images/fancybox/fancy_nav_left.png
delete mode 100644 public/images/fancybox/fancy_nav_right.png
delete mode 100644 public/images/fancybox/fancy_shadow_e.png
delete mode 100644 public/images/fancybox/fancy_shadow_n.png
delete mode 100644 public/images/fancybox/fancy_shadow_ne.png
delete mode 100644 public/images/fancybox/fancy_shadow_nw.png
delete mode 100644 public/images/fancybox/fancy_shadow_s.png
delete mode 100644 public/images/fancybox/fancy_shadow_se.png
delete mode 100644 public/images/fancybox/fancy_shadow_sw.png
delete mode 100644 public/images/fancybox/fancy_shadow_w.png
delete mode 100644 public/images/fancybox/fancy_title_left.png
delete mode 100644 public/images/fancybox/fancy_title_main.png
delete mode 100644 public/images/fancybox/fancy_title_over.png
delete mode 100644 public/images/fancybox/fancy_title_right.png
delete mode 100644 public/images/fancybox/fancybox-x.png
delete mode 100644 public/images/fancybox/fancybox-y.png
delete mode 100644 public/images/fancybox/fancybox.png
delete mode 100644 public/images/fff.gif
delete mode 100644 public/images/field-bg.png
delete mode 100644 public/images/forum-activity-bg-onecol.png
delete mode 100644 public/images/forum-activity-bg.png
delete mode 100644 public/images/forum-activity-icon.png
delete mode 100644 public/images/gallery-image-activity-border-big-onecol.png
delete mode 100644 public/images/gallery-image-activity-border-big.png
delete mode 100644 public/images/gallery-image-activity-border-onecol.png
delete mode 100644 public/images/gallery-image-activity-border.png
delete mode 100644 public/images/grip-clue.png
delete mode 100644 public/images/hachure.png
delete mode 100644 public/images/help-avatar.gif
delete mode 100644 public/images/icon_filter_exclude.png
delete mode 100644 public/images/icon_more_options.png
delete mode 120000 public/images/icons-app/alert.png
delete mode 100644 public/images/icons-app/article-minor.png
delete mode 100644 public/images/icons-app/article-portrait.png
delete mode 100644 public/images/icons-app/article-thumb.png
delete mode 120000 public/images/icons-app/chat-22x22.png
delete mode 100644 public/images/icons-app/community-big.png
delete mode 100644 public/images/icons-app/community-icon.png
delete mode 100644 public/images/icons-app/community-minor.png
delete mode 100644 public/images/icons-app/community-portrait.png
delete mode 100644 public/images/icons-app/community-thumb.png
delete mode 100644 public/images/icons-app/design-editor.png
delete mode 100644 public/images/icons-app/emblem-important.png
delete mode 100644 public/images/icons-app/enterprise-big.png
delete mode 100644 public/images/icons-app/enterprise-icon.png
delete mode 100644 public/images/icons-app/enterprise-minor.png
delete mode 100644 public/images/icons-app/enterprise-portrait.png
delete mode 120000 public/images/icons-app/enterprise-registration.png
delete mode 100644 public/images/icons-app/enterprise-thumb.png
delete mode 100644 public/images/icons-app/gnome-irc-22x22.png
delete mode 100644 public/images/icons-app/gnome-irc.png
delete mode 100644 public/images/icons-app/gnome-settings-theme.png
delete mode 100644 public/images/icons-app/gtk-folder.png
delete mode 100644 public/images/icons-app/ico-female.png
delete mode 100644 public/images/icons-app/ico-male.png
delete mode 100644 public/images/icons-app/ico-sex-undef.png
delete mode 100644 public/images/icons-app/image-loading-big.png
delete mode 100644 public/images/icons-app/image-loading-display.png
delete mode 100644 public/images/icons-app/image-loading-icon.png
delete mode 100644 public/images/icons-app/image-loading-minor.png
delete mode 100644 public/images/icons-app/image-loading-portrait.png
delete mode 100644 public/images/icons-app/image-loading-slideshow.png
delete mode 100644 public/images/icons-app/image-loading-small.png
delete mode 100644 public/images/icons-app/image-loading-thumb.png
delete mode 100644 public/images/icons-app/person-big.png
delete mode 100644 public/images/icons-app/person-icon.png
delete mode 100644 public/images/icons-app/person-minor.png
delete mode 100644 public/images/icons-app/person-portrait.png
delete mode 100644 public/images/icons-app/person-thumb.png
delete mode 100644 public/images/icons-app/product-default-pic-big.png
delete mode 100644 public/images/icons-app/product-default-pic-minor.png
delete mode 100644 public/images/icons-app/product-default-pic-portrait.png
delete mode 100644 public/images/icons-app/product-default-pic-thumb.png
delete mode 100644 public/images/icons-app/user_icon.png
delete mode 100644 public/images/icons-app/user_icon.svg
delete mode 100644 public/images/icons-app/users.svg
delete mode 100644 public/images/icons-bar/accessibility.png
delete mode 100644 public/images/icons-bar/admin.png
delete mode 100644 public/images/icons-bar/go-content.png
delete mode 100644 public/images/icons-bar/go-home.png
delete mode 100644 public/images/icons-bar/help.png
delete mode 100644 public/images/icons-bar/login.png
delete mode 100644 public/images/icons-bar/logout.png
delete mode 100644 public/images/icons-bar/logout2.png
delete mode 100644 public/images/icons-cat/Agropecuária_extrativismo_e_pesca.png
delete mode 100644 public/images/icons-cat/Alimentos_e_bebidas.png
delete mode 100644 public/images/icons-cat/Artefatos_artesanais.png
delete mode 100644 public/images/icons-cat/Ação_comunitária.png
delete mode 100644 public/images/icons-cat/Coleta_e_reciclagem_de_materiais.png
delete mode 100644 public/images/icons-cat/Crédito_e_finanças.png
delete mode 100644 public/images/icons-cat/Fitoterápicos_e_produtos_de_limpeza_e_higiene.png
delete mode 100644 public/images/icons-cat/Prestação_de_serviços_diversos.png
delete mode 100644 public/images/icons-cat/Produção_industrial.png
delete mode 100644 public/images/icons-cat/Produção_têxtil_e_confecção.png
delete mode 100644 public/images/icons-cat/Software.png
delete mode 100644 public/images/icons-cat/Software_Livre.png
delete mode 100644 public/images/icons-cat/undefined.png
delete mode 100644 public/images/icons-map/enterprise.png
delete mode 100644 public/images/icons-map/enterprise_shadow.png
delete mode 100644 public/images/icons-mime/README
delete mode 100644 public/images/icons-mime/empty.png
delete mode 120000 public/images/icons-mime/event.png
delete mode 120000 public/images/icons-mime/folder.png
delete mode 100644 public/images/icons-mime/gnome-folder.png
delete mode 100644 public/images/icons-mime/gnome-mime-empty.png
delete mode 100644 public/images/icons-mime/gnome-mime-text-html.png
delete mode 100644 public/images/icons-mime/ico-feed-on.png
delete mode 100644 public/images/icons-mime/rss-feed-16.png
delete mode 120000 public/images/icons-mime/rss-feed.png
delete mode 120000 public/images/icons-mime/text-html.png
delete mode 120000 public/images/icons-mime/unknown.png
delete mode 100644 public/images/icons-task/closed-arrow-hover.png
delete mode 100644 public/images/icons-task/closed-arrow.png
delete mode 100644 public/images/icons-task/opened-arrow-hover.png
delete mode 100644 public/images/icons-task/opened-arrow.png
delete mode 100644 public/images/input-bg.gif
delete mode 100644 public/images/loading-dark.gif
delete mode 100644 public/images/loading-small-dark.gif
delete mode 100644 public/images/loading-small.gif
delete mode 100644 public/images/loading.gif
delete mode 100644 public/images/login_checking.png
delete mode 100644 public/images/logo-anhetegua-200x50.png
delete mode 100644 public/images/logo-anhetegua.png
delete mode 100644 public/images/noosfero-network.png
delete mode 100755 public/images/noosfero-network.svg
delete mode 100644 public/images/orange-balloon.png
delete mode 100644 public/images/orange-bg.png
delete mode 100644 public/images/passwords_match.png
delete mode 100644 public/images/passwords_nomatch.png
delete mode 100644 public/images/rails.png
delete mode 100644 public/images/scrap-bg-gray.png
delete mode 100644 public/images/scrap-bg.png
delete mode 100644 public/images/solidarity-economy.png
delete mode 100644 public/images/top-arrow.png
delete mode 100644 public/images/white-pixel.gif
delete mode 100644 public/images/zoom-dark.png
delete mode 100644 public/images/zoom.png
delete mode 100644 public/javascripts/add-and-join.js
delete mode 100644 public/javascripts/application.js
delete mode 100644 public/javascripts/article.js
delete mode 100644 public/javascripts/ba-linkify.js
delete mode 100644 public/javascripts/catalog.js
delete mode 100644 public/javascripts/chat.js
delete mode 100644 public/javascripts/codepress/codepress.css
delete mode 100644 public/javascripts/codepress/codepress.html
delete mode 100644 public/javascripts/codepress/codepress.js
delete mode 100644 public/javascripts/codepress/engines/gecko.js
delete mode 100644 public/javascripts/codepress/engines/khtml.js
delete mode 100644 public/javascripts/codepress/engines/msie.js
delete mode 100644 public/javascripts/codepress/engines/older.js
delete mode 100644 public/javascripts/codepress/engines/opera.js
delete mode 100644 public/javascripts/codepress/images/line-numbers.png
delete mode 100644 public/javascripts/codepress/index.html
delete mode 100644 public/javascripts/codepress/languages/asp.css
delete mode 100644 public/javascripts/codepress/languages/asp.js
delete mode 100644 public/javascripts/codepress/languages/autoit.css
delete mode 100644 public/javascripts/codepress/languages/autoit.js
delete mode 100644 public/javascripts/codepress/languages/csharp.css
delete mode 100644 public/javascripts/codepress/languages/csharp.js
delete mode 100644 public/javascripts/codepress/languages/css.css
delete mode 100644 public/javascripts/codepress/languages/css.js
delete mode 100644 public/javascripts/codepress/languages/generic.css
delete mode 100644 public/javascripts/codepress/languages/generic.js
delete mode 100644 public/javascripts/codepress/languages/html.css
delete mode 100644 public/javascripts/codepress/languages/html.js
delete mode 100644 public/javascripts/codepress/languages/java.css
delete mode 100644 public/javascripts/codepress/languages/java.js
delete mode 100644 public/javascripts/codepress/languages/javascript.css
delete mode 100644 public/javascripts/codepress/languages/javascript.js
delete mode 100644 public/javascripts/codepress/languages/perl.css
delete mode 100644 public/javascripts/codepress/languages/perl.js
delete mode 100644 public/javascripts/codepress/languages/php.css
delete mode 100644 public/javascripts/codepress/languages/php.js
delete mode 100644 public/javascripts/codepress/languages/ruby.css
delete mode 100644 public/javascripts/codepress/languages/ruby.js
delete mode 100644 public/javascripts/codepress/languages/sql.css
delete mode 100644 public/javascripts/codepress/languages/sql.js
delete mode 100644 public/javascripts/codepress/languages/text.css
delete mode 100644 public/javascripts/codepress/languages/text.js
delete mode 100644 public/javascripts/codepress/languages/vbscript.css
delete mode 100644 public/javascripts/codepress/languages/vbscript.js
delete mode 100644 public/javascripts/codepress/languages/xsl.css
delete mode 100644 public/javascripts/codepress/languages/xsl.js
delete mode 100644 public/javascripts/codepress/license.txt
delete mode 100644 public/javascripts/colorbox.js
delete mode 100644 public/javascripts/colorpicker-noosfero.js
delete mode 100644 public/javascripts/colorpicker.js
delete mode 100644 public/javascripts/controls.js
delete mode 100644 public/javascripts/dragdrop.js
delete mode 100644 public/javascripts/effects.js
delete mode 100644 public/javascripts/errors.js
delete mode 100644 public/javascripts/google_maps.js
delete mode 100644 public/javascripts/jquery-latest.js
delete mode 100644 public/javascripts/jquery-ui-1.8.2.custom.min.js
delete mode 100644 public/javascripts/jquery-validation/README.md
delete mode 100644 public/javascripts/jquery-validation/changelog.txt
delete mode 100644 public/javascripts/jquery-validation/jquery.validate.js
delete mode 100644 public/javascripts/jquery-validation/jquery.validate.min.js
delete mode 100644 public/javascripts/jquery-validation/lib/jquery-1.4.2.js
delete mode 100644 public/javascripts/jquery-validation/lib/jquery-1.4.4.js
delete mode 100644 public/javascripts/jquery-validation/lib/jquery-1.5.1.js
delete mode 100644 public/javascripts/jquery-validation/lib/jquery-1.5.js
delete mode 100644 public/javascripts/jquery-validation/lib/jquery.form.js
delete mode 100644 public/javascripts/jquery-validation/lib/jquery.js
delete mode 100644 public/javascripts/jquery-validation/lib/jquery.metadata.js
delete mode 100644 public/javascripts/jquery-validation/localization/messages_ar.js
delete mode 100644 public/javascripts/jquery-validation/localization/messages_bg.js
delete mode 100644 public/javascripts/jquery-validation/localization/messages_ca.js
delete mode 100644 public/javascripts/jquery-validation/localization/messages_cn.js
delete mode 100644 public/javascripts/jquery-validation/localization/messages_cs.js
delete mode 100644 public/javascripts/jquery-validation/localization/messages_da.js
delete mode 100644 public/javascripts/jquery-validation/localization/messages_de.js
delete mode 100644 public/javascripts/jquery-validation/localization/messages_el.js
delete mode 100644 public/javascripts/jquery-validation/localization/messages_es.js
delete mode 100644 public/javascripts/jquery-validation/localization/messages_fa.js
delete mode 100644 public/javascripts/jquery-validation/localization/messages_fi.js
delete mode 100644 public/javascripts/jquery-validation/localization/messages_fr.js
delete mode 100644 public/javascripts/jquery-validation/localization/messages_ge.js
delete mode 100644 public/javascripts/jquery-validation/localization/messages_he.js
delete mode 100644 public/javascripts/jquery-validation/localization/messages_hu.js
delete mode 100644 public/javascripts/jquery-validation/localization/messages_it.js
delete mode 100644 public/javascripts/jquery-validation/localization/messages_ja.js
delete mode 100644 public/javascripts/jquery-validation/localization/messages_kk.js
delete mode 100644 public/javascripts/jquery-validation/localization/messages_lt.js
delete mode 100644 public/javascripts/jquery-validation/localization/messages_lv.js
delete mode 100644 public/javascripts/jquery-validation/localization/messages_nl.js
delete mode 100644 public/javascripts/jquery-validation/localization/messages_no.js
delete mode 100644 public/javascripts/jquery-validation/localization/messages_pl.js
delete mode 120000 public/javascripts/jquery-validation/localization/messages_pt.js
delete mode 100644 public/javascripts/jquery-validation/localization/messages_ptbr.js
delete mode 100644 public/javascripts/jquery-validation/localization/messages_ptpt.js
delete mode 100644 public/javascripts/jquery-validation/localization/messages_ro.js
delete mode 100644 public/javascripts/jquery-validation/localization/messages_ru.js
delete mode 100644 public/javascripts/jquery-validation/localization/messages_se.js
delete mode 100644 public/javascripts/jquery-validation/localization/messages_si.js
delete mode 100644 public/javascripts/jquery-validation/localization/messages_sk.js
delete mode 100644 public/javascripts/jquery-validation/localization/messages_sr.js
delete mode 100644 public/javascripts/jquery-validation/localization/messages_tr.js
delete mode 100644 public/javascripts/jquery-validation/localization/messages_tw.js
delete mode 100644 public/javascripts/jquery-validation/localization/messages_ua.js
delete mode 100644 public/javascripts/jquery-validation/localization/methods_de.js
delete mode 100644 public/javascripts/jquery-validation/localization/methods_nl.js
delete mode 100644 public/javascripts/jquery-validation/localization/methods_pt.js
delete mode 100644 public/javascripts/jquery-validation/test/events.html
delete mode 100644 public/javascripts/jquery-validation/test/firebug/errorIcon.png
delete mode 100644 public/javascripts/jquery-validation/test/firebug/firebug.css
delete mode 100644 public/javascripts/jquery-validation/test/firebug/firebug.html
delete mode 100644 public/javascripts/jquery-validation/test/firebug/firebug.js
delete mode 100644 public/javascripts/jquery-validation/test/firebug/firebugx.js
delete mode 100644 public/javascripts/jquery-validation/test/firebug/infoIcon.png
delete mode 100644 public/javascripts/jquery-validation/test/firebug/warningIcon.png
delete mode 100644 public/javascripts/jquery-validation/test/index.html
delete mode 100644 public/javascripts/jquery-validation/test/jquery.js
delete mode 100644 public/javascripts/jquery-validation/test/large.html
delete mode 100644 public/javascripts/jquery-validation/test/messages.js
delete mode 100644 public/javascripts/jquery-validation/test/methods.js
delete mode 100644 public/javascripts/jquery-validation/test/qunit/qunit.css
delete mode 100644 public/javascripts/jquery-validation/test/qunit/qunit.js
delete mode 100644 public/javascripts/jquery-validation/test/rules.js
delete mode 100644 public/javascripts/jquery-validation/test/selects/index.html
delete mode 100644 public/javascripts/jquery-validation/test/tabs.html
delete mode 100644 public/javascripts/jquery-validation/test/test.js
delete mode 100644 public/javascripts/jquery-validation/test/users.php
delete mode 100644 public/javascripts/jquery-validation/test/users2.php
delete mode 100644 public/javascripts/jquery-validation/todo
delete mode 100644 public/javascripts/jquery-validation/version.txt
delete mode 100644 public/javascripts/jquery.ba-bbq.min.js
delete mode 100644 public/javascripts/jquery.ba-hashchange.js
delete mode 100644 public/javascripts/jquery.cookie.js
delete mode 100644 public/javascripts/jquery.cycle.all.min.js
delete mode 100644 public/javascripts/jquery.emoticon.js
delete mode 100644 public/javascripts/jquery.fancybox-1.3.4.pack.js
delete mode 100644 public/javascripts/jquery.form.js
delete mode 100644 public/javascripts/jquery.noconflict.js
delete mode 100644 public/javascripts/jquery.scrollTo.js
delete mode 100644 public/javascripts/jquery.scrollabletab.js
delete mode 100644 public/javascripts/jquery.sound.js
delete mode 100644 public/javascripts/jquery.tokeninput.js
delete mode 100644 public/javascripts/lightbox.js
delete mode 100644 public/javascripts/lowpro.js
delete mode 100644 public/javascripts/manage-categories.js
delete mode 100644 public/javascripts/manage-products.js
delete mode 100644 public/javascripts/pikachoose.js
delete mode 100644 public/javascripts/prototype.js
delete mode 100644 public/javascripts/reflection.js
delete mode 100644 public/javascripts/report-abuse.js
delete mode 100644 public/javascripts/sliderjs.js
delete mode 100644 public/javascripts/strophejs-1.0.1/LICENSE.txt
delete mode 100644 public/javascripts/strophejs-1.0.1/README.txt
delete mode 100644 public/javascripts/strophejs-1.0.1/contrib/discojs/README.txt
delete mode 100644 public/javascripts/strophejs-1.0.1/contrib/discojs/css/disco.css
delete mode 100644 public/javascripts/strophejs-1.0.1/contrib/discojs/index.html
delete mode 100644 public/javascripts/strophejs-1.0.1/contrib/discojs/punjab.tac
delete mode 100644 public/javascripts/strophejs-1.0.1/contrib/discojs/scripts/basic.js
delete mode 100644 public/javascripts/strophejs-1.0.1/contrib/discojs/scripts/disco.js
delete mode 100644 public/javascripts/strophejs-1.0.1/doc/files/core-js.html
delete mode 100644 public/javascripts/strophejs-1.0.1/doc/index.html
delete mode 100644 public/javascripts/strophejs-1.0.1/doc/javascript/main.js
delete mode 100644 public/javascripts/strophejs-1.0.1/doc/javascript/searchdata.js
delete mode 100644 public/javascripts/strophejs-1.0.1/doc/search/ClassesS.html
delete mode 100644 public/javascripts/strophejs-1.0.1/doc/search/ConstantsA.html
delete mode 100644 public/javascripts/strophejs-1.0.1/doc/search/ConstantsB.html
delete mode 100644 public/javascripts/strophejs-1.0.1/doc/search/ConstantsC.html
delete mode 100644 public/javascripts/strophejs-1.0.1/doc/search/ConstantsD.html
delete mode 100644 public/javascripts/strophejs-1.0.1/doc/search/ConstantsE.html
delete mode 100644 public/javascripts/strophejs-1.0.1/doc/search/ConstantsF.html
delete mode 100644 public/javascripts/strophejs-1.0.1/doc/search/ConstantsH.html
delete mode 100644 public/javascripts/strophejs-1.0.1/doc/search/ConstantsI.html
delete mode 100644 public/javascripts/strophejs-1.0.1/doc/search/ConstantsL.html
delete mode 100644 public/javascripts/strophejs-1.0.1/doc/search/ConstantsM.html
delete mode 100644 public/javascripts/strophejs-1.0.1/doc/search/ConstantsP.html
delete mode 100644 public/javascripts/strophejs-1.0.1/doc/search/ConstantsR.html
delete mode 100644 public/javascripts/strophejs-1.0.1/doc/search/ConstantsS.html
delete mode 100644 public/javascripts/strophejs-1.0.1/doc/search/ConstantsV.html
delete mode 100644 public/javascripts/strophejs-1.0.1/doc/search/ConstantsW.html
delete mode 100644 public/javascripts/strophejs-1.0.1/doc/search/ConstantsX.html
delete mode 100644 public/javascripts/strophejs-1.0.1/doc/search/FilesS.html
delete mode 100644 public/javascripts/strophejs-1.0.1/doc/search/FunctionsA.html
delete mode 100644 public/javascripts/strophejs-1.0.1/doc/search/FunctionsB.html
delete mode 100644 public/javascripts/strophejs-1.0.1/doc/search/FunctionsC.html
delete mode 100644 public/javascripts/strophejs-1.0.1/doc/search/FunctionsD.html
delete mode 100644 public/javascripts/strophejs-1.0.1/doc/search/FunctionsE.html
delete mode 100644 public/javascripts/strophejs-1.0.1/doc/search/FunctionsF.html
delete mode 100644 public/javascripts/strophejs-1.0.1/doc/search/FunctionsG.html
delete mode 100644 public/javascripts/strophejs-1.0.1/doc/search/FunctionsI.html
delete mode 100644 public/javascripts/strophejs-1.0.1/doc/search/FunctionsL.html
delete mode 100644 public/javascripts/strophejs-1.0.1/doc/search/FunctionsP.html
delete mode 100644 public/javascripts/strophejs-1.0.1/doc/search/FunctionsR.html
delete mode 100644 public/javascripts/strophejs-1.0.1/doc/search/FunctionsS.html
delete mode 100644 public/javascripts/strophejs-1.0.1/doc/search/FunctionsSymbols.html
delete mode 100644 public/javascripts/strophejs-1.0.1/doc/search/FunctionsT.html
delete mode 100644 public/javascripts/strophejs-1.0.1/doc/search/FunctionsU.html
delete mode 100644 public/javascripts/strophejs-1.0.1/doc/search/FunctionsW.html
delete mode 100644 public/javascripts/strophejs-1.0.1/doc/search/FunctionsX.html
delete mode 100644 public/javascripts/strophejs-1.0.1/doc/search/GeneralA.html
delete mode 100644 public/javascripts/strophejs-1.0.1/doc/search/GeneralB.html
delete mode 100644 public/javascripts/strophejs-1.0.1/doc/search/GeneralC.html
delete mode 100644 public/javascripts/strophejs-1.0.1/doc/search/GeneralD.html
delete mode 100644 public/javascripts/strophejs-1.0.1/doc/search/GeneralE.html
delete mode 100644 public/javascripts/strophejs-1.0.1/doc/search/GeneralF.html
delete mode 100644 public/javascripts/strophejs-1.0.1/doc/search/GeneralG.html
delete mode 100644 public/javascripts/strophejs-1.0.1/doc/search/GeneralH.html
delete mode 100644 public/javascripts/strophejs-1.0.1/doc/search/GeneralI.html
delete mode 100644 public/javascripts/strophejs-1.0.1/doc/search/GeneralL.html
delete mode 100644 public/javascripts/strophejs-1.0.1/doc/search/GeneralM.html
delete mode 100644 public/javascripts/strophejs-1.0.1/doc/search/GeneralP.html
delete mode 100644 public/javascripts/strophejs-1.0.1/doc/search/GeneralR.html
delete mode 100644 public/javascripts/strophejs-1.0.1/doc/search/GeneralS.html
delete mode 100644 public/javascripts/strophejs-1.0.1/doc/search/GeneralSymbols.html
delete mode 100644 public/javascripts/strophejs-1.0.1/doc/search/GeneralT.html
delete mode 100644 public/javascripts/strophejs-1.0.1/doc/search/GeneralU.html
delete mode 100644 public/javascripts/strophejs-1.0.1/doc/search/GeneralV.html
delete mode 100644 public/javascripts/strophejs-1.0.1/doc/search/GeneralW.html
delete mode 100644 public/javascripts/strophejs-1.0.1/doc/search/GeneralX.html
delete mode 100644 public/javascripts/strophejs-1.0.1/doc/search/NoResults.html
delete mode 100644 public/javascripts/strophejs-1.0.1/doc/styles/main.css
delete mode 100644 public/javascripts/strophejs-1.0.1/examples/attach/README
delete mode 100644 public/javascripts/strophejs-1.0.1/examples/attach/__init__.py
delete mode 100644 public/javascripts/strophejs-1.0.1/examples/attach/attacher/__init__.py
delete mode 100644 public/javascripts/strophejs-1.0.1/examples/attach/attacher/views.py
delete mode 100644 public/javascripts/strophejs-1.0.1/examples/attach/boshclient.py
delete mode 100755 public/javascripts/strophejs-1.0.1/examples/attach/manage.py
delete mode 100644 public/javascripts/strophejs-1.0.1/examples/attach/settings.py
delete mode 100644 public/javascripts/strophejs-1.0.1/examples/attach/templates/attacher/index.html
delete mode 100644 public/javascripts/strophejs-1.0.1/examples/attach/urls.py
delete mode 100644 public/javascripts/strophejs-1.0.1/examples/basic.html
delete mode 100644 public/javascripts/strophejs-1.0.1/examples/basic.js
delete mode 100644 public/javascripts/strophejs-1.0.1/examples/crossdomain.html
delete mode 100644 public/javascripts/strophejs-1.0.1/examples/crossdomain.js
delete mode 100644 public/javascripts/strophejs-1.0.1/examples/crossdomain.xml
delete mode 100644 public/javascripts/strophejs-1.0.1/examples/dojo-ping.html
delete mode 100644 public/javascripts/strophejs-1.0.1/examples/dojo-ping.js
delete mode 100644 public/javascripts/strophejs-1.0.1/examples/echobot.html
delete mode 100644 public/javascripts/strophejs-1.0.1/examples/echobot.js
delete mode 100644 public/javascripts/strophejs-1.0.1/examples/prebind.html
delete mode 100644 public/javascripts/strophejs-1.0.1/examples/prebind.js
delete mode 100644 public/javascripts/strophejs-1.0.1/examples/prototype-ping.html
delete mode 100644 public/javascripts/strophejs-1.0.1/examples/prototype-ping.js
delete mode 100644 public/javascripts/strophejs-1.0.1/examples/yui-ping.html
delete mode 100644 public/javascripts/strophejs-1.0.1/examples/yui-ping.js
delete mode 100644 public/javascripts/strophejs-1.0.1/plugins/strophe.flxhr.js
delete mode 100644 public/javascripts/strophejs-1.0.1/plugins/strophe.flxhr.min.js
delete mode 100644 public/javascripts/strophejs-1.0.1/plugins/strophe.pubsub.js
delete mode 100644 public/javascripts/strophejs-1.0.1/plugins/strophe.pubsub.min.js
delete mode 100644 public/javascripts/strophejs-1.0.1/strophe.js
delete mode 100644 public/javascripts/strophejs-1.0.1/strophe.min.js
delete mode 100644 public/javascripts/strophejs-1.0.1/tests/jstests.js
delete mode 100644 public/javascripts/strophejs-1.0.1/tests/jsyuitests.js
delete mode 100644 public/javascripts/strophejs-1.0.1/tests/pubsub.html
delete mode 100644 public/javascripts/strophejs-1.0.1/tests/pubsub.js
delete mode 100644 public/javascripts/strophejs-1.0.1/tests/strophe.html
delete mode 100644 public/javascripts/strophejs-1.0.1/tests/testrunner.js
delete mode 100644 public/javascripts/strophejs-1.0.1/tests/tests.js
delete mode 100644 public/javascripts/strophejs-1.0.1/tests/testsuite.css
delete mode 100644 public/javascripts/strophejs-1.0.1/tests/yuitests.html
delete mode 100644 public/javascripts/strophejs-1.0.1/tests/yuitests.js
delete mode 100644 public/javascripts/tasks.js
delete mode 100644 public/javascripts/thickbox.js
delete mode 100644 public/javascripts/tinymce/changelog.txt
delete mode 100644 public/javascripts/tinymce/examples/accessibility.html
delete mode 100644 public/javascripts/tinymce/examples/css/content.css
delete mode 100644 public/javascripts/tinymce/examples/css/word.css
delete mode 100644 public/javascripts/tinymce/examples/custom_formats.html
delete mode 100644 public/javascripts/tinymce/examples/full.html
delete mode 100644 public/javascripts/tinymce/examples/index.html
delete mode 100644 public/javascripts/tinymce/examples/lists/image_list.js
delete mode 100644 public/javascripts/tinymce/examples/lists/link_list.js
delete mode 100644 public/javascripts/tinymce/examples/lists/media_list.js
delete mode 100644 public/javascripts/tinymce/examples/lists/template_list.js
delete mode 100644 public/javascripts/tinymce/examples/media/logo.jpg
delete mode 100644 public/javascripts/tinymce/examples/media/logo_over.jpg
delete mode 100644 public/javascripts/tinymce/examples/media/sample.avi
delete mode 100644 public/javascripts/tinymce/examples/media/sample.dcr
delete mode 100644 public/javascripts/tinymce/examples/media/sample.flv
delete mode 100644 public/javascripts/tinymce/examples/media/sample.mov
delete mode 100644 public/javascripts/tinymce/examples/media/sample.ram
delete mode 100644 public/javascripts/tinymce/examples/media/sample.rm
delete mode 100644 public/javascripts/tinymce/examples/media/sample.swf
delete mode 100644 public/javascripts/tinymce/examples/menu.html
delete mode 100644 public/javascripts/tinymce/examples/simple.html
delete mode 100644 public/javascripts/tinymce/examples/skins.html
delete mode 100644 public/javascripts/tinymce/examples/templates/layout1.htm
delete mode 100644 public/javascripts/tinymce/examples/templates/snippet1.htm
delete mode 100644 public/javascripts/tinymce/examples/translate.html
delete mode 100644 public/javascripts/tinymce/examples/word.html
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/langs/de.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/langs/en.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/langs/eo.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/langs/es.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/langs/fr.js
delete mode 120000 public/javascripts/tinymce/jscripts/tiny_mce/langs/hy.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/langs/it.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/langs/ja.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/langs/nl.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/langs/pt.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/langs/ru.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/license.txt
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/advhr/css/advhr.css
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/advhr/editor_plugin.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/advhr/editor_plugin_src.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/advhr/js/rule.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/advhr/langs/de_dlg.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/advhr/langs/en_dlg.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/advhr/langs/eo_dlg.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/advhr/langs/es_dlg.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/advhr/langs/fr_dlg.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/advhr/langs/ja_dlg.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/advhr/langs/nl_dlg.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/advhr/langs/pt_dlg.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/advhr/langs/ru_dlg.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/advhr/rule.htm
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/advimage/css/advimage.css
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/advimage/editor_plugin.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/advimage/editor_plugin_src.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/advimage/image.htm
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/advimage/img/sample.gif
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/advimage/js/image.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/advimage/langs/de_dlg.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/advimage/langs/en_dlg.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/advimage/langs/eo_dlg.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/advimage/langs/es_dlg.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/advimage/langs/fr_dlg.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/advimage/langs/ja_dlg.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/advimage/langs/nl_dlg.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/advimage/langs/pt_dlg.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/advimage/langs/ru_dlg.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/advlink/css/advlink.css
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/advlink/editor_plugin.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/advlink/editor_plugin_src.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/advlink/js/advlink.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/advlink/langs/de_dlg.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/advlink/langs/en_dlg.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/advlink/langs/eo_dlg.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/advlink/langs/es_dlg.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/advlink/langs/fr_dlg.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/advlink/langs/ja_dlg.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/advlink/langs/nl_dlg.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/advlink/langs/pt_dlg.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/advlink/langs/ru_dlg.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/advlink/link.htm
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/advlist/editor_plugin.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/advlist/editor_plugin_src.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/autolink/editor_plugin.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/autolink/editor_plugin_src.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/autoresize/editor_plugin.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/autoresize/editor_plugin_src.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/autosave/editor_plugin.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/autosave/editor_plugin_src.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/autosave/langs/en.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/bbcode/editor_plugin.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/bbcode/editor_plugin_src.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/contextmenu/editor_plugin.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/contextmenu/editor_plugin_src.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/directionality/editor_plugin.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/directionality/editor_plugin_src.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/emotions/editor_plugin.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/emotions/editor_plugin_src.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/emotions/emotions.htm
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-cool.gif
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-cry.gif
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-embarassed.gif
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-foot-in-mouth.gif
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-frown.gif
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-innocent.gif
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-kiss.gif
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-laughing.gif
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-money-mouth.gif
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-sealed.gif
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-smile.gif
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-surprised.gif
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-tongue-out.gif
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-undecided.gif
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-wink.gif
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-yell.gif
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/emotions/js/emotions.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/emotions/langs/de_dlg.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/emotions/langs/en_dlg.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/emotions/langs/eo_dlg.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/emotions/langs/es_dlg.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/emotions/langs/fr_dlg.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/emotions/langs/ja_dlg.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/emotions/langs/nl_dlg.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/emotions/langs/pt_dlg.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/emotions/langs/ru_dlg.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/example/dialog.htm
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/example/editor_plugin.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/example/editor_plugin_src.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/example/img/example.gif
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/example/js/dialog.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/example/langs/en.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/example/langs/en_dlg.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/fullpage/css/fullpage.css
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/fullpage/editor_plugin.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/fullpage/editor_plugin_src.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/fullpage/fullpage.htm
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/fullpage/js/fullpage.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/de_dlg.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/en_dlg.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/eo_dlg.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/es_dlg.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/fr_dlg.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/ja_dlg.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/nl_dlg.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/pt_dlg.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/ru_dlg.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/fullscreen/editor_plugin.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/fullscreen/editor_plugin_src.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/fullscreen/fullscreen.htm
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/iespell/editor_plugin.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/iespell/editor_plugin_src.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/inlinepopups/editor_plugin.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/inlinepopups/editor_plugin_src.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/alert.gif
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/button.gif
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/buttons.gif
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/confirm.gif
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/corners.gif
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/horizontal.gif
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/vertical.gif
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/window.css
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/inlinepopups/template.htm
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/insertdatetime/editor_plugin.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/insertdatetime/editor_plugin_src.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/layer/editor_plugin.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/layer/editor_plugin_src.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/legacyoutput/editor_plugin.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/legacyoutput/editor_plugin_src.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/lists/editor_plugin.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/lists/editor_plugin_src.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/media/css/content.css
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/media/css/media.css
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/media/editor_plugin.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/media/editor_plugin_src.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/media/img/flash.gif
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/media/img/flv_player.swf
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/media/img/quicktime.gif
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/media/img/realmedia.gif
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/media/img/shockwave.gif
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/media/img/trans.gif
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/media/img/windowsmedia.gif
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/media/js/embed.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/media/js/media.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/media/langs/de_dlg.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/media/langs/en_dlg.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/media/langs/eo_dlg.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/media/langs/es_dlg.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/media/langs/fr_dlg.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/media/langs/ja_dlg.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/media/langs/nl_dlg.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/media/langs/pt_dlg.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/media/langs/ru_dlg.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/media/media.htm
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/media/moxieplayer.swf
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/nonbreaking/editor_plugin.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/nonbreaking/editor_plugin_src.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/noneditable/editor_plugin.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/noneditable/editor_plugin_src.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/pagebreak/css/content.css
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/pagebreak/editor_plugin.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/pagebreak/editor_plugin_src.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/pagebreak/img/pagebreak.gif
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/pagebreak/img/trans.gif
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/paste/editor_plugin.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/paste/editor_plugin_src.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/paste/js/pastetext.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/paste/js/pasteword.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/paste/langs/de_dlg.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/paste/langs/en_dlg.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/paste/langs/eo_dlg.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/paste/langs/es_dlg.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/paste/langs/fr_dlg.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/paste/langs/ja_dlg.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/paste/langs/nl_dlg.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/paste/langs/pt_dlg.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/paste/langs/ru_dlg.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/paste/pastetext.htm
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/paste/pasteword.htm
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/preview/editor_plugin.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/preview/editor_plugin_src.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/preview/example.html
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/preview/jscripts/embed.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/preview/preview.html
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/print/editor_plugin.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/print/editor_plugin_src.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/safari/blank.htm
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/safari/editor_plugin.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/safari/editor_plugin_src.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/save/editor_plugin.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/save/editor_plugin_src.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/searchreplace/css/searchreplace.css
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/searchreplace/editor_plugin.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/searchreplace/editor_plugin_src.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/searchreplace/js/searchreplace.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/de_dlg.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/en_dlg.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/eo_dlg.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/es_dlg.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/fr_dlg.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/ja_dlg.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/nl_dlg.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/pt_dlg.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/ru_dlg.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/searchreplace/searchreplace.htm
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/spellchecker/css/content.css
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/spellchecker/editor_plugin.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/spellchecker/editor_plugin_src.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/spellchecker/img/wline.gif
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/style/css/props.css
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/style/editor_plugin.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/style/editor_plugin_src.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/style/js/props.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/style/langs/de_dlg.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/style/langs/en_dlg.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/style/langs/eo_dlg.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/style/langs/es_dlg.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/style/langs/fr_dlg.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/style/langs/ja_dlg.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/style/langs/nl_dlg.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/style/langs/pt_dlg.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/style/langs/ru_dlg.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/style/props.htm
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/tabfocus/editor_plugin.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/tabfocus/editor_plugin_src.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/table/cell.htm
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/table/css/cell.css
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/table/css/row.css
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/table/css/table.css
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/table/editor_plugin.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/table/editor_plugin_src.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/table/js/cell.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/table/js/merge_cells.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/table/js/row.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/table/js/table.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/table/langs/de_dlg.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/table/langs/en_dlg.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/table/langs/eo_dlg.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/table/langs/es_dlg.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/table/langs/fr_dlg.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/table/langs/ja_dlg.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/table/langs/nl_dlg.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/table/langs/pt_dlg.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/table/langs/ru_dlg.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/table/merge_cells.htm
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/table/row.htm
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/table/table.htm
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/template/blank.htm
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/template/css/template.css
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/template/editor_plugin.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/template/editor_plugin_src.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/template/js/template.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/template/langs/de_dlg.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/template/langs/en_dlg.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/template/langs/eo_dlg.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/template/langs/es_dlg.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/template/langs/fr_dlg.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/template/langs/ja_dlg.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/template/langs/nl_dlg.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/template/langs/pt_dlg.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/template/langs/ru_dlg.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/template/template.htm
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/visualchars/editor_plugin.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/visualchars/editor_plugin_src.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/wordcount/editor_plugin.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/wordcount/editor_plugin_src.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/abbr.htm
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/acronym.htm
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/attributes.htm
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/cite.htm
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/css/attributes.css
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/css/popup.css
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/del.htm
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/editor_plugin.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/editor_plugin_src.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/ins.htm
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/js/abbr.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/js/acronym.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/js/attributes.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/js/cite.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/js/del.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/js/element_common.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/js/ins.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/de_dlg.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/en_dlg.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/eo_dlg.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/es_dlg.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/fr_dlg.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/ja_dlg.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/nl_dlg.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/pt_dlg.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/ru_dlg.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/about.htm
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/anchor.htm
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/charmap.htm
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/color_picker.htm
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/editor_template.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/editor_template_src.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/image.htm
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/img/colorpicker.jpg
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/img/flash.gif
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/img/icons.gif
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/img/iframe.gif
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/img/pagebreak.gif
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/img/quicktime.gif
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/img/realmedia.gif
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/img/shockwave.gif
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/img/trans.gif
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/img/video.gif
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/img/windowsmedia.gif
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/js/about.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/js/anchor.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/js/charmap.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/js/color_picker.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/js/image.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/js/link.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/js/source_editor.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/langs/de.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/langs/de_dlg.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/langs/en.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/langs/en_dlg.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/langs/eo.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/langs/eo_dlg.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/langs/es.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/langs/es_dlg.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/langs/fr.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/langs/fr_dlg.js
delete mode 120000 public/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/langs/hy.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/langs/it.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/langs/it_dlg.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/langs/ja.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/langs/ja_dlg.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/langs/nl.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/langs/nl_dlg.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/langs/pt.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/langs/pt_dlg.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/langs/ru.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/langs/ru_dlg.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/link.htm
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/shortcuts.htm
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/content.css
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/dialog.css
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/img/buttons.png
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/img/items.gif
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/img/menu_arrow.gif
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/img/menu_check.gif
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/img/progress.gif
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/img/tabs.gif
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/ui.css
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/skins/highcontrast/content.css
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/skins/highcontrast/dialog.css
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/skins/highcontrast/ui.css
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/content.css
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/dialog.css
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/img/button_bg.png
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/img/button_bg_black.png
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/img/button_bg_silver.png
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/ui.css
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/ui_black.css
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/ui_silver.css
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/themes/advanced/source_editor.htm
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/themes/simple/editor_template.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/themes/simple/editor_template_src.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/themes/simple/img/icons.gif
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/themes/simple/langs/de.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/themes/simple/langs/en.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/themes/simple/langs/eo.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/themes/simple/langs/es.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/themes/simple/langs/fr.js
delete mode 120000 public/javascripts/tinymce/jscripts/tiny_mce/themes/simple/langs/hy.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/themes/simple/langs/it.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/themes/simple/langs/ja.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/themes/simple/langs/nl.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/themes/simple/langs/pt.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/themes/simple/langs/ru.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/themes/simple/skins/default/content.css
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/themes/simple/skins/default/ui.css
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/themes/simple/skins/o2k7/content.css
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/themes/simple/skins/o2k7/img/button_bg.png
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/themes/simple/skins/o2k7/ui.css
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/tiny_mce.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/tiny_mce_popup.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/tiny_mce_src.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/utils/editable_selects.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/utils/form_utils.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/utils/mctabs.js
delete mode 100644 public/javascripts/tinymce/jscripts/tiny_mce/utils/validate.js
delete mode 100644 public/stylesheets/application.css
delete mode 100644 public/stylesheets/calendar_date_select/blue.css
delete mode 100644 public/stylesheets/calendar_date_select/default.css
delete mode 100644 public/stylesheets/calendar_date_select/plain.css
delete mode 100644 public/stylesheets/calendar_date_select/red.css
delete mode 100644 public/stylesheets/calendar_date_select/silver.css
delete mode 100644 public/stylesheets/colorbox.css
delete mode 100644 public/stylesheets/colorpicker.css
delete mode 100644 public/stylesheets/fancybox.css
delete mode 100755 public/stylesheets/iepngfix/blank.gif
delete mode 100644 public/stylesheets/iepngfix/iepngfix.css
delete mode 100755 public/stylesheets/iepngfix/iepngfix.htc
delete mode 100644 public/stylesheets/jquery.ui/redmond/images/ui-anim_basic_16x16.gif
delete mode 100644 public/stylesheets/jquery.ui/redmond/images/ui-bg_flat_0_aaaaaa_40x100.png
delete mode 100644 public/stylesheets/jquery.ui/redmond/images/ui-bg_flat_55_fbec88_40x100.png
delete mode 100644 public/stylesheets/jquery.ui/redmond/images/ui-bg_glass_75_d0e5f5_1x400.png
delete mode 100644 public/stylesheets/jquery.ui/redmond/images/ui-bg_glass_85_dfeffc_1x400.png
delete mode 100644 public/stylesheets/jquery.ui/redmond/images/ui-bg_glass_95_fef1ec_1x400.png
delete mode 100644 public/stylesheets/jquery.ui/redmond/images/ui-bg_gloss-wave_55_5c9ccc_500x100.png
delete mode 100644 public/stylesheets/jquery.ui/redmond/images/ui-bg_inset-hard_100_f5f8f9_1x100.png
delete mode 100644 public/stylesheets/jquery.ui/redmond/images/ui-bg_inset-hard_100_fcfdfd_1x100.png
delete mode 100644 public/stylesheets/jquery.ui/redmond/images/ui-icons_217bc0_256x240.png
delete mode 100644 public/stylesheets/jquery.ui/redmond/images/ui-icons_2e83ff_256x240.png
delete mode 100644 public/stylesheets/jquery.ui/redmond/images/ui-icons_469bdd_256x240.png
delete mode 100644 public/stylesheets/jquery.ui/redmond/images/ui-icons_6da8d5_256x240.png
delete mode 100644 public/stylesheets/jquery.ui/redmond/images/ui-icons_cd0a0a_256x240.png
delete mode 100644 public/stylesheets/jquery.ui/redmond/images/ui-icons_d8e7f3_256x240.png
delete mode 100644 public/stylesheets/jquery.ui/redmond/images/ui-icons_f9bd01_256x240.png
delete mode 100644 public/stylesheets/jquery.ui/redmond/jquery-ui-1.8.2.custom.css
delete mode 100644 public/stylesheets/jquery.ui/smoothness/images/ui-anim_basic_16x16.gif
delete mode 100644 public/stylesheets/jquery.ui/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png
delete mode 100644 public/stylesheets/jquery.ui/smoothness/images/ui-bg_flat_75_ffffff_40x100.png
delete mode 100644 public/stylesheets/jquery.ui/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png
delete mode 100644 public/stylesheets/jquery.ui/smoothness/images/ui-bg_glass_65_ffffff_1x400.png
delete mode 100644 public/stylesheets/jquery.ui/smoothness/images/ui-bg_glass_75_dadada_1x400.png
delete mode 100644 public/stylesheets/jquery.ui/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png
delete mode 100644 public/stylesheets/jquery.ui/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png
delete mode 100644 public/stylesheets/jquery.ui/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png
delete mode 100644 public/stylesheets/jquery.ui/smoothness/images/ui-icons_222222_256x240.png
delete mode 100644 public/stylesheets/jquery.ui/smoothness/images/ui-icons_2e83ff_256x240.png
delete mode 100644 public/stylesheets/jquery.ui/smoothness/images/ui-icons_454545_256x240.png
delete mode 100644 public/stylesheets/jquery.ui/smoothness/images/ui-icons_888888_256x240.png
delete mode 100644 public/stylesheets/jquery.ui/smoothness/images/ui-icons_cd0a0a_256x240.png
delete mode 100644 public/stylesheets/jquery.ui/smoothness/jquery-ui-1.8.2.custom.css
delete mode 100644 public/stylesheets/jquery.ui/smoothness_mod/images/ui-anim_basic_16x16.gif
delete mode 100644 public/stylesheets/jquery.ui/smoothness_mod/images/ui-bg_flat_0_aaaaaa_40x100.png
delete mode 100644 public/stylesheets/jquery.ui/smoothness_mod/images/ui-bg_flat_75_ffffff_40x100.png
delete mode 100644 public/stylesheets/jquery.ui/smoothness_mod/images/ui-bg_glass_55_fbf9ee_1x400.png
delete mode 100644 public/stylesheets/jquery.ui/smoothness_mod/images/ui-bg_glass_65_ffffff_1x400.png
delete mode 100644 public/stylesheets/jquery.ui/smoothness_mod/images/ui-bg_glass_75_dadada_1x400.png
delete mode 100644 public/stylesheets/jquery.ui/smoothness_mod/images/ui-bg_glass_75_e6e6e6_1x400.png
delete mode 100644 public/stylesheets/jquery.ui/smoothness_mod/images/ui-bg_glass_95_fef1ec_1x400.png
delete mode 100644 public/stylesheets/jquery.ui/smoothness_mod/images/ui-bg_highlight-soft_75_cccccc_1x100.png
delete mode 100644 public/stylesheets/jquery.ui/smoothness_mod/images/ui-icons_222222_256x240.png
delete mode 100644 public/stylesheets/jquery.ui/smoothness_mod/images/ui-icons_2e83ff_256x240.png
delete mode 100644 public/stylesheets/jquery.ui/smoothness_mod/images/ui-icons_454545_256x240.png
delete mode 100644 public/stylesheets/jquery.ui/smoothness_mod/images/ui-icons_888888_256x240.png
delete mode 100644 public/stylesheets/jquery.ui/smoothness_mod/images/ui-icons_cd0a0a_256x240.png
delete mode 100644 public/stylesheets/jquery.ui/smoothness_mod/jquery-ui-1.8.2.custom.css
delete mode 100644 public/stylesheets/jquery.ui/south-street/images/ui-anim_basic_16x16.gif
delete mode 100644 public/stylesheets/jquery.ui/south-street/images/ui-bg_glass_55_fcf0ba_1x400.png
delete mode 100644 public/stylesheets/jquery.ui/south-street/images/ui-bg_gloss-wave_100_ece8da_500x100.png
delete mode 100644 public/stylesheets/jquery.ui/south-street/images/ui-bg_highlight-hard_100_f5f3e5_1x100.png
delete mode 100644 public/stylesheets/jquery.ui/south-street/images/ui-bg_highlight-hard_100_fafaf4_1x100.png
delete mode 100644 public/stylesheets/jquery.ui/south-street/images/ui-bg_highlight-hard_15_459e00_1x100.png
delete mode 100644 public/stylesheets/jquery.ui/south-street/images/ui-bg_highlight-hard_95_cccccc_1x100.png
delete mode 100644 public/stylesheets/jquery.ui/south-street/images/ui-bg_highlight-soft_25_67b021_1x100.png
delete mode 100644 public/stylesheets/jquery.ui/south-street/images/ui-bg_highlight-soft_95_ffedad_1x100.png
delete mode 100644 public/stylesheets/jquery.ui/south-street/images/ui-bg_inset-soft_15_2b2922_1x100.png
delete mode 100644 public/stylesheets/jquery.ui/south-street/images/ui-icons_808080_256x240.png
delete mode 100644 public/stylesheets/jquery.ui/south-street/images/ui-icons_847e71_256x240.png
delete mode 100644 public/stylesheets/jquery.ui/south-street/images/ui-icons_8dc262_256x240.png
delete mode 100644 public/stylesheets/jquery.ui/south-street/images/ui-icons_cd0a0a_256x240.png
delete mode 100644 public/stylesheets/jquery.ui/south-street/images/ui-icons_eeeeee_256x240.png
delete mode 100644 public/stylesheets/jquery.ui/south-street/images/ui-icons_ffffff_256x240.png
delete mode 100644 public/stylesheets/jquery.ui/south-street/jquery-ui-1.8.2.custom.css
delete mode 100644 public/stylesheets/jquery.ui/sunny-mod/images/ui-anim_basic_16x16.gif
delete mode 100644 public/stylesheets/jquery.ui/sunny-mod/images/ui-bg_diagonals-medium_20_d34d17_40x40.png
delete mode 100644 public/stylesheets/jquery.ui/sunny-mod/images/ui-bg_flat_30_cccccc_40x100.png
delete mode 100644 public/stylesheets/jquery.ui/sunny-mod/images/ui-bg_flat_50_5c5c5c_40x100.png
delete mode 100644 public/stylesheets/jquery.ui/sunny-mod/images/ui-bg_gloss-wave_30_888a85_500x100.png
delete mode 100644 public/stylesheets/jquery.ui/sunny-mod/images/ui-bg_gloss-wave_45_918e88_500x100.png
delete mode 100644 public/stylesheets/jquery.ui/sunny-mod/images/ui-bg_gloss-wave_60_fece2f_500x100.png
delete mode 100644 public/stylesheets/jquery.ui/sunny-mod/images/ui-bg_gloss-wave_70_ffdd57_500x100.png
delete mode 100644 public/stylesheets/jquery.ui/sunny-mod/images/ui-bg_gloss-wave_90_fff9e5_500x100.png
delete mode 100644 public/stylesheets/jquery.ui/sunny-mod/images/ui-bg_highlight-soft_0_feeebd_1x100.png
delete mode 100644 public/stylesheets/jquery.ui/sunny-mod/images/ui-bg_highlight-soft_70_feeebd_1x100.png
delete mode 100644 public/stylesheets/jquery.ui/sunny-mod/images/ui-bg_inset-soft_30_feeebd_1x100.png
delete mode 100644 public/stylesheets/jquery.ui/sunny-mod/images/ui-bg_inset-soft_70_feeebd_1x100.png
delete mode 100644 public/stylesheets/jquery.ui/sunny-mod/images/ui-icons_3d3d3d_256x240.png
delete mode 100644 public/stylesheets/jquery.ui/sunny-mod/images/ui-icons_bd7b00_256x240.png
delete mode 100644 public/stylesheets/jquery.ui/sunny-mod/images/ui-icons_d19405_256x240.png
delete mode 100644 public/stylesheets/jquery.ui/sunny-mod/images/ui-icons_eb990f_256x240.png
delete mode 100644 public/stylesheets/jquery.ui/sunny-mod/images/ui-icons_ed9f26_256x240.png
delete mode 100644 public/stylesheets/jquery.ui/sunny-mod/images/ui-icons_fadc7a_256x240.png
delete mode 100644 public/stylesheets/jquery.ui/sunny-mod/images/ui-icons_ffe180_256x240.png
delete mode 100644 public/stylesheets/jquery.ui/sunny-mod/jquery-ui-1.8.2.custom.css
delete mode 100644 public/stylesheets/jquery.ui/sunny/images/ui-anim_basic_16x16.gif
delete mode 100644 public/stylesheets/jquery.ui/sunny/images/ui-bg_diagonals-medium_20_d34d17_40x40.png
delete mode 100644 public/stylesheets/jquery.ui/sunny/images/ui-bg_flat_30_cccccc_40x100.png
delete mode 100644 public/stylesheets/jquery.ui/sunny/images/ui-bg_flat_50_5c5c5c_40x100.png
delete mode 100644 public/stylesheets/jquery.ui/sunny/images/ui-bg_gloss-wave_45_817865_500x100.png
delete mode 100644 public/stylesheets/jquery.ui/sunny/images/ui-bg_gloss-wave_60_fece2f_500x100.png
delete mode 100644 public/stylesheets/jquery.ui/sunny/images/ui-bg_gloss-wave_70_ffdd57_500x100.png
delete mode 100644 public/stylesheets/jquery.ui/sunny/images/ui-bg_gloss-wave_90_fff9e5_500x100.png
delete mode 100644 public/stylesheets/jquery.ui/sunny/images/ui-bg_highlight-soft_100_feeebd_1x100.png
delete mode 100644 public/stylesheets/jquery.ui/sunny/images/ui-bg_inset-soft_30_ffffff_1x100.png
delete mode 100644 public/stylesheets/jquery.ui/sunny/images/ui-icons_3d3d3d_256x240.png
delete mode 100644 public/stylesheets/jquery.ui/sunny/images/ui-icons_bd7b00_256x240.png
delete mode 100644 public/stylesheets/jquery.ui/sunny/images/ui-icons_d19405_256x240.png
delete mode 100644 public/stylesheets/jquery.ui/sunny/images/ui-icons_eb990f_256x240.png
delete mode 100644 public/stylesheets/jquery.ui/sunny/images/ui-icons_ed9f26_256x240.png
delete mode 100644 public/stylesheets/jquery.ui/sunny/images/ui-icons_fadc7a_256x240.png
delete mode 100644 public/stylesheets/jquery.ui/sunny/images/ui-icons_ffe180_256x240.png
delete mode 100644 public/stylesheets/jquery.ui/sunny/jquery-ui-1.8.2.custom.css
delete mode 100644 public/stylesheets/lightbox.css
delete mode 100644 public/stylesheets/search.css
delete mode 100644 public/stylesheets/slideshow.css
delete mode 100644 public/stylesheets/tasks.css
delete mode 100644 public/stylesheets/thickbox.css
delete mode 100644 public/stylesheets/tinymce.css
delete mode 100644 public/stylesheets/token-input-facebook.css
delete mode 100644 public/stylesheets/token-input-facet.css
delete mode 100644 public/stylesheets/token-input-mac.css
delete mode 100644 public/stylesheets/token-input.css
diff --git a/app/assets/images/balloon-footer.png b/app/assets/images/balloon-footer.png
new file mode 100644
index 0000000..3c1a606
Binary files /dev/null and b/app/assets/images/balloon-footer.png differ
diff --git a/app/assets/images/balloon-header.png b/app/assets/images/balloon-header.png
new file mode 100644
index 0000000..054e5d3
Binary files /dev/null and b/app/assets/images/balloon-header.png differ
diff --git a/app/assets/images/balloon-middle.png b/app/assets/images/balloon-middle.png
new file mode 100644
index 0000000..83cee0e
Binary files /dev/null and b/app/assets/images/balloon-middle.png differ
diff --git a/app/assets/images/beta.gif b/app/assets/images/beta.gif
new file mode 100644
index 0000000..8a05ac4
Binary files /dev/null and b/app/assets/images/beta.gif differ
diff --git a/app/assets/images/black-alpha-pixel-5.png b/app/assets/images/black-alpha-pixel-5.png
new file mode 100644
index 0000000..a728b36
Binary files /dev/null and b/app/assets/images/black-alpha-pixel-5.png differ
diff --git a/app/assets/images/black-alpha-pixel.png b/app/assets/images/black-alpha-pixel.png
new file mode 100644
index 0000000..aca41eb
Binary files /dev/null and b/app/assets/images/black-alpha-pixel.png differ
diff --git a/app/assets/images/blocks/1.png b/app/assets/images/blocks/1.png
new file mode 100644
index 0000000..7a3afb8
Binary files /dev/null and b/app/assets/images/blocks/1.png differ
diff --git a/app/assets/images/blocks/1.svg b/app/assets/images/blocks/1.svg
new file mode 100644
index 0000000..6f78f11
--- /dev/null
+++ b/app/assets/images/blocks/1.svg
@@ -0,0 +1,77 @@
+
+
+
+
+
+
+
+
+ image/svg+xml
+
+
+
+
+
+
+ 1
+
+
diff --git a/app/assets/images/blocks/2.png b/app/assets/images/blocks/2.png
new file mode 100644
index 0000000..3675e5e
Binary files /dev/null and b/app/assets/images/blocks/2.png differ
diff --git a/app/assets/images/blocks/2.svg b/app/assets/images/blocks/2.svg
new file mode 100644
index 0000000..f79707e
--- /dev/null
+++ b/app/assets/images/blocks/2.svg
@@ -0,0 +1,77 @@
+
+
+
+
+
+
+
+
+ image/svg+xml
+
+
+
+
+
+
+ 2
+
+
diff --git a/app/assets/images/blocks/3.png b/app/assets/images/blocks/3.png
new file mode 100644
index 0000000..bb2f7c5
Binary files /dev/null and b/app/assets/images/blocks/3.png differ
diff --git a/app/assets/images/blocks/3.svg b/app/assets/images/blocks/3.svg
new file mode 100644
index 0000000..7731380
--- /dev/null
+++ b/app/assets/images/blocks/3.svg
@@ -0,0 +1,77 @@
+
+
+
+
+
+
+
+
+ image/svg+xml
+
+
+
+
+
+
+ 3
+
+
diff --git a/app/assets/images/bolota.gif b/app/assets/images/bolota.gif
new file mode 100644
index 0000000..2001476
Binary files /dev/null and b/app/assets/images/bolota.gif differ
diff --git a/app/assets/images/borda-esq-aba-azul.gif b/app/assets/images/borda-esq-aba-azul.gif
new file mode 100644
index 0000000..0c356ae
Binary files /dev/null and b/app/assets/images/borda-esq-aba-azul.gif differ
diff --git a/app/assets/images/bt-bookmark.gif b/app/assets/images/bt-bookmark.gif
new file mode 100644
index 0000000..f7e3ce8
Binary files /dev/null and b/app/assets/images/bt-bookmark.gif differ
diff --git a/app/assets/images/calendar_date_select/calendar.gif b/app/assets/images/calendar_date_select/calendar.gif
new file mode 100644
index 0000000..6b7b7ca
Binary files /dev/null and b/app/assets/images/calendar_date_select/calendar.gif differ
diff --git a/app/assets/images/calendar_date_select/calendar.png b/app/assets/images/calendar_date_select/calendar.png
new file mode 100644
index 0000000..371f293
Binary files /dev/null and b/app/assets/images/calendar_date_select/calendar.png differ
diff --git a/app/assets/images/catalog-expanders.png b/app/assets/images/catalog-expanders.png
new file mode 100644
index 0000000..395e0b2
Binary files /dev/null and b/app/assets/images/catalog-expanders.png differ
diff --git a/app/assets/images/ccc.gif b/app/assets/images/ccc.gif
new file mode 100644
index 0000000..6066bef
Binary files /dev/null and b/app/assets/images/ccc.gif differ
diff --git a/app/assets/images/colorbox/border.png b/app/assets/images/colorbox/border.png
new file mode 100644
index 0000000..f463a10
Binary files /dev/null and b/app/assets/images/colorbox/border.png differ
diff --git a/app/assets/images/colorbox/controls.png b/app/assets/images/colorbox/controls.png
new file mode 100644
index 0000000..9257176
Binary files /dev/null and b/app/assets/images/colorbox/controls.png differ
diff --git a/app/assets/images/colorbox/ie6/borderBottomCenter.png b/app/assets/images/colorbox/ie6/borderBottomCenter.png
new file mode 100644
index 0000000..0d4475e
Binary files /dev/null and b/app/assets/images/colorbox/ie6/borderBottomCenter.png differ
diff --git a/app/assets/images/colorbox/ie6/borderBottomLeft.png b/app/assets/images/colorbox/ie6/borderBottomLeft.png
new file mode 100644
index 0000000..2775eba
Binary files /dev/null and b/app/assets/images/colorbox/ie6/borderBottomLeft.png differ
diff --git a/app/assets/images/colorbox/ie6/borderBottomRight.png b/app/assets/images/colorbox/ie6/borderBottomRight.png
new file mode 100644
index 0000000..f7f5137
Binary files /dev/null and b/app/assets/images/colorbox/ie6/borderBottomRight.png differ
diff --git a/app/assets/images/colorbox/ie6/borderMiddleLeft.png b/app/assets/images/colorbox/ie6/borderMiddleLeft.png
new file mode 100644
index 0000000..a2d63d1
Binary files /dev/null and b/app/assets/images/colorbox/ie6/borderMiddleLeft.png differ
diff --git a/app/assets/images/colorbox/ie6/borderMiddleRight.png b/app/assets/images/colorbox/ie6/borderMiddleRight.png
new file mode 100644
index 0000000..fd7c3e8
Binary files /dev/null and b/app/assets/images/colorbox/ie6/borderMiddleRight.png differ
diff --git a/app/assets/images/colorbox/ie6/borderTopCenter.png b/app/assets/images/colorbox/ie6/borderTopCenter.png
new file mode 100644
index 0000000..2937a9c
Binary files /dev/null and b/app/assets/images/colorbox/ie6/borderTopCenter.png differ
diff --git a/app/assets/images/colorbox/ie6/borderTopLeft.png b/app/assets/images/colorbox/ie6/borderTopLeft.png
new file mode 100644
index 0000000..f9d458b
Binary files /dev/null and b/app/assets/images/colorbox/ie6/borderTopLeft.png differ
diff --git a/app/assets/images/colorbox/ie6/borderTopRight.png b/app/assets/images/colorbox/ie6/borderTopRight.png
new file mode 100644
index 0000000..74b8583
Binary files /dev/null and b/app/assets/images/colorbox/ie6/borderTopRight.png differ
diff --git a/app/assets/images/colorbox/loading.gif b/app/assets/images/colorbox/loading.gif
new file mode 100644
index 0000000..b4695d8
Binary files /dev/null and b/app/assets/images/colorbox/loading.gif differ
diff --git a/app/assets/images/colorbox/loading_background.png b/app/assets/images/colorbox/loading_background.png
new file mode 100644
index 0000000..6ae83e6
Binary files /dev/null and b/app/assets/images/colorbox/loading_background.png differ
diff --git a/app/assets/images/colorbox/overlay.png b/app/assets/images/colorbox/overlay.png
new file mode 100644
index 0000000..53ea98f
Binary files /dev/null and b/app/assets/images/colorbox/overlay.png differ
diff --git a/app/assets/images/colorpicker/apply.png b/app/assets/images/colorpicker/apply.png
new file mode 100644
index 0000000..56ef039
Binary files /dev/null and b/app/assets/images/colorpicker/apply.png differ
diff --git a/app/assets/images/colorpicker/gradiente.png b/app/assets/images/colorpicker/gradiente.png
new file mode 100644
index 0000000..8af6749
Binary files /dev/null and b/app/assets/images/colorpicker/gradiente.png differ
diff --git a/app/assets/images/colorpicker/indic.gif b/app/assets/images/colorpicker/indic.gif
new file mode 100644
index 0000000..f9fa95e
Binary files /dev/null and b/app/assets/images/colorpicker/indic.gif differ
diff --git a/app/assets/images/colorpicker/overlay.png b/app/assets/images/colorpicker/overlay.png
new file mode 100644
index 0000000..561cdd9
Binary files /dev/null and b/app/assets/images/colorpicker/overlay.png differ
diff --git a/app/assets/images/colorpicker/select.gif b/app/assets/images/colorpicker/select.gif
new file mode 100644
index 0000000..599f7f1
Binary files /dev/null and b/app/assets/images/colorpicker/select.gif differ
diff --git a/app/assets/images/comment-owner-bg-L.png b/app/assets/images/comment-owner-bg-L.png
new file mode 100644
index 0000000..457eaa1
Binary files /dev/null and b/app/assets/images/comment-owner-bg-L.png differ
diff --git a/app/assets/images/comment-owner-bg-N.png b/app/assets/images/comment-owner-bg-N.png
new file mode 100644
index 0000000..f515550
Binary files /dev/null and b/app/assets/images/comment-owner-bg-N.png differ
diff --git a/app/assets/images/comment-owner-bg-NL.png b/app/assets/images/comment-owner-bg-NL.png
new file mode 100644
index 0000000..ebbe1c5
Binary files /dev/null and b/app/assets/images/comment-owner-bg-NL.png differ
diff --git a/app/assets/images/comment-owner-bg-NO.png b/app/assets/images/comment-owner-bg-NO.png
new file mode 100644
index 0000000..3482700
Binary files /dev/null and b/app/assets/images/comment-owner-bg-NO.png differ
diff --git a/app/assets/images/comment-owner-bg-O.png b/app/assets/images/comment-owner-bg-O.png
new file mode 100644
index 0000000..4a73252
Binary files /dev/null and b/app/assets/images/comment-owner-bg-O.png differ
diff --git a/app/assets/images/comment-owner-bg-S.png b/app/assets/images/comment-owner-bg-S.png
new file mode 100644
index 0000000..04b0ca3
Binary files /dev/null and b/app/assets/images/comment-owner-bg-S.png differ
diff --git a/app/assets/images/comment-owner-bg-SL.png b/app/assets/images/comment-owner-bg-SL.png
new file mode 100644
index 0000000..9eaa0fd
Binary files /dev/null and b/app/assets/images/comment-owner-bg-SL.png differ
diff --git a/app/assets/images/comment-owner-bg-SO.png b/app/assets/images/comment-owner-bg-SO.png
new file mode 100644
index 0000000..b939083
Binary files /dev/null and b/app/assets/images/comment-owner-bg-SO.png differ
diff --git a/app/assets/images/comment-reply-owner-bg.png b/app/assets/images/comment-reply-owner-bg.png
new file mode 100644
index 0000000..a25aeb3
Binary files /dev/null and b/app/assets/images/comment-reply-owner-bg.png differ
diff --git a/app/assets/images/control-panel/Makefile b/app/assets/images/control-panel/Makefile
new file mode 100644
index 0000000..3a03653
--- /dev/null
+++ b/app/assets/images/control-panel/Makefile
@@ -0,0 +1,13 @@
+PNGS = $(patsubst %.svg, %.png, $(wildcard *.svg))
+GIFS = $(patsubst %.svg, %.gif, $(wildcard *.svg))
+
+%.png: %.svg
+ inkscape -w 48 -h 48 -e $@ $<
+
+%.gif : %.png
+ convert $< $@
+
+all: $(GIFS) $(PNGS)
+
+clean:
+ rm -f $(GIFS) $(PNGS)
diff --git a/app/assets/images/control-panel/application-certificate.gif b/app/assets/images/control-panel/application-certificate.gif
new file mode 100644
index 0000000..745aee4
Binary files /dev/null and b/app/assets/images/control-panel/application-certificate.gif differ
diff --git a/app/assets/images/control-panel/application-certificate.png b/app/assets/images/control-panel/application-certificate.png
new file mode 100644
index 0000000..8936758
Binary files /dev/null and b/app/assets/images/control-panel/application-certificate.png differ
diff --git a/app/assets/images/control-panel/application-certificate.svg b/app/assets/images/control-panel/application-certificate.svg
new file mode 100644
index 0000000..077f741
--- /dev/null
+++ b/app/assets/images/control-panel/application-certificate.svg
@@ -0,0 +1,443 @@
+
+
+
+
+
+ image/svg+xml
+
+
+
+
+
+ Certificate Jakub Steiner certificate
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/assets/images/control-panel/blocks.gif b/app/assets/images/control-panel/blocks.gif
new file mode 100644
index 0000000..6eb69f2
Binary files /dev/null and b/app/assets/images/control-panel/blocks.gif differ
diff --git a/app/assets/images/control-panel/blocks.png b/app/assets/images/control-panel/blocks.png
new file mode 100644
index 0000000..d2ef64b
Binary files /dev/null and b/app/assets/images/control-panel/blocks.png differ
diff --git a/app/assets/images/control-panel/blocks.svg b/app/assets/images/control-panel/blocks.svg
new file mode 100644
index 0000000..0f5c510
--- /dev/null
+++ b/app/assets/images/control-panel/blocks.svg
@@ -0,0 +1,334 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ image/svg+xml
+
+ Justify Right
+ 2005-10-29
+
+
+ Andreas Nilsson
+
+
+
+
+ justify
+ left
+ format
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/assets/images/control-panel/contact.gif b/app/assets/images/control-panel/contact.gif
new file mode 100644
index 0000000..25c56b3
Binary files /dev/null and b/app/assets/images/control-panel/contact.gif differ
diff --git a/app/assets/images/control-panel/contact.png b/app/assets/images/control-panel/contact.png
new file mode 100644
index 0000000..e85a140
Binary files /dev/null and b/app/assets/images/control-panel/contact.png differ
diff --git a/app/assets/images/control-panel/contact.svg b/app/assets/images/control-panel/contact.svg
new file mode 100644
index 0000000..f20c4cb
--- /dev/null
+++ b/app/assets/images/control-panel/contact.svg
@@ -0,0 +1,795 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ image/svg+xml
+
+
+
+ Jakub Steiner
+
+
+ http://jimmac.musichall.cz
+
+ New Contact
+
+
+ address
+ contact
+ e-mail
+ person
+ information
+ card
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fulana
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fulana
+
+
diff --git a/app/assets/images/control-panel/edit-profile-enterprise.gif b/app/assets/images/control-panel/edit-profile-enterprise.gif
new file mode 100644
index 0000000..f87d3fb
Binary files /dev/null and b/app/assets/images/control-panel/edit-profile-enterprise.gif differ
diff --git a/app/assets/images/control-panel/edit-profile-enterprise.png b/app/assets/images/control-panel/edit-profile-enterprise.png
new file mode 100644
index 0000000..39854d4
Binary files /dev/null and b/app/assets/images/control-panel/edit-profile-enterprise.png differ
diff --git a/app/assets/images/control-panel/edit-profile-enterprise.svg b/app/assets/images/control-panel/edit-profile-enterprise.svg
new file mode 100644
index 0000000..5ad24c0
--- /dev/null
+++ b/app/assets/images/control-panel/edit-profile-enterprise.svg
@@ -0,0 +1,549 @@
+
+image/svg+xml Go Home Jakub Steiner http://jimmac.musichall.cz home return go default user directory Tuomas Kuosmanen
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/assets/images/control-panel/edit-profile-group.gif b/app/assets/images/control-panel/edit-profile-group.gif
new file mode 100644
index 0000000..a3e5008
Binary files /dev/null and b/app/assets/images/control-panel/edit-profile-group.gif differ
diff --git a/app/assets/images/control-panel/edit-profile-group.png b/app/assets/images/control-panel/edit-profile-group.png
new file mode 100644
index 0000000..0ca3a80
Binary files /dev/null and b/app/assets/images/control-panel/edit-profile-group.png differ
diff --git a/app/assets/images/control-panel/edit-profile-group.svg b/app/assets/images/control-panel/edit-profile-group.svg
new file mode 100644
index 0000000..f7fc51d
--- /dev/null
+++ b/app/assets/images/control-panel/edit-profile-group.svg
@@ -0,0 +1,675 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ image/svg+xml
+
+ People
+
+
+ Jakub Steiner
+
+
+ http://jimmac.musichall.cz
+
+
+ users
+ people
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/assets/images/control-panel/edit-profile.gif b/app/assets/images/control-panel/edit-profile.gif
new file mode 100644
index 0000000..8de4ef0
Binary files /dev/null and b/app/assets/images/control-panel/edit-profile.gif differ
diff --git a/app/assets/images/control-panel/edit-profile.png b/app/assets/images/control-panel/edit-profile.png
new file mode 100644
index 0000000..bf406c9
Binary files /dev/null and b/app/assets/images/control-panel/edit-profile.png differ
diff --git a/app/assets/images/control-panel/edit-profile.svg b/app/assets/images/control-panel/edit-profile.svg
new file mode 100644
index 0000000..d5edfba
--- /dev/null
+++ b/app/assets/images/control-panel/edit-profile.svg
@@ -0,0 +1,590 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ image/svg+xml
+
+ People
+
+
+ Jakub Steiner
+
+
+ http://jimmac.musichall.cz
+
+
+ users
+ people
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/assets/images/control-panel/editpaste.gif b/app/assets/images/control-panel/editpaste.gif
new file mode 100644
index 0000000..534717f
Binary files /dev/null and b/app/assets/images/control-panel/editpaste.gif differ
diff --git a/app/assets/images/control-panel/editpaste.png b/app/assets/images/control-panel/editpaste.png
new file mode 100644
index 0000000..1116e53
Binary files /dev/null and b/app/assets/images/control-panel/editpaste.png differ
diff --git a/app/assets/images/control-panel/editpaste.svg b/app/assets/images/control-panel/editpaste.svg
new file mode 120000
index 0000000..587b2f0
--- /dev/null
+++ b/app/assets/images/control-panel/editpaste.svg
@@ -0,0 +1 @@
+/usr/share/icons/Tango/scalable/actions/editpaste.svg
\ No newline at end of file
diff --git a/app/assets/images/control-panel/email.gif b/app/assets/images/control-panel/email.gif
new file mode 100644
index 0000000..b4043d1
Binary files /dev/null and b/app/assets/images/control-panel/email.gif differ
diff --git a/app/assets/images/control-panel/email.png b/app/assets/images/control-panel/email.png
new file mode 100644
index 0000000..b611be2
Binary files /dev/null and b/app/assets/images/control-panel/email.png differ
diff --git a/app/assets/images/control-panel/email.svg b/app/assets/images/control-panel/email.svg
new file mode 120000
index 0000000..300cd62
--- /dev/null
+++ b/app/assets/images/control-panel/email.svg
@@ -0,0 +1 @@
+/usr/share/icons/Tango/scalable/apps/email.svg
\ No newline at end of file
diff --git a/app/assets/images/control-panel/emblem-favorite.gif b/app/assets/images/control-panel/emblem-favorite.gif
new file mode 100644
index 0000000..37e3c8f
Binary files /dev/null and b/app/assets/images/control-panel/emblem-favorite.gif differ
diff --git a/app/assets/images/control-panel/emblem-favorite.png b/app/assets/images/control-panel/emblem-favorite.png
new file mode 100644
index 0000000..f17e861
Binary files /dev/null and b/app/assets/images/control-panel/emblem-favorite.png differ
diff --git a/app/assets/images/control-panel/emblem-favorite.svg b/app/assets/images/control-panel/emblem-favorite.svg
new file mode 120000
index 0000000..d2c3e04
--- /dev/null
+++ b/app/assets/images/control-panel/emblem-favorite.svg
@@ -0,0 +1 @@
+/usr/share/icons/Tango/scalable/emblems/emblem-favorite.svg
\ No newline at end of file
diff --git a/app/assets/images/control-panel/header-footer.gif b/app/assets/images/control-panel/header-footer.gif
new file mode 100644
index 0000000..bf23f9f
Binary files /dev/null and b/app/assets/images/control-panel/header-footer.gif differ
diff --git a/app/assets/images/control-panel/header-footer.png b/app/assets/images/control-panel/header-footer.png
new file mode 100644
index 0000000..97b9be5
Binary files /dev/null and b/app/assets/images/control-panel/header-footer.png differ
diff --git a/app/assets/images/control-panel/header-footer.svg b/app/assets/images/control-panel/header-footer.svg
new file mode 100644
index 0000000..901b275
--- /dev/null
+++ b/app/assets/images/control-panel/header-footer.svg
@@ -0,0 +1,325 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ image/svg+xml
+
+ Justify Right
+ 2005-10-29
+
+
+ Andreas Nilsson
+
+
+
+
+ justify
+ left
+ format
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/assets/images/control-panel/important.gif b/app/assets/images/control-panel/important.gif
new file mode 100644
index 0000000..c4d634b
Binary files /dev/null and b/app/assets/images/control-panel/important.gif differ
diff --git a/app/assets/images/control-panel/important.png b/app/assets/images/control-panel/important.png
new file mode 100644
index 0000000..a80d024
Binary files /dev/null and b/app/assets/images/control-panel/important.png differ
diff --git a/app/assets/images/control-panel/important.svg b/app/assets/images/control-panel/important.svg
new file mode 120000
index 0000000..239577f
--- /dev/null
+++ b/app/assets/images/control-panel/important.svg
@@ -0,0 +1 @@
+/usr/share/icons/Tango/scalable/status/important.svg
\ No newline at end of file
diff --git a/app/assets/images/control-panel/mail-mark-junk.png b/app/assets/images/control-panel/mail-mark-junk.png
new file mode 100644
index 0000000..d14f23f
Binary files /dev/null and b/app/assets/images/control-panel/mail-mark-junk.png differ
diff --git a/app/assets/images/control-panel/mail-mark-junk.svg b/app/assets/images/control-panel/mail-mark-junk.svg
new file mode 100644
index 0000000..0163175
--- /dev/null
+++ b/app/assets/images/control-panel/mail-mark-junk.svg
@@ -0,0 +1,504 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ image/svg+xml
+
+
+
+ Jakub Steiner
+
+
+ http://jimmac.musichall.cz
+
+ Mark mail as Junk
+
+
+ mail
+ spam
+ junk
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/assets/images/control-panel/package.gif b/app/assets/images/control-panel/package.gif
new file mode 100644
index 0000000..e14a2a7
Binary files /dev/null and b/app/assets/images/control-panel/package.gif differ
diff --git a/app/assets/images/control-panel/package.png b/app/assets/images/control-panel/package.png
new file mode 100644
index 0000000..37c8365
Binary files /dev/null and b/app/assets/images/control-panel/package.png differ
diff --git a/app/assets/images/control-panel/package.svg b/app/assets/images/control-panel/package.svg
new file mode 100644
index 0000000..47beed7
--- /dev/null
+++ b/app/assets/images/control-panel/package.svg
@@ -0,0 +1,485 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ image/svg+xml
+
+ Package
+
+
+ Jakub Steiner
+
+
+ http://jimmac.musichall.cz/
+
+
+ package
+ archive
+ tarball
+ tar
+ bzip
+ gzip
+ zip
+ arj
+ tar
+ jar
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/assets/images/control-panel/password.gif b/app/assets/images/control-panel/password.gif
new file mode 100644
index 0000000..019c78a
Binary files /dev/null and b/app/assets/images/control-panel/password.gif differ
diff --git a/app/assets/images/control-panel/password.png b/app/assets/images/control-panel/password.png
new file mode 100644
index 0000000..e40fa21
Binary files /dev/null and b/app/assets/images/control-panel/password.png differ
diff --git a/app/assets/images/control-panel/password.svg b/app/assets/images/control-panel/password.svg
new file mode 120000
index 0000000..916daa0
--- /dev/null
+++ b/app/assets/images/control-panel/password.svg
@@ -0,0 +1 @@
+../../designs/icons/tango/mod/scalable/actions/password.svg
\ No newline at end of file
diff --git a/app/assets/images/control-panel/preferences-desktop-wallpaper.gif b/app/assets/images/control-panel/preferences-desktop-wallpaper.gif
new file mode 100644
index 0000000..1971a50
Binary files /dev/null and b/app/assets/images/control-panel/preferences-desktop-wallpaper.gif differ
diff --git a/app/assets/images/control-panel/preferences-desktop-wallpaper.png b/app/assets/images/control-panel/preferences-desktop-wallpaper.png
new file mode 100644
index 0000000..79e76c7
Binary files /dev/null and b/app/assets/images/control-panel/preferences-desktop-wallpaper.png differ
diff --git a/app/assets/images/control-panel/preferences-desktop-wallpaper.svg b/app/assets/images/control-panel/preferences-desktop-wallpaper.svg
new file mode 120000
index 0000000..7292175
--- /dev/null
+++ b/app/assets/images/control-panel/preferences-desktop-wallpaper.svg
@@ -0,0 +1 @@
+/usr/share/icons/Tango/scalable/apps/preferences-desktop-wallpaper.svg
\ No newline at end of file
diff --git a/app/assets/images/control-panel/set-geolocation.gif b/app/assets/images/control-panel/set-geolocation.gif
new file mode 100644
index 0000000..3cc321b
Binary files /dev/null and b/app/assets/images/control-panel/set-geolocation.gif differ
diff --git a/app/assets/images/control-panel/set-geolocation.png b/app/assets/images/control-panel/set-geolocation.png
new file mode 100644
index 0000000..d6f8170
Binary files /dev/null and b/app/assets/images/control-panel/set-geolocation.png differ
diff --git a/app/assets/images/control-panel/stop.gif b/app/assets/images/control-panel/stop.gif
new file mode 100644
index 0000000..0b3cd56
Binary files /dev/null and b/app/assets/images/control-panel/stop.gif differ
diff --git a/app/assets/images/control-panel/stop.png b/app/assets/images/control-panel/stop.png
new file mode 100644
index 0000000..6fe29db
Binary files /dev/null and b/app/assets/images/control-panel/stop.png differ
diff --git a/app/assets/images/control-panel/stop.svg b/app/assets/images/control-panel/stop.svg
new file mode 100644
index 0000000..04ce3a7
--- /dev/null
+++ b/app/assets/images/control-panel/stop.svg
@@ -0,0 +1,336 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ image/svg+xml
+
+ Stop
+ 2005-10-16
+
+
+ Andreas Nilsson
+
+
+
+
+ stop
+ halt
+ error
+
+
+
+
+
+ Jakub Steiner
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/assets/images/control-panel/system-file-manager.gif b/app/assets/images/control-panel/system-file-manager.gif
new file mode 100644
index 0000000..419c98c
Binary files /dev/null and b/app/assets/images/control-panel/system-file-manager.gif differ
diff --git a/app/assets/images/control-panel/system-file-manager.png b/app/assets/images/control-panel/system-file-manager.png
new file mode 100644
index 0000000..65a9c73
Binary files /dev/null and b/app/assets/images/control-panel/system-file-manager.png differ
diff --git a/app/assets/images/control-panel/system-file-manager.svg b/app/assets/images/control-panel/system-file-manager.svg
new file mode 120000
index 0000000..a2bf4ff
--- /dev/null
+++ b/app/assets/images/control-panel/system-file-manager.svg
@@ -0,0 +1 @@
+/usr/share/icons/Tango/scalable/apps/system-file-manager.svg
\ No newline at end of file
diff --git a/app/assets/images/control-panel/system-users.gif b/app/assets/images/control-panel/system-users.gif
new file mode 100644
index 0000000..c99fbb4
Binary files /dev/null and b/app/assets/images/control-panel/system-users.gif differ
diff --git a/app/assets/images/control-panel/system-users.png b/app/assets/images/control-panel/system-users.png
new file mode 100644
index 0000000..33a3bec
Binary files /dev/null and b/app/assets/images/control-panel/system-users.png differ
diff --git a/app/assets/images/control-panel/system-users.svg b/app/assets/images/control-panel/system-users.svg
new file mode 120000
index 0000000..5b52232
--- /dev/null
+++ b/app/assets/images/control-panel/system-users.svg
@@ -0,0 +1 @@
+/usr/share/icons/Tango/scalable/apps/system-users.svg
\ No newline at end of file
diff --git a/app/assets/images/control-panel/text-editor-disabled.gif b/app/assets/images/control-panel/text-editor-disabled.gif
new file mode 100644
index 0000000..5b1a9f0
Binary files /dev/null and b/app/assets/images/control-panel/text-editor-disabled.gif differ
diff --git a/app/assets/images/control-panel/text-editor-disabled.png b/app/assets/images/control-panel/text-editor-disabled.png
new file mode 120000
index 0000000..9ac54ac
--- /dev/null
+++ b/app/assets/images/control-panel/text-editor-disabled.png
@@ -0,0 +1 @@
+../../designs/icons/tango/mod/48x48/apps/text-editor.png
\ No newline at end of file
diff --git a/app/assets/images/control-panel/text-editor-disabled.svg b/app/assets/images/control-panel/text-editor-disabled.svg
new file mode 120000
index 0000000..2d77626
--- /dev/null
+++ b/app/assets/images/control-panel/text-editor-disabled.svg
@@ -0,0 +1 @@
+../../designs/icons/tango/mod/scalable/apps/text-editor.svg
\ No newline at end of file
diff --git a/app/assets/images/control-panel/text-editor.gif b/app/assets/images/control-panel/text-editor.gif
new file mode 100644
index 0000000..b923b13
Binary files /dev/null and b/app/assets/images/control-panel/text-editor.gif differ
diff --git a/app/assets/images/control-panel/text-editor.png b/app/assets/images/control-panel/text-editor.png
new file mode 100644
index 0000000..bd26767
Binary files /dev/null and b/app/assets/images/control-panel/text-editor.png differ
diff --git a/app/assets/images/control-panel/text-editor.svg b/app/assets/images/control-panel/text-editor.svg
new file mode 120000
index 0000000..117e78f
--- /dev/null
+++ b/app/assets/images/control-panel/text-editor.svg
@@ -0,0 +1 @@
+/usr/share/icons/Tango/scalable/apps/text-editor.svg
\ No newline at end of file
diff --git a/app/assets/images/doc/activation-conlusion.en.png b/app/assets/images/doc/activation-conlusion.en.png
new file mode 100644
index 0000000..48581a2
Binary files /dev/null and b/app/assets/images/doc/activation-conlusion.en.png differ
diff --git a/app/assets/images/doc/activation-conlusion.pt.png b/app/assets/images/doc/activation-conlusion.pt.png
new file mode 100644
index 0000000..c146160
Binary files /dev/null and b/app/assets/images/doc/activation-conlusion.pt.png differ
diff --git a/app/assets/images/doc/activation-question.en.png b/app/assets/images/doc/activation-question.en.png
new file mode 100644
index 0000000..6bdbf2c
Binary files /dev/null and b/app/assets/images/doc/activation-question.en.png differ
diff --git a/app/assets/images/doc/activation-question.pt.png b/app/assets/images/doc/activation-question.pt.png
new file mode 100644
index 0000000..4f495bf
Binary files /dev/null and b/app/assets/images/doc/activation-question.pt.png differ
diff --git a/app/assets/images/doc/add-member-enterprise.en.png b/app/assets/images/doc/add-member-enterprise.en.png
new file mode 100644
index 0000000..d869a95
Binary files /dev/null and b/app/assets/images/doc/add-member-enterprise.en.png differ
diff --git a/app/assets/images/doc/add-member-enterprise.pt.png b/app/assets/images/doc/add-member-enterprise.pt.png
new file mode 100644
index 0000000..c08e6a3
Binary files /dev/null and b/app/assets/images/doc/add-member-enterprise.pt.png differ
diff --git a/app/assets/images/doc/admin-panel-export-users.en.png b/app/assets/images/doc/admin-panel-export-users.en.png
new file mode 100644
index 0000000..c3b99d0
Binary files /dev/null and b/app/assets/images/doc/admin-panel-export-users.en.png differ
diff --git a/app/assets/images/doc/admin-panel-export-users.pt.png b/app/assets/images/doc/admin-panel-export-users.pt.png
new file mode 100644
index 0000000..81887c3
Binary files /dev/null and b/app/assets/images/doc/admin-panel-export-users.pt.png differ
diff --git a/app/assets/images/doc/admin-panel-manage-users.en.png b/app/assets/images/doc/admin-panel-manage-users.en.png
new file mode 100644
index 0000000..c287fc8
Binary files /dev/null and b/app/assets/images/doc/admin-panel-manage-users.en.png differ
diff --git a/app/assets/images/doc/admin-panel-manage-users.pt.png b/app/assets/images/doc/admin-panel-manage-users.pt.png
new file mode 100644
index 0000000..cbe1e9a
Binary files /dev/null and b/app/assets/images/doc/admin-panel-manage-users.pt.png differ
diff --git a/app/assets/images/doc/admin-panel-send-email.en.png b/app/assets/images/doc/admin-panel-send-email.en.png
new file mode 100644
index 0000000..e9ea313
Binary files /dev/null and b/app/assets/images/doc/admin-panel-send-email.en.png differ
diff --git a/app/assets/images/doc/admin-panel-send-email.pt.png b/app/assets/images/doc/admin-panel-send-email.pt.png
new file mode 100644
index 0000000..0a54e73
Binary files /dev/null and b/app/assets/images/doc/admin-panel-send-email.pt.png differ
diff --git a/app/assets/images/doc/admin-send-email.en.png b/app/assets/images/doc/admin-send-email.en.png
new file mode 100644
index 0000000..59c1b4f
Binary files /dev/null and b/app/assets/images/doc/admin-send-email.en.png differ
diff --git a/app/assets/images/doc/admin-send-email.pt.png b/app/assets/images/doc/admin-send-email.pt.png
new file mode 100644
index 0000000..2db17f3
Binary files /dev/null and b/app/assets/images/doc/admin-send-email.pt.png differ
diff --git a/app/assets/images/doc/advanced-article-archives-list.en.png b/app/assets/images/doc/advanced-article-archives-list.en.png
new file mode 100644
index 0000000..246cac1
Binary files /dev/null and b/app/assets/images/doc/advanced-article-archives-list.en.png differ
diff --git a/app/assets/images/doc/advanced-article-archives-list.pt.png b/app/assets/images/doc/advanced-article-archives-list.pt.png
new file mode 100644
index 0000000..91fdf51
Binary files /dev/null and b/app/assets/images/doc/advanced-article-archives-list.pt.png differ
diff --git a/app/assets/images/doc/advanced-article-created-link.en.png b/app/assets/images/doc/advanced-article-created-link.en.png
new file mode 100644
index 0000000..47c90fa
Binary files /dev/null and b/app/assets/images/doc/advanced-article-created-link.en.png differ
diff --git a/app/assets/images/doc/advanced-article-created-link.pt.png b/app/assets/images/doc/advanced-article-created-link.pt.png
new file mode 100644
index 0000000..50059b3
Binary files /dev/null and b/app/assets/images/doc/advanced-article-created-link.pt.png differ
diff --git a/app/assets/images/doc/advanced-article-created-object.en.png b/app/assets/images/doc/advanced-article-created-object.en.png
new file mode 100644
index 0000000..6244572
Binary files /dev/null and b/app/assets/images/doc/advanced-article-created-object.en.png differ
diff --git a/app/assets/images/doc/advanced-article-created-object.pt.png b/app/assets/images/doc/advanced-article-created-object.pt.png
new file mode 100644
index 0000000..d4f0a69
Binary files /dev/null and b/app/assets/images/doc/advanced-article-created-object.pt.png differ
diff --git a/app/assets/images/doc/advanced-article-insert-html.en.png b/app/assets/images/doc/advanced-article-insert-html.en.png
new file mode 100644
index 0000000..61609c5
Binary files /dev/null and b/app/assets/images/doc/advanced-article-insert-html.en.png differ
diff --git a/app/assets/images/doc/advanced-article-insert-html.pt.png b/app/assets/images/doc/advanced-article-insert-html.pt.png
new file mode 100644
index 0000000..9d5410d
Binary files /dev/null and b/app/assets/images/doc/advanced-article-insert-html.pt.png differ
diff --git a/app/assets/images/doc/advanced-article-insert-links.en.png b/app/assets/images/doc/advanced-article-insert-links.en.png
new file mode 100644
index 0000000..b9c475f
Binary files /dev/null and b/app/assets/images/doc/advanced-article-insert-links.en.png differ
diff --git a/app/assets/images/doc/advanced-article-insert-links.pt.png b/app/assets/images/doc/advanced-article-insert-links.pt.png
new file mode 100644
index 0000000..fde699e
Binary files /dev/null and b/app/assets/images/doc/advanced-article-insert-links.pt.png differ
diff --git a/app/assets/images/doc/advanced-article-popup-insert-html.en.png b/app/assets/images/doc/advanced-article-popup-insert-html.en.png
new file mode 100644
index 0000000..c5b495d
Binary files /dev/null and b/app/assets/images/doc/advanced-article-popup-insert-html.en.png differ
diff --git a/app/assets/images/doc/advanced-article-popup-insert-html.pt.png b/app/assets/images/doc/advanced-article-popup-insert-html.pt.png
new file mode 100644
index 0000000..bfa7f39
Binary files /dev/null and b/app/assets/images/doc/advanced-article-popup-insert-html.pt.png differ
diff --git a/app/assets/images/doc/advanced-article-popup-insert-link.en.png b/app/assets/images/doc/advanced-article-popup-insert-link.en.png
new file mode 100644
index 0000000..1d10469
Binary files /dev/null and b/app/assets/images/doc/advanced-article-popup-insert-link.en.png differ
diff --git a/app/assets/images/doc/advanced-article-popup-insert-link.pt.png b/app/assets/images/doc/advanced-article-popup-insert-link.pt.png
new file mode 100644
index 0000000..a01a24c
Binary files /dev/null and b/app/assets/images/doc/advanced-article-popup-insert-link.pt.png differ
diff --git a/app/assets/images/doc/advanced-article-upload-images.en.png b/app/assets/images/doc/advanced-article-upload-images.en.png
new file mode 100644
index 0000000..cf506a7
Binary files /dev/null and b/app/assets/images/doc/advanced-article-upload-images.en.png differ
diff --git a/app/assets/images/doc/advanced-article-upload-images.pt.png b/app/assets/images/doc/advanced-article-upload-images.pt.png
new file mode 100644
index 0000000..e790653
Binary files /dev/null and b/app/assets/images/doc/advanced-article-upload-images.pt.png differ
diff --git a/app/assets/images/doc/article-bigger-spread-view.en.png b/app/assets/images/doc/article-bigger-spread-view.en.png
new file mode 100644
index 0000000..926b587
Binary files /dev/null and b/app/assets/images/doc/article-bigger-spread-view.en.png differ
diff --git a/app/assets/images/doc/article-bigger-spread-view.pt.png b/app/assets/images/doc/article-bigger-spread-view.pt.png
new file mode 100644
index 0000000..a404e26
Binary files /dev/null and b/app/assets/images/doc/article-bigger-spread-view.pt.png differ
diff --git a/app/assets/images/doc/article-block.en.png b/app/assets/images/doc/article-block.en.png
new file mode 100644
index 0000000..2cc6404
Binary files /dev/null and b/app/assets/images/doc/article-block.en.png differ
diff --git a/app/assets/images/doc/article-block.pt.png b/app/assets/images/doc/article-block.pt.png
new file mode 100644
index 0000000..3b19b60
Binary files /dev/null and b/app/assets/images/doc/article-block.pt.png differ
diff --git a/app/assets/images/doc/article-creation-categorization.en.png b/app/assets/images/doc/article-creation-categorization.en.png
new file mode 100644
index 0000000..4da74d0
Binary files /dev/null and b/app/assets/images/doc/article-creation-categorization.en.png differ
diff --git a/app/assets/images/doc/article-creation-categorization.pt.png b/app/assets/images/doc/article-creation-categorization.pt.png
new file mode 100644
index 0000000..288fa65
Binary files /dev/null and b/app/assets/images/doc/article-creation-categorization.pt.png differ
diff --git a/app/assets/images/doc/article-creation-category-choosen.en.png b/app/assets/images/doc/article-creation-category-choosen.en.png
new file mode 100644
index 0000000..a878bd1
Binary files /dev/null and b/app/assets/images/doc/article-creation-category-choosen.en.png differ
diff --git a/app/assets/images/doc/article-creation-category-choosen.pt.png b/app/assets/images/doc/article-creation-category-choosen.pt.png
new file mode 100644
index 0000000..cda070d
Binary files /dev/null and b/app/assets/images/doc/article-creation-category-choosen.pt.png differ
diff --git a/app/assets/images/doc/article-creation-options.en.png b/app/assets/images/doc/article-creation-options.en.png
new file mode 100644
index 0000000..601a97c
Binary files /dev/null and b/app/assets/images/doc/article-creation-options.en.png differ
diff --git a/app/assets/images/doc/article-creation-options.pt.png b/app/assets/images/doc/article-creation-options.pt.png
new file mode 100644
index 0000000..bee4a35
Binary files /dev/null and b/app/assets/images/doc/article-creation-options.pt.png differ
diff --git a/app/assets/images/doc/article-creation-tags.en.png b/app/assets/images/doc/article-creation-tags.en.png
new file mode 100644
index 0000000..2c7f370
Binary files /dev/null and b/app/assets/images/doc/article-creation-tags.en.png differ
diff --git a/app/assets/images/doc/article-creation-tags.pt.png b/app/assets/images/doc/article-creation-tags.pt.png
new file mode 100644
index 0000000..b5a3904
Binary files /dev/null and b/app/assets/images/doc/article-creation-tags.pt.png differ
diff --git a/app/assets/images/doc/article-spread-view.en.png b/app/assets/images/doc/article-spread-view.en.png
new file mode 100644
index 0000000..05be735
Binary files /dev/null and b/app/assets/images/doc/article-spread-view.en.png differ
diff --git a/app/assets/images/doc/article-spread-view.pt.png b/app/assets/images/doc/article-spread-view.pt.png
new file mode 100644
index 0000000..841336f
Binary files /dev/null and b/app/assets/images/doc/article-spread-view.pt.png differ
diff --git a/app/assets/images/doc/article-spread.en.png b/app/assets/images/doc/article-spread.en.png
new file mode 100644
index 0000000..1f7b797
Binary files /dev/null and b/app/assets/images/doc/article-spread.en.png differ
diff --git a/app/assets/images/doc/article-spread.pt.png b/app/assets/images/doc/article-spread.pt.png
new file mode 100644
index 0000000..393b0a4
Binary files /dev/null and b/app/assets/images/doc/article-spread.pt.png differ
diff --git a/app/assets/images/doc/article-text-lead.en.png b/app/assets/images/doc/article-text-lead.en.png
new file mode 100644
index 0000000..48cf0ee
Binary files /dev/null and b/app/assets/images/doc/article-text-lead.en.png differ
diff --git a/app/assets/images/doc/article-text-lead.pt.png b/app/assets/images/doc/article-text-lead.pt.png
new file mode 100644
index 0000000..c3c8577
Binary files /dev/null and b/app/assets/images/doc/article-text-lead.pt.png differ
diff --git a/app/assets/images/doc/article-text.en.png b/app/assets/images/doc/article-text.en.png
new file mode 100644
index 0000000..19dd7f1
Binary files /dev/null and b/app/assets/images/doc/article-text.en.png differ
diff --git a/app/assets/images/doc/article-text.pt.png b/app/assets/images/doc/article-text.pt.png
new file mode 100644
index 0000000..93aace1
Binary files /dev/null and b/app/assets/images/doc/article-text.pt.png differ
diff --git a/app/assets/images/doc/block-actions.en.png b/app/assets/images/doc/block-actions.en.png
new file mode 100644
index 0000000..bf79472
Binary files /dev/null and b/app/assets/images/doc/block-actions.en.png differ
diff --git a/app/assets/images/doc/blog-buttons.en.png b/app/assets/images/doc/blog-buttons.en.png
new file mode 100644
index 0000000..45ce077
Binary files /dev/null and b/app/assets/images/doc/blog-buttons.en.png differ
diff --git a/app/assets/images/doc/blog-buttons.pt.png b/app/assets/images/doc/blog-buttons.pt.png
new file mode 100644
index 0000000..41a1162
Binary files /dev/null and b/app/assets/images/doc/blog-buttons.pt.png differ
diff --git a/app/assets/images/doc/box-register.en.png b/app/assets/images/doc/box-register.en.png
new file mode 100644
index 0000000..4461066
Binary files /dev/null and b/app/assets/images/doc/box-register.en.png differ
diff --git a/app/assets/images/doc/box-register.pt.png b/app/assets/images/doc/box-register.pt.png
new file mode 100644
index 0000000..cde860d
Binary files /dev/null and b/app/assets/images/doc/box-register.pt.png differ
diff --git a/app/assets/images/doc/change-password.en.png b/app/assets/images/doc/change-password.en.png
new file mode 100644
index 0000000..b3b5f42
Binary files /dev/null and b/app/assets/images/doc/change-password.en.png differ
diff --git a/app/assets/images/doc/change-password.pt.png b/app/assets/images/doc/change-password.pt.png
new file mode 100644
index 0000000..c7f7c03
Binary files /dev/null and b/app/assets/images/doc/change-password.pt.png differ
diff --git a/app/assets/images/doc/changing-role-enterprise-member.en.png b/app/assets/images/doc/changing-role-enterprise-member.en.png
new file mode 100644
index 0000000..d5848d7
Binary files /dev/null and b/app/assets/images/doc/changing-role-enterprise-member.en.png differ
diff --git a/app/assets/images/doc/changing-role-enterprise-member.pt.png b/app/assets/images/doc/changing-role-enterprise-member.pt.png
new file mode 100644
index 0000000..9ecd8e6
Binary files /dev/null and b/app/assets/images/doc/changing-role-enterprise-member.pt.png differ
diff --git a/app/assets/images/doc/closed-comment-box.en.png b/app/assets/images/doc/closed-comment-box.en.png
new file mode 100644
index 0000000..b5975bd
Binary files /dev/null and b/app/assets/images/doc/closed-comment-box.en.png differ
diff --git a/app/assets/images/doc/closed-comment-box.pt.png b/app/assets/images/doc/closed-comment-box.pt.png
new file mode 100644
index 0000000..146d316
Binary files /dev/null and b/app/assets/images/doc/closed-comment-box.pt.png differ
diff --git a/app/assets/images/doc/cms-article-icons.en.png b/app/assets/images/doc/cms-article-icons.en.png
new file mode 100644
index 0000000..937fb5b
Binary files /dev/null and b/app/assets/images/doc/cms-article-icons.en.png differ
diff --git a/app/assets/images/doc/cms-article-icons.pt.png b/app/assets/images/doc/cms-article-icons.pt.png
new file mode 100644
index 0000000..937fb5b
Binary files /dev/null and b/app/assets/images/doc/cms-article-icons.pt.png differ
diff --git a/app/assets/images/doc/cms-article-types.en.png b/app/assets/images/doc/cms-article-types.en.png
new file mode 100644
index 0000000..3a993d0
Binary files /dev/null and b/app/assets/images/doc/cms-article-types.en.png differ
diff --git a/app/assets/images/doc/cms-article-types.pt.png b/app/assets/images/doc/cms-article-types.pt.png
new file mode 100644
index 0000000..f1fcdbd
Binary files /dev/null and b/app/assets/images/doc/cms-article-types.pt.png differ
diff --git a/app/assets/images/doc/cms-blog-creation.en.png b/app/assets/images/doc/cms-blog-creation.en.png
new file mode 100644
index 0000000..00ee42d
Binary files /dev/null and b/app/assets/images/doc/cms-blog-creation.en.png differ
diff --git a/app/assets/images/doc/cms-blog-creation.pt.png b/app/assets/images/doc/cms-blog-creation.pt.png
new file mode 100644
index 0000000..262fd67
Binary files /dev/null and b/app/assets/images/doc/cms-blog-creation.pt.png differ
diff --git a/app/assets/images/doc/cms-blog-public-visualization.en.png b/app/assets/images/doc/cms-blog-public-visualization.en.png
new file mode 100644
index 0000000..9e641a3
Binary files /dev/null and b/app/assets/images/doc/cms-blog-public-visualization.en.png differ
diff --git a/app/assets/images/doc/cms-blog-public-visualization.pt.png b/app/assets/images/doc/cms-blog-public-visualization.pt.png
new file mode 100644
index 0000000..a139e99
Binary files /dev/null and b/app/assets/images/doc/cms-blog-public-visualization.pt.png differ
diff --git a/app/assets/images/doc/cms-folder-icons.en.png b/app/assets/images/doc/cms-folder-icons.en.png
new file mode 100644
index 0000000..77f28e5
Binary files /dev/null and b/app/assets/images/doc/cms-folder-icons.en.png differ
diff --git a/app/assets/images/doc/cms-folder-icons.pt.png b/app/assets/images/doc/cms-folder-icons.pt.png
new file mode 100644
index 0000000..77f28e5
Binary files /dev/null and b/app/assets/images/doc/cms-folder-icons.pt.png differ
diff --git a/app/assets/images/doc/cms-gallery-public-visualization.en.png b/app/assets/images/doc/cms-gallery-public-visualization.en.png
new file mode 100644
index 0000000..1feca64
Binary files /dev/null and b/app/assets/images/doc/cms-gallery-public-visualization.en.png differ
diff --git a/app/assets/images/doc/cms-gallery-public-visualization.pt.png b/app/assets/images/doc/cms-gallery-public-visualization.pt.png
new file mode 100644
index 0000000..0b6ab4f
Binary files /dev/null and b/app/assets/images/doc/cms-gallery-public-visualization.pt.png differ
diff --git a/app/assets/images/doc/cms-new-article.en.png b/app/assets/images/doc/cms-new-article.en.png
new file mode 100644
index 0000000..52db253
Binary files /dev/null and b/app/assets/images/doc/cms-new-article.en.png differ
diff --git a/app/assets/images/doc/cms-new-article.pt.png b/app/assets/images/doc/cms-new-article.pt.png
new file mode 100644
index 0000000..8e0c2e9
Binary files /dev/null and b/app/assets/images/doc/cms-new-article.pt.png differ
diff --git a/app/assets/images/doc/cms-spread-article-icon.en.png b/app/assets/images/doc/cms-spread-article-icon.en.png
new file mode 100644
index 0000000..9fac2ee
Binary files /dev/null and b/app/assets/images/doc/cms-spread-article-icon.en.png differ
diff --git a/app/assets/images/doc/cms-spread-article-icon.pt.png b/app/assets/images/doc/cms-spread-article-icon.pt.png
new file mode 100644
index 0000000..b929e35
Binary files /dev/null and b/app/assets/images/doc/cms-spread-article-icon.pt.png differ
diff --git a/app/assets/images/doc/cms-uploading-files.en.png b/app/assets/images/doc/cms-uploading-files.en.png
new file mode 100644
index 0000000..22caa37
Binary files /dev/null and b/app/assets/images/doc/cms-uploading-files.en.png differ
diff --git a/app/assets/images/doc/cms-uploading-files.pt.png b/app/assets/images/doc/cms-uploading-files.pt.png
new file mode 100644
index 0000000..adb4ae1
Binary files /dev/null and b/app/assets/images/doc/cms-uploading-files.pt.png differ
diff --git a/app/assets/images/doc/cms.en.png b/app/assets/images/doc/cms.en.png
new file mode 100644
index 0000000..2d96e9a
Binary files /dev/null and b/app/assets/images/doc/cms.en.png differ
diff --git a/app/assets/images/doc/cms.pt.png b/app/assets/images/doc/cms.pt.png
new file mode 100644
index 0000000..604b422
Binary files /dev/null and b/app/assets/images/doc/cms.pt.png differ
diff --git a/app/assets/images/doc/comments-of-logged-in-out-person.en.png b/app/assets/images/doc/comments-of-logged-in-out-person.en.png
new file mode 100644
index 0000000..1a45728
Binary files /dev/null and b/app/assets/images/doc/comments-of-logged-in-out-person.en.png differ
diff --git a/app/assets/images/doc/comments-of-logged-in-out-person.pt.png b/app/assets/images/doc/comments-of-logged-in-out-person.pt.png
new file mode 100644
index 0000000..cd59290
Binary files /dev/null and b/app/assets/images/doc/comments-of-logged-in-out-person.pt.png differ
diff --git a/app/assets/images/doc/comments.en.png b/app/assets/images/doc/comments.en.png
new file mode 100644
index 0000000..04c6f13
Binary files /dev/null and b/app/assets/images/doc/comments.en.png differ
diff --git a/app/assets/images/doc/comments.pt.png b/app/assets/images/doc/comments.pt.png
new file mode 100644
index 0000000..0722ff0
Binary files /dev/null and b/app/assets/images/doc/comments.pt.png differ
diff --git a/app/assets/images/doc/communities-block.en.png b/app/assets/images/doc/communities-block.en.png
new file mode 100644
index 0000000..46a15d5
Binary files /dev/null and b/app/assets/images/doc/communities-block.en.png differ
diff --git a/app/assets/images/doc/communities-block.pt.png b/app/assets/images/doc/communities-block.pt.png
new file mode 100644
index 0000000..369d80d
Binary files /dev/null and b/app/assets/images/doc/communities-block.pt.png differ
diff --git a/app/assets/images/doc/communities-search-field.en.png b/app/assets/images/doc/communities-search-field.en.png
new file mode 100644
index 0000000..26765db
Binary files /dev/null and b/app/assets/images/doc/communities-search-field.en.png differ
diff --git a/app/assets/images/doc/communities-search-field.pt.png b/app/assets/images/doc/communities-search-field.pt.png
new file mode 100644
index 0000000..de54299
Binary files /dev/null and b/app/assets/images/doc/communities-search-field.pt.png differ
diff --git a/app/assets/images/doc/communities-search-results-with-example.en.png b/app/assets/images/doc/communities-search-results-with-example.en.png
new file mode 100644
index 0000000..3bd39bf
Binary files /dev/null and b/app/assets/images/doc/communities-search-results-with-example.en.png differ
diff --git a/app/assets/images/doc/communities-search-results-with-example.pt.png b/app/assets/images/doc/communities-search-results-with-example.pt.png
new file mode 100644
index 0000000..0914edc
Binary files /dev/null and b/app/assets/images/doc/communities-search-results-with-example.pt.png differ
diff --git a/app/assets/images/doc/community-balloon-closed-en.png b/app/assets/images/doc/community-balloon-closed-en.png
new file mode 100644
index 0000000..70d4439
Binary files /dev/null and b/app/assets/images/doc/community-balloon-closed-en.png differ
diff --git a/app/assets/images/doc/community-balloon-closed.en.png b/app/assets/images/doc/community-balloon-closed.en.png
new file mode 100644
index 0000000..70d4439
Binary files /dev/null and b/app/assets/images/doc/community-balloon-closed.en.png differ
diff --git a/app/assets/images/doc/community-balloon-en.png b/app/assets/images/doc/community-balloon-en.png
new file mode 100644
index 0000000..8442c47
Binary files /dev/null and b/app/assets/images/doc/community-balloon-en.png differ
diff --git a/app/assets/images/doc/community-balloon-pt.png b/app/assets/images/doc/community-balloon-pt.png
new file mode 100644
index 0000000..710d91e
Binary files /dev/null and b/app/assets/images/doc/community-balloon-pt.png differ
diff --git a/app/assets/images/doc/community-balloon.en.png b/app/assets/images/doc/community-balloon.en.png
new file mode 100644
index 0000000..8442c47
Binary files /dev/null and b/app/assets/images/doc/community-balloon.en.png differ
diff --git a/app/assets/images/doc/community-balloon.pt.png b/app/assets/images/doc/community-balloon.pt.png
new file mode 100644
index 0000000..710d91e
Binary files /dev/null and b/app/assets/images/doc/community-balloon.pt.png differ
diff --git a/app/assets/images/doc/community-control-panel-manage-members.en.png b/app/assets/images/doc/community-control-panel-manage-members.en.png
new file mode 100644
index 0000000..4fce019
Binary files /dev/null and b/app/assets/images/doc/community-control-panel-manage-members.en.png differ
diff --git a/app/assets/images/doc/community-control-panel-manage-members.pt.png b/app/assets/images/doc/community-control-panel-manage-members.pt.png
new file mode 100644
index 0000000..1533876
Binary files /dev/null and b/app/assets/images/doc/community-control-panel-manage-members.pt.png differ
diff --git a/app/assets/images/doc/community-control-panel-with-approval-task.en.png b/app/assets/images/doc/community-control-panel-with-approval-task.en.png
new file mode 100644
index 0000000..49729a9
Binary files /dev/null and b/app/assets/images/doc/community-control-panel-with-approval-task.en.png differ
diff --git a/app/assets/images/doc/community-control-panel-with-approval-task.pt.png b/app/assets/images/doc/community-control-panel-with-approval-task.pt.png
new file mode 100644
index 0000000..4664e06
Binary files /dev/null and b/app/assets/images/doc/community-control-panel-with-approval-task.pt.png differ
diff --git a/app/assets/images/doc/community-control-panel-with-tasks.en.png b/app/assets/images/doc/community-control-panel-with-tasks.en.png
new file mode 100644
index 0000000..3e45fd4
Binary files /dev/null and b/app/assets/images/doc/community-control-panel-with-tasks.en.png differ
diff --git a/app/assets/images/doc/community-control-panel-with-tasks.pt.png b/app/assets/images/doc/community-control-panel-with-tasks.pt.png
new file mode 100644
index 0000000..a3a6205
Binary files /dev/null and b/app/assets/images/doc/community-control-panel-with-tasks.pt.png differ
diff --git a/app/assets/images/doc/community-creation-form.en.png b/app/assets/images/doc/community-creation-form.en.png
new file mode 100644
index 0000000..3c353ab
Binary files /dev/null and b/app/assets/images/doc/community-creation-form.en.png differ
diff --git a/app/assets/images/doc/community-creation-form.pt.png b/app/assets/images/doc/community-creation-form.pt.png
new file mode 100644
index 0000000..3a9b66e
Binary files /dev/null and b/app/assets/images/doc/community-creation-form.pt.png differ
diff --git a/app/assets/images/doc/community-creation.en.png b/app/assets/images/doc/community-creation.en.png
new file mode 100644
index 0000000..dbf8707
Binary files /dev/null and b/app/assets/images/doc/community-creation.en.png differ
diff --git a/app/assets/images/doc/community-creation.pt.png b/app/assets/images/doc/community-creation.pt.png
new file mode 100644
index 0000000..364407c
Binary files /dev/null and b/app/assets/images/doc/community-creation.pt.png differ
diff --git a/app/assets/images/doc/community-edit-sideboxes.en.png b/app/assets/images/doc/community-edit-sideboxes.en.png
new file mode 100644
index 0000000..0f395a7
Binary files /dev/null and b/app/assets/images/doc/community-edit-sideboxes.en.png differ
diff --git a/app/assets/images/doc/community-edit-sideboxes.pt.png b/app/assets/images/doc/community-edit-sideboxes.pt.png
new file mode 100644
index 0000000..49390ac
Binary files /dev/null and b/app/assets/images/doc/community-edit-sideboxes.pt.png differ
diff --git a/app/assets/images/doc/community-image-block.en.png b/app/assets/images/doc/community-image-block.en.png
new file mode 100644
index 0000000..0146336
Binary files /dev/null and b/app/assets/images/doc/community-image-block.en.png differ
diff --git a/app/assets/images/doc/community-image-block.pt.png b/app/assets/images/doc/community-image-block.pt.png
new file mode 100644
index 0000000..4b3ae8b
Binary files /dev/null and b/app/assets/images/doc/community-image-block.pt.png differ
diff --git a/app/assets/images/doc/community-import-invitation-step-1.en.png b/app/assets/images/doc/community-import-invitation-step-1.en.png
new file mode 100644
index 0000000..de440c0
Binary files /dev/null and b/app/assets/images/doc/community-import-invitation-step-1.en.png differ
diff --git a/app/assets/images/doc/community-import-invitation-step-1.pt.png b/app/assets/images/doc/community-import-invitation-step-1.pt.png
new file mode 100644
index 0000000..b1b0705
Binary files /dev/null and b/app/assets/images/doc/community-import-invitation-step-1.pt.png differ
diff --git a/app/assets/images/doc/community-import-invitation-step-2.en.png b/app/assets/images/doc/community-import-invitation-step-2.en.png
new file mode 100644
index 0000000..c71559b
Binary files /dev/null and b/app/assets/images/doc/community-import-invitation-step-2.en.png differ
diff --git a/app/assets/images/doc/community-import-invitation-step-2.pt.png b/app/assets/images/doc/community-import-invitation-step-2.pt.png
new file mode 100644
index 0000000..9c99f0a
Binary files /dev/null and b/app/assets/images/doc/community-import-invitation-step-2.pt.png differ
diff --git a/app/assets/images/doc/community-info-block.en.png b/app/assets/images/doc/community-info-block.en.png
new file mode 100644
index 0000000..80a0dc2
Binary files /dev/null and b/app/assets/images/doc/community-info-block.en.png differ
diff --git a/app/assets/images/doc/community-info-block.pt.png b/app/assets/images/doc/community-info-block.pt.png
new file mode 100644
index 0000000..6484dae
Binary files /dev/null and b/app/assets/images/doc/community-info-block.pt.png differ
diff --git a/app/assets/images/doc/community-manually-invitation-step-1.en.png b/app/assets/images/doc/community-manually-invitation-step-1.en.png
new file mode 100644
index 0000000..70d0e05
Binary files /dev/null and b/app/assets/images/doc/community-manually-invitation-step-1.en.png differ
diff --git a/app/assets/images/doc/community-manually-invitation-step-1.pt.png b/app/assets/images/doc/community-manually-invitation-step-1.pt.png
new file mode 100644
index 0000000..910ce4b
Binary files /dev/null and b/app/assets/images/doc/community-manually-invitation-step-1.pt.png differ
diff --git a/app/assets/images/doc/community-manually-invitation-step-2.en.png b/app/assets/images/doc/community-manually-invitation-step-2.en.png
new file mode 100644
index 0000000..c532136
Binary files /dev/null and b/app/assets/images/doc/community-manually-invitation-step-2.en.png differ
diff --git a/app/assets/images/doc/community-manually-invitation-step-2.pt.png b/app/assets/images/doc/community-manually-invitation-step-2.pt.png
new file mode 100644
index 0000000..645b6ae
Binary files /dev/null and b/app/assets/images/doc/community-manually-invitation-step-2.pt.png differ
diff --git a/app/assets/images/doc/community-members-with-invitation-button.en.png b/app/assets/images/doc/community-members-with-invitation-button.en.png
new file mode 100644
index 0000000..8b4044f
Binary files /dev/null and b/app/assets/images/doc/community-members-with-invitation-button.en.png differ
diff --git a/app/assets/images/doc/community-members-with-invitation-button.pt.png b/app/assets/images/doc/community-members-with-invitation-button.pt.png
new file mode 100644
index 0000000..999f7ad
Binary files /dev/null and b/app/assets/images/doc/community-members-with-invitation-button.pt.png differ
diff --git a/app/assets/images/doc/community-members-with-send-mail-button.en.png b/app/assets/images/doc/community-members-with-send-mail-button.en.png
new file mode 100644
index 0000000..9dac666
Binary files /dev/null and b/app/assets/images/doc/community-members-with-send-mail-button.en.png differ
diff --git a/app/assets/images/doc/community-members-with-send-mail-button.pt.png b/app/assets/images/doc/community-members-with-send-mail-button.pt.png
new file mode 100644
index 0000000..2d9629d
Binary files /dev/null and b/app/assets/images/doc/community-members-with-send-mail-button.pt.png differ
diff --git a/app/assets/images/doc/community-network-block.en.png b/app/assets/images/doc/community-network-block.en.png
new file mode 100644
index 0000000..4749abe
Binary files /dev/null and b/app/assets/images/doc/community-network-block.en.png differ
diff --git a/app/assets/images/doc/community-network-block.pt.png b/app/assets/images/doc/community-network-block.pt.png
new file mode 100644
index 0000000..04bb67e
Binary files /dev/null and b/app/assets/images/doc/community-network-block.pt.png differ
diff --git a/app/assets/images/doc/community-send-email.en.png b/app/assets/images/doc/community-send-email.en.png
new file mode 100644
index 0000000..a6bacb3
Binary files /dev/null and b/app/assets/images/doc/community-send-email.en.png differ
diff --git a/app/assets/images/doc/community-send-email.pt.png b/app/assets/images/doc/community-send-email.pt.png
new file mode 100644
index 0000000..9b34ab2
Binary files /dev/null and b/app/assets/images/doc/community-send-email.pt.png differ
diff --git a/app/assets/images/doc/community-sideboxes-add-block.en.png b/app/assets/images/doc/community-sideboxes-add-block.en.png
new file mode 100644
index 0000000..98ab03a
Binary files /dev/null and b/app/assets/images/doc/community-sideboxes-add-block.en.png differ
diff --git a/app/assets/images/doc/community-sideboxes-add-block.pt.png b/app/assets/images/doc/community-sideboxes-add-block.pt.png
new file mode 100644
index 0000000..d11b97f
Binary files /dev/null and b/app/assets/images/doc/community-sideboxes-add-block.pt.png differ
diff --git a/app/assets/images/doc/confirmation-adding-friend.en.png b/app/assets/images/doc/confirmation-adding-friend.en.png
new file mode 100644
index 0000000..2842c02
Binary files /dev/null and b/app/assets/images/doc/confirmation-adding-friend.en.png differ
diff --git a/app/assets/images/doc/confirmation-adding-friend.pt.png b/app/assets/images/doc/confirmation-adding-friend.pt.png
new file mode 100644
index 0000000..4b97a5f
Binary files /dev/null and b/app/assets/images/doc/confirmation-adding-friend.pt.png differ
diff --git a/app/assets/images/doc/contact-button.en.png b/app/assets/images/doc/contact-button.en.png
new file mode 100644
index 0000000..44d4098
Binary files /dev/null and b/app/assets/images/doc/contact-button.en.png differ
diff --git a/app/assets/images/doc/contact-button.pt.png b/app/assets/images/doc/contact-button.pt.png
new file mode 100644
index 0000000..53f8b3a
Binary files /dev/null and b/app/assets/images/doc/contact-button.pt.png differ
diff --git a/app/assets/images/doc/control-panel-change-password.en.png b/app/assets/images/doc/control-panel-change-password.en.png
new file mode 100644
index 0000000..5b94cbc
Binary files /dev/null and b/app/assets/images/doc/control-panel-change-password.en.png differ
diff --git a/app/assets/images/doc/control-panel-change-password.pt.png b/app/assets/images/doc/control-panel-change-password.pt.png
new file mode 100644
index 0000000..b9838ab
Binary files /dev/null and b/app/assets/images/doc/control-panel-change-password.pt.png differ
diff --git a/app/assets/images/doc/control-panel-community-edit-appearance.en.png b/app/assets/images/doc/control-panel-community-edit-appearance.en.png
new file mode 100644
index 0000000..f3046d2
Binary files /dev/null and b/app/assets/images/doc/control-panel-community-edit-appearance.en.png differ
diff --git a/app/assets/images/doc/control-panel-community-edit-appearance.pt.png b/app/assets/images/doc/control-panel-community-edit-appearance.pt.png
new file mode 100644
index 0000000..3e5c95d
Binary files /dev/null and b/app/assets/images/doc/control-panel-community-edit-appearance.pt.png differ
diff --git a/app/assets/images/doc/control-panel-community-edit-header-footer.en.png b/app/assets/images/doc/control-panel-community-edit-header-footer.en.png
new file mode 100644
index 0000000..9890418
Binary files /dev/null and b/app/assets/images/doc/control-panel-community-edit-header-footer.en.png differ
diff --git a/app/assets/images/doc/control-panel-community-edit-header-footer.pt.png b/app/assets/images/doc/control-panel-community-edit-header-footer.pt.png
new file mode 100644
index 0000000..9589ee9
Binary files /dev/null and b/app/assets/images/doc/control-panel-community-edit-header-footer.pt.png differ
diff --git a/app/assets/images/doc/control-panel-community-edit-sideboxes.en.png b/app/assets/images/doc/control-panel-community-edit-sideboxes.en.png
new file mode 100644
index 0000000..5440988
Binary files /dev/null and b/app/assets/images/doc/control-panel-community-edit-sideboxes.en.png differ
diff --git a/app/assets/images/doc/control-panel-community-edit-sideboxes.pt.png b/app/assets/images/doc/control-panel-community-edit-sideboxes.pt.png
new file mode 100644
index 0000000..6c9054f
Binary files /dev/null and b/app/assets/images/doc/control-panel-community-edit-sideboxes.pt.png differ
diff --git a/app/assets/images/doc/control-panel-content-management.en.png b/app/assets/images/doc/control-panel-content-management.en.png
new file mode 100644
index 0000000..3671235
Binary files /dev/null and b/app/assets/images/doc/control-panel-content-management.en.png differ
diff --git a/app/assets/images/doc/control-panel-content-management.pt.png b/app/assets/images/doc/control-panel-content-management.pt.png
new file mode 100644
index 0000000..39c565d
Binary files /dev/null and b/app/assets/images/doc/control-panel-content-management.pt.png differ
diff --git a/app/assets/images/doc/control-panel-create-blog.en.png b/app/assets/images/doc/control-panel-create-blog.en.png
new file mode 100644
index 0000000..3913701
Binary files /dev/null and b/app/assets/images/doc/control-panel-create-blog.en.png differ
diff --git a/app/assets/images/doc/control-panel-create-blog.pt.png b/app/assets/images/doc/control-panel-create-blog.pt.png
new file mode 100644
index 0000000..341adbd
Binary files /dev/null and b/app/assets/images/doc/control-panel-create-blog.pt.png differ
diff --git a/app/assets/images/doc/control-panel-disable-enterprise.en.png b/app/assets/images/doc/control-panel-disable-enterprise.en.png
new file mode 100644
index 0000000..9fc1e15
Binary files /dev/null and b/app/assets/images/doc/control-panel-disable-enterprise.en.png differ
diff --git a/app/assets/images/doc/control-panel-disable-enterprise.pt.png b/app/assets/images/doc/control-panel-disable-enterprise.pt.png
new file mode 100644
index 0000000..c38e122
Binary files /dev/null and b/app/assets/images/doc/control-panel-disable-enterprise.pt.png differ
diff --git a/app/assets/images/doc/control-panel-enterprise-edit-appearance.en.png b/app/assets/images/doc/control-panel-enterprise-edit-appearance.en.png
new file mode 100644
index 0000000..9042254
Binary files /dev/null and b/app/assets/images/doc/control-panel-enterprise-edit-appearance.en.png differ
diff --git a/app/assets/images/doc/control-panel-enterprise-edit-appearance.pt.png b/app/assets/images/doc/control-panel-enterprise-edit-appearance.pt.png
new file mode 100644
index 0000000..47143dc
Binary files /dev/null and b/app/assets/images/doc/control-panel-enterprise-edit-appearance.pt.png differ
diff --git a/app/assets/images/doc/control-panel-enterprise-edit-header-footer.en.png b/app/assets/images/doc/control-panel-enterprise-edit-header-footer.en.png
new file mode 100644
index 0000000..91c5aea
Binary files /dev/null and b/app/assets/images/doc/control-panel-enterprise-edit-header-footer.en.png differ
diff --git a/app/assets/images/doc/control-panel-enterprise-edit-header-footer.pt.png b/app/assets/images/doc/control-panel-enterprise-edit-header-footer.pt.png
new file mode 100644
index 0000000..7821395
Binary files /dev/null and b/app/assets/images/doc/control-panel-enterprise-edit-header-footer.pt.png differ
diff --git a/app/assets/images/doc/control-panel-enterprise-edit-profile-info.en.png b/app/assets/images/doc/control-panel-enterprise-edit-profile-info.en.png
new file mode 100644
index 0000000..37d7736
Binary files /dev/null and b/app/assets/images/doc/control-panel-enterprise-edit-profile-info.en.png differ
diff --git a/app/assets/images/doc/control-panel-enterprise-edit-profile-info.pt.png b/app/assets/images/doc/control-panel-enterprise-edit-profile-info.pt.png
new file mode 100644
index 0000000..4727106
Binary files /dev/null and b/app/assets/images/doc/control-panel-enterprise-edit-profile-info.pt.png differ
diff --git a/app/assets/images/doc/control-panel-enterprise-edit-sideboxes.en.png b/app/assets/images/doc/control-panel-enterprise-edit-sideboxes.en.png
new file mode 100644
index 0000000..b403b01
Binary files /dev/null and b/app/assets/images/doc/control-panel-enterprise-edit-sideboxes.en.png differ
diff --git a/app/assets/images/doc/control-panel-enterprise-edit-sideboxes.pt.png b/app/assets/images/doc/control-panel-enterprise-edit-sideboxes.pt.png
new file mode 100644
index 0000000..b0e0e38
Binary files /dev/null and b/app/assets/images/doc/control-panel-enterprise-edit-sideboxes.pt.png differ
diff --git a/app/assets/images/doc/control-panel-manage-groups.en.png b/app/assets/images/doc/control-panel-manage-groups.en.png
new file mode 100644
index 0000000..d6be071
Binary files /dev/null and b/app/assets/images/doc/control-panel-manage-groups.en.png differ
diff --git a/app/assets/images/doc/control-panel-manage-groups.pt.png b/app/assets/images/doc/control-panel-manage-groups.pt.png
new file mode 100644
index 0000000..1648f81
Binary files /dev/null and b/app/assets/images/doc/control-panel-manage-groups.pt.png differ
diff --git a/app/assets/images/doc/control-panel-manage-members.en.png b/app/assets/images/doc/control-panel-manage-members.en.png
new file mode 100644
index 0000000..79069db
Binary files /dev/null and b/app/assets/images/doc/control-panel-manage-members.en.png differ
diff --git a/app/assets/images/doc/control-panel-manage-members.pt.png b/app/assets/images/doc/control-panel-manage-members.pt.png
new file mode 100644
index 0000000..e41577d
Binary files /dev/null and b/app/assets/images/doc/control-panel-manage-members.pt.png differ
diff --git a/app/assets/images/doc/control-panel-manage-products.en.png b/app/assets/images/doc/control-panel-manage-products.en.png
new file mode 100644
index 0000000..99884d9
Binary files /dev/null and b/app/assets/images/doc/control-panel-manage-products.en.png differ
diff --git a/app/assets/images/doc/control-panel-manage-products.pt.png b/app/assets/images/doc/control-panel-manage-products.pt.png
new file mode 100644
index 0000000..78a71bd
Binary files /dev/null and b/app/assets/images/doc/control-panel-manage-products.pt.png differ
diff --git a/app/assets/images/doc/control-panel-menu.en.png b/app/assets/images/doc/control-panel-menu.en.png
new file mode 100644
index 0000000..b671241
Binary files /dev/null and b/app/assets/images/doc/control-panel-menu.en.png differ
diff --git a/app/assets/images/doc/control-panel-menu.pt.png b/app/assets/images/doc/control-panel-menu.pt.png
new file mode 100644
index 0000000..f57794c
Binary files /dev/null and b/app/assets/images/doc/control-panel-menu.pt.png differ
diff --git a/app/assets/images/doc/control-panel-person-delete-profile.en.png b/app/assets/images/doc/control-panel-person-delete-profile.en.png
new file mode 100644
index 0000000..d8908a3
Binary files /dev/null and b/app/assets/images/doc/control-panel-person-delete-profile.en.png differ
diff --git a/app/assets/images/doc/control-panel-person-delete-profile.pt.png b/app/assets/images/doc/control-panel-person-delete-profile.pt.png
new file mode 100644
index 0000000..584ab75
Binary files /dev/null and b/app/assets/images/doc/control-panel-person-delete-profile.pt.png differ
diff --git a/app/assets/images/doc/control-panel-person-edit-profile-info.en.png b/app/assets/images/doc/control-panel-person-edit-profile-info.en.png
new file mode 100644
index 0000000..3634455
Binary files /dev/null and b/app/assets/images/doc/control-panel-person-edit-profile-info.en.png differ
diff --git a/app/assets/images/doc/control-panel-person-edit-profile-info.pt.png b/app/assets/images/doc/control-panel-person-edit-profile-info.pt.png
new file mode 100644
index 0000000..d728831
Binary files /dev/null and b/app/assets/images/doc/control-panel-person-edit-profile-info.pt.png differ
diff --git a/app/assets/images/doc/control-panel-user-edit-appearance.en.png b/app/assets/images/doc/control-panel-user-edit-appearance.en.png
new file mode 100644
index 0000000..043be82
Binary files /dev/null and b/app/assets/images/doc/control-panel-user-edit-appearance.en.png differ
diff --git a/app/assets/images/doc/control-panel-user-edit-appearance.pt.png b/app/assets/images/doc/control-panel-user-edit-appearance.pt.png
new file mode 100644
index 0000000..888e741
Binary files /dev/null and b/app/assets/images/doc/control-panel-user-edit-appearance.pt.png differ
diff --git a/app/assets/images/doc/control-panel-user-edit-header-footer.en.png b/app/assets/images/doc/control-panel-user-edit-header-footer.en.png
new file mode 100644
index 0000000..3f0f3b3
Binary files /dev/null and b/app/assets/images/doc/control-panel-user-edit-header-footer.en.png differ
diff --git a/app/assets/images/doc/control-panel-user-edit-header-footer.pt.png b/app/assets/images/doc/control-panel-user-edit-header-footer.pt.png
new file mode 100644
index 0000000..82aa363
Binary files /dev/null and b/app/assets/images/doc/control-panel-user-edit-header-footer.pt.png differ
diff --git a/app/assets/images/doc/control-panel-user-edit-sideboxes.en.png b/app/assets/images/doc/control-panel-user-edit-sideboxes.en.png
new file mode 100644
index 0000000..0e9684e
Binary files /dev/null and b/app/assets/images/doc/control-panel-user-edit-sideboxes.en.png differ
diff --git a/app/assets/images/doc/control-panel-user-edit-sideboxes.pt.png b/app/assets/images/doc/control-panel-user-edit-sideboxes.pt.png
new file mode 100644
index 0000000..e7c183a
Binary files /dev/null and b/app/assets/images/doc/control-panel-user-edit-sideboxes.pt.png differ
diff --git a/app/assets/images/doc/control-panel-with-tasks.en.png b/app/assets/images/doc/control-panel-with-tasks.en.png
new file mode 100644
index 0000000..7e070db
Binary files /dev/null and b/app/assets/images/doc/control-panel-with-tasks.en.png differ
diff --git a/app/assets/images/doc/control-panel-with-tasks.pt.png b/app/assets/images/doc/control-panel-with-tasks.pt.png
new file mode 100644
index 0000000..0302de5
Binary files /dev/null and b/app/assets/images/doc/control-panel-with-tasks.pt.png differ
diff --git a/app/assets/images/doc/disable-enterprise-confirmation.en.png b/app/assets/images/doc/disable-enterprise-confirmation.en.png
new file mode 100644
index 0000000..4779e18
Binary files /dev/null and b/app/assets/images/doc/disable-enterprise-confirmation.en.png differ
diff --git a/app/assets/images/doc/disable-enterprise-confirmation.pt.png b/app/assets/images/doc/disable-enterprise-confirmation.pt.png
new file mode 100644
index 0000000..d885a97
Binary files /dev/null and b/app/assets/images/doc/disable-enterprise-confirmation.pt.png differ
diff --git a/app/assets/images/doc/disabled-enterprise-block.en.png b/app/assets/images/doc/disabled-enterprise-block.en.png
new file mode 100644
index 0000000..592367a
Binary files /dev/null and b/app/assets/images/doc/disabled-enterprise-block.en.png differ
diff --git a/app/assets/images/doc/disabled-enterprise-block.pt.png b/app/assets/images/doc/disabled-enterprise-block.pt.png
new file mode 100644
index 0000000..23b9164
Binary files /dev/null and b/app/assets/images/doc/disabled-enterprise-block.pt.png differ
diff --git a/app/assets/images/doc/edit-appearance.en.png b/app/assets/images/doc/edit-appearance.en.png
new file mode 100644
index 0000000..94d5a30
Binary files /dev/null and b/app/assets/images/doc/edit-appearance.en.png differ
diff --git a/app/assets/images/doc/edit-appearance.pt.png b/app/assets/images/doc/edit-appearance.pt.png
new file mode 100644
index 0000000..7682d1f
Binary files /dev/null and b/app/assets/images/doc/edit-appearance.pt.png differ
diff --git a/app/assets/images/doc/edit-block.en.png b/app/assets/images/doc/edit-block.en.png
new file mode 100644
index 0000000..fa0e8fc
Binary files /dev/null and b/app/assets/images/doc/edit-block.en.png differ
diff --git a/app/assets/images/doc/edit-block.pt.png b/app/assets/images/doc/edit-block.pt.png
new file mode 100644
index 0000000..6168fbc
Binary files /dev/null and b/app/assets/images/doc/edit-block.pt.png differ
diff --git a/app/assets/images/doc/edit-header-footer.en.png b/app/assets/images/doc/edit-header-footer.en.png
new file mode 100644
index 0000000..e5aed7b
Binary files /dev/null and b/app/assets/images/doc/edit-header-footer.en.png differ
diff --git a/app/assets/images/doc/edit-header-footer.pt.png b/app/assets/images/doc/edit-header-footer.pt.png
new file mode 100644
index 0000000..b112891
Binary files /dev/null and b/app/assets/images/doc/edit-header-footer.pt.png differ
diff --git a/app/assets/images/doc/enterprise-activation-box.en.png b/app/assets/images/doc/enterprise-activation-box.en.png
new file mode 100644
index 0000000..e28acbb
Binary files /dev/null and b/app/assets/images/doc/enterprise-activation-box.en.png differ
diff --git a/app/assets/images/doc/enterprise-activation-box.pt.png b/app/assets/images/doc/enterprise-activation-box.pt.png
new file mode 100644
index 0000000..a18c614
Binary files /dev/null and b/app/assets/images/doc/enterprise-activation-box.pt.png differ
diff --git a/app/assets/images/doc/enterprise-activation-terms.en.png b/app/assets/images/doc/enterprise-activation-terms.en.png
new file mode 100644
index 0000000..4262657
Binary files /dev/null and b/app/assets/images/doc/enterprise-activation-terms.en.png differ
diff --git a/app/assets/images/doc/enterprise-activation-terms.pt.png b/app/assets/images/doc/enterprise-activation-terms.pt.png
new file mode 100644
index 0000000..b900b92
Binary files /dev/null and b/app/assets/images/doc/enterprise-activation-terms.pt.png differ
diff --git a/app/assets/images/doc/enterprise-edit-profile-categories.en.png b/app/assets/images/doc/enterprise-edit-profile-categories.en.png
new file mode 100644
index 0000000..6756ca3
Binary files /dev/null and b/app/assets/images/doc/enterprise-edit-profile-categories.en.png differ
diff --git a/app/assets/images/doc/enterprise-edit-profile-categories.pt.png b/app/assets/images/doc/enterprise-edit-profile-categories.pt.png
new file mode 100644
index 0000000..b189075
Binary files /dev/null and b/app/assets/images/doc/enterprise-edit-profile-categories.pt.png differ
diff --git a/app/assets/images/doc/enterprise-edit-profile-info-add-picture.en.png b/app/assets/images/doc/enterprise-edit-profile-info-add-picture.en.png
new file mode 100644
index 0000000..653b816
Binary files /dev/null and b/app/assets/images/doc/enterprise-edit-profile-info-add-picture.en.png differ
diff --git a/app/assets/images/doc/enterprise-edit-profile-info-add-picture.pt.png b/app/assets/images/doc/enterprise-edit-profile-info-add-picture.pt.png
new file mode 100644
index 0000000..cf82fed
Binary files /dev/null and b/app/assets/images/doc/enterprise-edit-profile-info-add-picture.pt.png differ
diff --git a/app/assets/images/doc/enterprise-edit-profile-info-change-picture.en.png b/app/assets/images/doc/enterprise-edit-profile-info-change-picture.en.png
new file mode 100644
index 0000000..d342a76
Binary files /dev/null and b/app/assets/images/doc/enterprise-edit-profile-info-change-picture.en.png differ
diff --git a/app/assets/images/doc/enterprise-edit-profile-info-change-picture.pt.png b/app/assets/images/doc/enterprise-edit-profile-info-change-picture.pt.png
new file mode 100644
index 0000000..0b67347
Binary files /dev/null and b/app/assets/images/doc/enterprise-edit-profile-info-change-picture.pt.png differ
diff --git a/app/assets/images/doc/enterprise-edit-profile-info-general-information.en.png b/app/assets/images/doc/enterprise-edit-profile-info-general-information.en.png
new file mode 100644
index 0000000..5bbdacf
Binary files /dev/null and b/app/assets/images/doc/enterprise-edit-profile-info-general-information.en.png differ
diff --git a/app/assets/images/doc/enterprise-edit-profile-info-general-information.pt.png b/app/assets/images/doc/enterprise-edit-profile-info-general-information.pt.png
new file mode 100644
index 0000000..6c4665f
Binary files /dev/null and b/app/assets/images/doc/enterprise-edit-profile-info-general-information.pt.png differ
diff --git a/app/assets/images/doc/enterprise-edit-profile-info-moderation-options.en.png b/app/assets/images/doc/enterprise-edit-profile-info-moderation-options.en.png
new file mode 100644
index 0000000..de4f009
Binary files /dev/null and b/app/assets/images/doc/enterprise-edit-profile-info-moderation-options.en.png differ
diff --git a/app/assets/images/doc/enterprise-edit-profile-info-moderation-options.pt.png b/app/assets/images/doc/enterprise-edit-profile-info-moderation-options.pt.png
new file mode 100644
index 0000000..6cbce4d
Binary files /dev/null and b/app/assets/images/doc/enterprise-edit-profile-info-moderation-options.pt.png differ
diff --git a/app/assets/images/doc/enterprise-edit-profile-privacy-options.en.png b/app/assets/images/doc/enterprise-edit-profile-privacy-options.en.png
new file mode 100644
index 0000000..9bf2f36
Binary files /dev/null and b/app/assets/images/doc/enterprise-edit-profile-privacy-options.en.png differ
diff --git a/app/assets/images/doc/enterprise-edit-profile-privacy-options.pt.png b/app/assets/images/doc/enterprise-edit-profile-privacy-options.pt.png
new file mode 100644
index 0000000..7abad6f
Binary files /dev/null and b/app/assets/images/doc/enterprise-edit-profile-privacy-options.pt.png differ
diff --git a/app/assets/images/doc/enterprise-edit-sideboxes.en.png b/app/assets/images/doc/enterprise-edit-sideboxes.en.png
new file mode 100644
index 0000000..9709b04
Binary files /dev/null and b/app/assets/images/doc/enterprise-edit-sideboxes.en.png differ
diff --git a/app/assets/images/doc/enterprise-edit-sideboxes.pt.png b/app/assets/images/doc/enterprise-edit-sideboxes.pt.png
new file mode 100644
index 0000000..685383d
Binary files /dev/null and b/app/assets/images/doc/enterprise-edit-sideboxes.pt.png differ
diff --git a/app/assets/images/doc/enterprise-image-block.en.png b/app/assets/images/doc/enterprise-image-block.en.png
new file mode 100644
index 0000000..5706beb
Binary files /dev/null and b/app/assets/images/doc/enterprise-image-block.en.png differ
diff --git a/app/assets/images/doc/enterprise-image-block.pt.png b/app/assets/images/doc/enterprise-image-block.pt.png
new file mode 100644
index 0000000..de0465c
Binary files /dev/null and b/app/assets/images/doc/enterprise-image-block.pt.png differ
diff --git a/app/assets/images/doc/enterprise-info-block.en.png b/app/assets/images/doc/enterprise-info-block.en.png
new file mode 100644
index 0000000..b14cfa9
Binary files /dev/null and b/app/assets/images/doc/enterprise-info-block.en.png differ
diff --git a/app/assets/images/doc/enterprise-info-block.pt.png b/app/assets/images/doc/enterprise-info-block.pt.png
new file mode 100644
index 0000000..dcef6a8
Binary files /dev/null and b/app/assets/images/doc/enterprise-info-block.pt.png differ
diff --git a/app/assets/images/doc/enterprise-members-list.en.png b/app/assets/images/doc/enterprise-members-list.en.png
new file mode 100644
index 0000000..b548320
Binary files /dev/null and b/app/assets/images/doc/enterprise-members-list.en.png differ
diff --git a/app/assets/images/doc/enterprise-members-list.pt.png b/app/assets/images/doc/enterprise-members-list.pt.png
new file mode 100644
index 0000000..3aaf647
Binary files /dev/null and b/app/assets/images/doc/enterprise-members-list.pt.png differ
diff --git a/app/assets/images/doc/enterprise-network-block.en.png b/app/assets/images/doc/enterprise-network-block.en.png
new file mode 100644
index 0000000..558d307
Binary files /dev/null and b/app/assets/images/doc/enterprise-network-block.en.png differ
diff --git a/app/assets/images/doc/enterprise-network-block.pt.png b/app/assets/images/doc/enterprise-network-block.pt.png
new file mode 100644
index 0000000..35a607c
Binary files /dev/null and b/app/assets/images/doc/enterprise-network-block.pt.png differ
diff --git a/app/assets/images/doc/enterprise-new-product-last-category.en.png b/app/assets/images/doc/enterprise-new-product-last-category.en.png
new file mode 100644
index 0000000..af9e3b2
Binary files /dev/null and b/app/assets/images/doc/enterprise-new-product-last-category.en.png differ
diff --git a/app/assets/images/doc/enterprise-new-product-no-category.en.png b/app/assets/images/doc/enterprise-new-product-no-category.en.png
new file mode 100644
index 0000000..9805877
Binary files /dev/null and b/app/assets/images/doc/enterprise-new-product-no-category.en.png differ
diff --git a/app/assets/images/doc/enterprise-new-product-second-category.en.png b/app/assets/images/doc/enterprise-new-product-second-category.en.png
new file mode 100644
index 0000000..e19ef19
Binary files /dev/null and b/app/assets/images/doc/enterprise-new-product-second-category.en.png differ
diff --git a/app/assets/images/doc/enterprise-product-add-input-button.en.png b/app/assets/images/doc/enterprise-product-add-input-button.en.png
new file mode 100644
index 0000000..7cb22f1
Binary files /dev/null and b/app/assets/images/doc/enterprise-product-add-input-button.en.png differ
diff --git a/app/assets/images/doc/enterprise-product-add-input-form.en.png b/app/assets/images/doc/enterprise-product-add-input-form.en.png
new file mode 100644
index 0000000..0165230
Binary files /dev/null and b/app/assets/images/doc/enterprise-product-add-input-form.en.png differ
diff --git a/app/assets/images/doc/enterprise-product-change-image-form.en.png b/app/assets/images/doc/enterprise-product-change-image-form.en.png
new file mode 100644
index 0000000..52a3d21
Binary files /dev/null and b/app/assets/images/doc/enterprise-product-change-image-form.en.png differ
diff --git a/app/assets/images/doc/enterprise-product-complete.en.png b/app/assets/images/doc/enterprise-product-complete.en.png
new file mode 100644
index 0000000..70a14d4
Binary files /dev/null and b/app/assets/images/doc/enterprise-product-complete.en.png differ
diff --git a/app/assets/images/doc/enterprise-product-edit-basic-info-form.en.png b/app/assets/images/doc/enterprise-product-edit-basic-info-form.en.png
new file mode 100644
index 0000000..3ff2d5f
Binary files /dev/null and b/app/assets/images/doc/enterprise-product-edit-basic-info-form.en.png differ
diff --git a/app/assets/images/doc/enterprise-product-edit-description-form.en.png b/app/assets/images/doc/enterprise-product-edit-description-form.en.png
new file mode 100644
index 0000000..4572f12
Binary files /dev/null and b/app/assets/images/doc/enterprise-product-edit-description-form.en.png differ
diff --git a/app/assets/images/doc/enterprise-product-edit-name-form.en.png b/app/assets/images/doc/enterprise-product-edit-name-form.en.png
new file mode 100644
index 0000000..e32e399
Binary files /dev/null and b/app/assets/images/doc/enterprise-product-edit-name-form.en.png differ
diff --git a/app/assets/images/doc/enterprise-product-list-new-product-button.en.png b/app/assets/images/doc/enterprise-product-list-new-product-button.en.png
new file mode 100644
index 0000000..0286dc1
Binary files /dev/null and b/app/assets/images/doc/enterprise-product-list-new-product-button.en.png differ
diff --git a/app/assets/images/doc/enterprise-product-list-new-product-button.pt.png b/app/assets/images/doc/enterprise-product-list-new-product-button.pt.png
new file mode 100644
index 0000000..c769dbe
Binary files /dev/null and b/app/assets/images/doc/enterprise-product-list-new-product-button.pt.png differ
diff --git a/app/assets/images/doc/enterprise-product.en.png b/app/assets/images/doc/enterprise-product.en.png
new file mode 100644
index 0000000..04ab1ed
Binary files /dev/null and b/app/assets/images/doc/enterprise-product.en.png differ
diff --git a/app/assets/images/doc/enterprise-sideboxes-add-block.en.png b/app/assets/images/doc/enterprise-sideboxes-add-block.en.png
new file mode 100644
index 0000000..4b3dae0
Binary files /dev/null and b/app/assets/images/doc/enterprise-sideboxes-add-block.en.png differ
diff --git a/app/assets/images/doc/enterprise-sideboxes-add-block.pt.png b/app/assets/images/doc/enterprise-sideboxes-add-block.pt.png
new file mode 100644
index 0000000..fb01164
Binary files /dev/null and b/app/assets/images/doc/enterprise-sideboxes-add-block.pt.png differ
diff --git a/app/assets/images/doc/enterprises-block.en.png b/app/assets/images/doc/enterprises-block.en.png
new file mode 100644
index 0000000..7ce8361
Binary files /dev/null and b/app/assets/images/doc/enterprises-block.en.png differ
diff --git a/app/assets/images/doc/enterprises-block.pt.png b/app/assets/images/doc/enterprises-block.pt.png
new file mode 100644
index 0000000..4300756
Binary files /dev/null and b/app/assets/images/doc/enterprises-block.pt.png differ
diff --git a/app/assets/images/doc/enterprises-search-field.en.png b/app/assets/images/doc/enterprises-search-field.en.png
new file mode 100644
index 0000000..edfbe04
Binary files /dev/null and b/app/assets/images/doc/enterprises-search-field.en.png differ
diff --git a/app/assets/images/doc/enterprises-search-field.pt.png b/app/assets/images/doc/enterprises-search-field.pt.png
new file mode 100644
index 0000000..32ccdba
Binary files /dev/null and b/app/assets/images/doc/enterprises-search-field.pt.png differ
diff --git a/app/assets/images/doc/enterprises-search-results-with-example.en.png b/app/assets/images/doc/enterprises-search-results-with-example.en.png
new file mode 100644
index 0000000..259f05f
Binary files /dev/null and b/app/assets/images/doc/enterprises-search-results-with-example.en.png differ
diff --git a/app/assets/images/doc/enterprises-search-results-with-example.pt.png b/app/assets/images/doc/enterprises-search-results-with-example.pt.png
new file mode 100644
index 0000000..32ccdba
Binary files /dev/null and b/app/assets/images/doc/enterprises-search-results-with-example.pt.png differ
diff --git a/app/assets/images/doc/environment-homepage-with-login-button.en.png b/app/assets/images/doc/environment-homepage-with-login-button.en.png
new file mode 100644
index 0000000..763258a
Binary files /dev/null and b/app/assets/images/doc/environment-homepage-with-login-button.en.png differ
diff --git a/app/assets/images/doc/environment-homepage-with-login-button.pt.png b/app/assets/images/doc/environment-homepage-with-login-button.pt.png
new file mode 100644
index 0000000..e334d46
Binary files /dev/null and b/app/assets/images/doc/environment-homepage-with-login-button.pt.png differ
diff --git a/app/assets/images/doc/favorite-enterprises-block.en.png b/app/assets/images/doc/favorite-enterprises-block.en.png
new file mode 100644
index 0000000..31863db
Binary files /dev/null and b/app/assets/images/doc/favorite-enterprises-block.en.png differ
diff --git a/app/assets/images/doc/favorite-enterprises-block.pt.png b/app/assets/images/doc/favorite-enterprises-block.pt.png
new file mode 100644
index 0000000..0f51963
Binary files /dev/null and b/app/assets/images/doc/favorite-enterprises-block.pt.png differ
diff --git a/app/assets/images/doc/feed-reader-block.en.png b/app/assets/images/doc/feed-reader-block.en.png
new file mode 100644
index 0000000..7ae67dd
Binary files /dev/null and b/app/assets/images/doc/feed-reader-block.en.png differ
diff --git a/app/assets/images/doc/feed-reader-block.pt.png b/app/assets/images/doc/feed-reader-block.pt.png
new file mode 100644
index 0000000..44d4b65
Binary files /dev/null and b/app/assets/images/doc/feed-reader-block.pt.png differ
diff --git a/app/assets/images/doc/friends-block.en.png b/app/assets/images/doc/friends-block.en.png
new file mode 100644
index 0000000..6a1a522
Binary files /dev/null and b/app/assets/images/doc/friends-block.en.png differ
diff --git a/app/assets/images/doc/friends-block.pt.png b/app/assets/images/doc/friends-block.pt.png
new file mode 100644
index 0000000..14ef697
Binary files /dev/null and b/app/assets/images/doc/friends-block.pt.png differ
diff --git a/app/assets/images/doc/gallery-buttons.en.png b/app/assets/images/doc/gallery-buttons.en.png
new file mode 100644
index 0000000..cd757fb
Binary files /dev/null and b/app/assets/images/doc/gallery-buttons.en.png differ
diff --git a/app/assets/images/doc/gallery-buttons.pt.png b/app/assets/images/doc/gallery-buttons.pt.png
new file mode 100644
index 0000000..62cc7ca
Binary files /dev/null and b/app/assets/images/doc/gallery-buttons.pt.png differ
diff --git a/app/assets/images/doc/groups-list-with-create-community.en.png b/app/assets/images/doc/groups-list-with-create-community.en.png
new file mode 100644
index 0000000..c39383d
Binary files /dev/null and b/app/assets/images/doc/groups-list-with-create-community.en.png differ
diff --git a/app/assets/images/doc/groups-list-with-create-community.pt.png b/app/assets/images/doc/groups-list-with-create-community.pt.png
new file mode 100644
index 0000000..677b1e3
Binary files /dev/null and b/app/assets/images/doc/groups-list-with-create-community.pt.png differ
diff --git a/app/assets/images/doc/groups-list-with-manage-community.en.png b/app/assets/images/doc/groups-list-with-manage-community.en.png
new file mode 100644
index 0000000..0dddd50
Binary files /dev/null and b/app/assets/images/doc/groups-list-with-manage-community.en.png differ
diff --git a/app/assets/images/doc/groups-list-with-manage-community.pt.png b/app/assets/images/doc/groups-list-with-manage-community.pt.png
new file mode 100644
index 0000000..5cafebe
Binary files /dev/null and b/app/assets/images/doc/groups-list-with-manage-community.pt.png differ
diff --git a/app/assets/images/doc/groups-list-with-manage-enterprise.en.png b/app/assets/images/doc/groups-list-with-manage-enterprise.en.png
new file mode 100644
index 0000000..d882c53
Binary files /dev/null and b/app/assets/images/doc/groups-list-with-manage-enterprise.en.png differ
diff --git a/app/assets/images/doc/groups-list-with-manage-enterprise.pt.png b/app/assets/images/doc/groups-list-with-manage-enterprise.pt.png
new file mode 100644
index 0000000..a767ccd
Binary files /dev/null and b/app/assets/images/doc/groups-list-with-manage-enterprise.pt.png differ
diff --git a/app/assets/images/doc/join-community-confirmation.en.png b/app/assets/images/doc/join-community-confirmation.en.png
new file mode 100644
index 0000000..3cf45ee
Binary files /dev/null and b/app/assets/images/doc/join-community-confirmation.en.png differ
diff --git a/app/assets/images/doc/join-community-confirmation.pt.png b/app/assets/images/doc/join-community-confirmation.pt.png
new file mode 100644
index 0000000..3a9bda9
Binary files /dev/null and b/app/assets/images/doc/join-community-confirmation.pt.png differ
diff --git a/app/assets/images/doc/joining-community-button.en.png b/app/assets/images/doc/joining-community-button.en.png
new file mode 100644
index 0000000..d943e66
Binary files /dev/null and b/app/assets/images/doc/joining-community-button.en.png differ
diff --git a/app/assets/images/doc/joining-community-button.pt.png b/app/assets/images/doc/joining-community-button.pt.png
new file mode 100644
index 0000000..d7febd8
Binary files /dev/null and b/app/assets/images/doc/joining-community-button.pt.png differ
diff --git a/app/assets/images/doc/links-block.en.png b/app/assets/images/doc/links-block.en.png
new file mode 100644
index 0000000..f78bddf
Binary files /dev/null and b/app/assets/images/doc/links-block.en.png differ
diff --git a/app/assets/images/doc/links-block.pt.png b/app/assets/images/doc/links-block.pt.png
new file mode 100644
index 0000000..1d55f4b
Binary files /dev/null and b/app/assets/images/doc/links-block.pt.png differ
diff --git a/app/assets/images/doc/location-map-block.en.png b/app/assets/images/doc/location-map-block.en.png
new file mode 100644
index 0000000..b199417
Binary files /dev/null and b/app/assets/images/doc/location-map-block.en.png differ
diff --git a/app/assets/images/doc/location-map-block.pt.png b/app/assets/images/doc/location-map-block.pt.png
new file mode 100644
index 0000000..3c356d5
Binary files /dev/null and b/app/assets/images/doc/location-map-block.pt.png differ
diff --git a/app/assets/images/doc/manage-friends.en.png b/app/assets/images/doc/manage-friends.en.png
new file mode 100644
index 0000000..3ffb496
Binary files /dev/null and b/app/assets/images/doc/manage-friends.en.png differ
diff --git a/app/assets/images/doc/manage-friends.pt.png b/app/assets/images/doc/manage-friends.pt.png
new file mode 100644
index 0000000..c2c969b
Binary files /dev/null and b/app/assets/images/doc/manage-friends.pt.png differ
diff --git a/app/assets/images/doc/members-block.en.png b/app/assets/images/doc/members-block.en.png
new file mode 100644
index 0000000..eb38bdb
Binary files /dev/null and b/app/assets/images/doc/members-block.en.png differ
diff --git a/app/assets/images/doc/members-block.pt.png b/app/assets/images/doc/members-block.pt.png
new file mode 100644
index 0000000..700d188
Binary files /dev/null and b/app/assets/images/doc/members-block.pt.png differ
diff --git a/app/assets/images/doc/menu-admin.en.png b/app/assets/images/doc/menu-admin.en.png
new file mode 100644
index 0000000..e1a0e5f
Binary files /dev/null and b/app/assets/images/doc/menu-admin.en.png differ
diff --git a/app/assets/images/doc/menu-admin.pt.png b/app/assets/images/doc/menu-admin.pt.png
new file mode 100644
index 0000000..dad58fa
Binary files /dev/null and b/app/assets/images/doc/menu-admin.pt.png differ
diff --git a/app/assets/images/doc/menu-communities.en.png b/app/assets/images/doc/menu-communities.en.png
new file mode 100644
index 0000000..b20ec3f
Binary files /dev/null and b/app/assets/images/doc/menu-communities.en.png differ
diff --git a/app/assets/images/doc/menu-communities.pt.png b/app/assets/images/doc/menu-communities.pt.png
new file mode 100644
index 0000000..21ca281
Binary files /dev/null and b/app/assets/images/doc/menu-communities.pt.png differ
diff --git a/app/assets/images/doc/menu-control-panel.en.png b/app/assets/images/doc/menu-control-panel.en.png
new file mode 100644
index 0000000..b671241
Binary files /dev/null and b/app/assets/images/doc/menu-control-panel.en.png differ
diff --git a/app/assets/images/doc/menu-control-panel.pt.png b/app/assets/images/doc/menu-control-panel.pt.png
new file mode 100644
index 0000000..f57794c
Binary files /dev/null and b/app/assets/images/doc/menu-control-panel.pt.png differ
diff --git a/app/assets/images/doc/menu-enterprises.en.png b/app/assets/images/doc/menu-enterprises.en.png
new file mode 100644
index 0000000..a4cb929
Binary files /dev/null and b/app/assets/images/doc/menu-enterprises.en.png differ
diff --git a/app/assets/images/doc/menu-enterprises.pt.png b/app/assets/images/doc/menu-enterprises.pt.png
new file mode 100644
index 0000000..5131f18
Binary files /dev/null and b/app/assets/images/doc/menu-enterprises.pt.png differ
diff --git a/app/assets/images/doc/menu-logout.en.png b/app/assets/images/doc/menu-logout.en.png
new file mode 100644
index 0000000..b9cf98b
Binary files /dev/null and b/app/assets/images/doc/menu-logout.en.png differ
diff --git a/app/assets/images/doc/menu-logout.pt.png b/app/assets/images/doc/menu-logout.pt.png
new file mode 100644
index 0000000..8958acc
Binary files /dev/null and b/app/assets/images/doc/menu-logout.pt.png differ
diff --git a/app/assets/images/doc/menu-more-active-communities.en.png b/app/assets/images/doc/menu-more-active-communities.en.png
new file mode 100644
index 0000000..1386852
Binary files /dev/null and b/app/assets/images/doc/menu-more-active-communities.en.png differ
diff --git a/app/assets/images/doc/menu-more-active-communities.pt.png b/app/assets/images/doc/menu-more-active-communities.pt.png
new file mode 100644
index 0000000..5a9f7b4
Binary files /dev/null and b/app/assets/images/doc/menu-more-active-communities.pt.png differ
diff --git a/app/assets/images/doc/menu-more-active-people.en.png b/app/assets/images/doc/menu-more-active-people.en.png
new file mode 100644
index 0000000..a52b8f8
Binary files /dev/null and b/app/assets/images/doc/menu-more-active-people.en.png differ
diff --git a/app/assets/images/doc/menu-more-active-people.pt.png b/app/assets/images/doc/menu-more-active-people.pt.png
new file mode 100644
index 0000000..ff662eb
Binary files /dev/null and b/app/assets/images/doc/menu-more-active-people.pt.png differ
diff --git a/app/assets/images/doc/menu-more-popular-communities.en.png b/app/assets/images/doc/menu-more-popular-communities.en.png
new file mode 100644
index 0000000..20c473f
Binary files /dev/null and b/app/assets/images/doc/menu-more-popular-communities.en.png differ
diff --git a/app/assets/images/doc/menu-more-popular-communities.pt.png b/app/assets/images/doc/menu-more-popular-communities.pt.png
new file mode 100644
index 0000000..a7699d8
Binary files /dev/null and b/app/assets/images/doc/menu-more-popular-communities.pt.png differ
diff --git a/app/assets/images/doc/menu-more-popular-people.en.png b/app/assets/images/doc/menu-more-popular-people.en.png
new file mode 100644
index 0000000..99db373
Binary files /dev/null and b/app/assets/images/doc/menu-more-popular-people.en.png differ
diff --git a/app/assets/images/doc/menu-more-popular-people.pt.png b/app/assets/images/doc/menu-more-popular-people.pt.png
new file mode 100644
index 0000000..8643597
Binary files /dev/null and b/app/assets/images/doc/menu-more-popular-people.pt.png differ
diff --git a/app/assets/images/doc/menu-more-recent-communities.en.png b/app/assets/images/doc/menu-more-recent-communities.en.png
new file mode 100644
index 0000000..7d4af84
Binary files /dev/null and b/app/assets/images/doc/menu-more-recent-communities.en.png differ
diff --git a/app/assets/images/doc/menu-more-recent-communities.pt.png b/app/assets/images/doc/menu-more-recent-communities.pt.png
new file mode 100644
index 0000000..149ebd3
Binary files /dev/null and b/app/assets/images/doc/menu-more-recent-communities.pt.png differ
diff --git a/app/assets/images/doc/menu-more-recent-people.en.png b/app/assets/images/doc/menu-more-recent-people.en.png
new file mode 100644
index 0000000..1deaa69
Binary files /dev/null and b/app/assets/images/doc/menu-more-recent-people.en.png differ
diff --git a/app/assets/images/doc/menu-more-recent-people.pt.png b/app/assets/images/doc/menu-more-recent-people.pt.png
new file mode 100644
index 0000000..0de31be
Binary files /dev/null and b/app/assets/images/doc/menu-more-recent-people.pt.png differ
diff --git a/app/assets/images/doc/menu-people.en.png b/app/assets/images/doc/menu-people.en.png
new file mode 100644
index 0000000..6a84b6a
Binary files /dev/null and b/app/assets/images/doc/menu-people.en.png differ
diff --git a/app/assets/images/doc/menu-people.pt.png b/app/assets/images/doc/menu-people.pt.png
new file mode 100644
index 0000000..08353ef
Binary files /dev/null and b/app/assets/images/doc/menu-people.pt.png differ
diff --git a/app/assets/images/doc/menu-products.en.png b/app/assets/images/doc/menu-products.en.png
new file mode 100644
index 0000000..1b062c1
Binary files /dev/null and b/app/assets/images/doc/menu-products.en.png differ
diff --git a/app/assets/images/doc/menu-products.pt.png b/app/assets/images/doc/menu-products.pt.png
new file mode 100644
index 0000000..45cebfe
Binary files /dev/null and b/app/assets/images/doc/menu-products.pt.png differ
diff --git a/app/assets/images/doc/menu-search.en.png b/app/assets/images/doc/menu-search.en.png
new file mode 100644
index 0000000..e718ba6
Binary files /dev/null and b/app/assets/images/doc/menu-search.en.png differ
diff --git a/app/assets/images/doc/menu-search.pt.png b/app/assets/images/doc/menu-search.pt.png
new file mode 100644
index 0000000..df3bfa1
Binary files /dev/null and b/app/assets/images/doc/menu-search.pt.png differ
diff --git a/app/assets/images/doc/more-active-communities-detail.en.png b/app/assets/images/doc/more-active-communities-detail.en.png
new file mode 100644
index 0000000..d5cc3c4
Binary files /dev/null and b/app/assets/images/doc/more-active-communities-detail.en.png differ
diff --git a/app/assets/images/doc/more-active-communities-detail.pt.png b/app/assets/images/doc/more-active-communities-detail.pt.png
new file mode 100644
index 0000000..0e6f41c
Binary files /dev/null and b/app/assets/images/doc/more-active-communities-detail.pt.png differ
diff --git a/app/assets/images/doc/more-active-communities-with-example.en.png b/app/assets/images/doc/more-active-communities-with-example.en.png
new file mode 100644
index 0000000..570e2c3
Binary files /dev/null and b/app/assets/images/doc/more-active-communities-with-example.en.png differ
diff --git a/app/assets/images/doc/more-active-communities-with-example.pt.png b/app/assets/images/doc/more-active-communities-with-example.pt.png
new file mode 100644
index 0000000..ee863f4
Binary files /dev/null and b/app/assets/images/doc/more-active-communities-with-example.pt.png differ
diff --git a/app/assets/images/doc/more-active-communities.en.png b/app/assets/images/doc/more-active-communities.en.png
new file mode 100644
index 0000000..add1251
Binary files /dev/null and b/app/assets/images/doc/more-active-communities.en.png differ
diff --git a/app/assets/images/doc/more-active-communities.pt.png b/app/assets/images/doc/more-active-communities.pt.png
new file mode 100644
index 0000000..665636a
Binary files /dev/null and b/app/assets/images/doc/more-active-communities.pt.png differ
diff --git a/app/assets/images/doc/more-active-people-detail.en.png b/app/assets/images/doc/more-active-people-detail.en.png
new file mode 100644
index 0000000..e9d0e3f
Binary files /dev/null and b/app/assets/images/doc/more-active-people-detail.en.png differ
diff --git a/app/assets/images/doc/more-active-people-detail.pt.png b/app/assets/images/doc/more-active-people-detail.pt.png
new file mode 100644
index 0000000..0344790
Binary files /dev/null and b/app/assets/images/doc/more-active-people-detail.pt.png differ
diff --git a/app/assets/images/doc/more-active-people-with-example.en.png b/app/assets/images/doc/more-active-people-with-example.en.png
new file mode 100644
index 0000000..1b04b79
Binary files /dev/null and b/app/assets/images/doc/more-active-people-with-example.en.png differ
diff --git a/app/assets/images/doc/more-active-people-with-example.pt.png b/app/assets/images/doc/more-active-people-with-example.pt.png
new file mode 100644
index 0000000..f140310
Binary files /dev/null and b/app/assets/images/doc/more-active-people-with-example.pt.png differ
diff --git a/app/assets/images/doc/more-active-people.en.png b/app/assets/images/doc/more-active-people.en.png
new file mode 100644
index 0000000..130e22b
Binary files /dev/null and b/app/assets/images/doc/more-active-people.en.png differ
diff --git a/app/assets/images/doc/more-active-people.pt.png b/app/assets/images/doc/more-active-people.pt.png
new file mode 100644
index 0000000..4642ab2
Binary files /dev/null and b/app/assets/images/doc/more-active-people.pt.png differ
diff --git a/app/assets/images/doc/more-popular-communities-detail.en.png b/app/assets/images/doc/more-popular-communities-detail.en.png
new file mode 100644
index 0000000..cfc3847
Binary files /dev/null and b/app/assets/images/doc/more-popular-communities-detail.en.png differ
diff --git a/app/assets/images/doc/more-popular-communities-detail.pt.png b/app/assets/images/doc/more-popular-communities-detail.pt.png
new file mode 100644
index 0000000..01864e0
Binary files /dev/null and b/app/assets/images/doc/more-popular-communities-detail.pt.png differ
diff --git a/app/assets/images/doc/more-popular-communities-with-example.en.png b/app/assets/images/doc/more-popular-communities-with-example.en.png
new file mode 100644
index 0000000..16ef87c
Binary files /dev/null and b/app/assets/images/doc/more-popular-communities-with-example.en.png differ
diff --git a/app/assets/images/doc/more-popular-communities-with-example.pt.png b/app/assets/images/doc/more-popular-communities-with-example.pt.png
new file mode 100644
index 0000000..60898cf
Binary files /dev/null and b/app/assets/images/doc/more-popular-communities-with-example.pt.png differ
diff --git a/app/assets/images/doc/more-popular-communities.en.png b/app/assets/images/doc/more-popular-communities.en.png
new file mode 100644
index 0000000..67b082a
Binary files /dev/null and b/app/assets/images/doc/more-popular-communities.en.png differ
diff --git a/app/assets/images/doc/more-popular-communities.pt.png b/app/assets/images/doc/more-popular-communities.pt.png
new file mode 100644
index 0000000..3450281
Binary files /dev/null and b/app/assets/images/doc/more-popular-communities.pt.png differ
diff --git a/app/assets/images/doc/more-popular-people-detail.en.png b/app/assets/images/doc/more-popular-people-detail.en.png
new file mode 100644
index 0000000..6e1b7bc
Binary files /dev/null and b/app/assets/images/doc/more-popular-people-detail.en.png differ
diff --git a/app/assets/images/doc/more-popular-people-detail.pt.png b/app/assets/images/doc/more-popular-people-detail.pt.png
new file mode 100644
index 0000000..06f1745
Binary files /dev/null and b/app/assets/images/doc/more-popular-people-detail.pt.png differ
diff --git a/app/assets/images/doc/more-popular-people-with-example.en.png b/app/assets/images/doc/more-popular-people-with-example.en.png
new file mode 100644
index 0000000..9b7ef12
Binary files /dev/null and b/app/assets/images/doc/more-popular-people-with-example.en.png differ
diff --git a/app/assets/images/doc/more-popular-people-with-example.pt.png b/app/assets/images/doc/more-popular-people-with-example.pt.png
new file mode 100644
index 0000000..c7128c8
Binary files /dev/null and b/app/assets/images/doc/more-popular-people-with-example.pt.png differ
diff --git a/app/assets/images/doc/more-popular-people.en.png b/app/assets/images/doc/more-popular-people.en.png
new file mode 100644
index 0000000..2832686
Binary files /dev/null and b/app/assets/images/doc/more-popular-people.en.png differ
diff --git a/app/assets/images/doc/more-popular-people.pt.png b/app/assets/images/doc/more-popular-people.pt.png
new file mode 100644
index 0000000..1b2503a
Binary files /dev/null and b/app/assets/images/doc/more-popular-people.pt.png differ
diff --git a/app/assets/images/doc/more-recent-communities-detail.en.png b/app/assets/images/doc/more-recent-communities-detail.en.png
new file mode 100644
index 0000000..068b152
Binary files /dev/null and b/app/assets/images/doc/more-recent-communities-detail.en.png differ
diff --git a/app/assets/images/doc/more-recent-communities-detail.pt.png b/app/assets/images/doc/more-recent-communities-detail.pt.png
new file mode 100644
index 0000000..0721376
Binary files /dev/null and b/app/assets/images/doc/more-recent-communities-detail.pt.png differ
diff --git a/app/assets/images/doc/more-recent-communities-with-example.en.png b/app/assets/images/doc/more-recent-communities-with-example.en.png
new file mode 100644
index 0000000..2abac00
Binary files /dev/null and b/app/assets/images/doc/more-recent-communities-with-example.en.png differ
diff --git a/app/assets/images/doc/more-recent-communities-with-example.pt.png b/app/assets/images/doc/more-recent-communities-with-example.pt.png
new file mode 100644
index 0000000..09716a1
Binary files /dev/null and b/app/assets/images/doc/more-recent-communities-with-example.pt.png differ
diff --git a/app/assets/images/doc/more-recent-communities.en.png b/app/assets/images/doc/more-recent-communities.en.png
new file mode 100644
index 0000000..0493f25
Binary files /dev/null and b/app/assets/images/doc/more-recent-communities.en.png differ
diff --git a/app/assets/images/doc/more-recent-communities.pt.png b/app/assets/images/doc/more-recent-communities.pt.png
new file mode 100644
index 0000000..8a34986
Binary files /dev/null and b/app/assets/images/doc/more-recent-communities.pt.png differ
diff --git a/app/assets/images/doc/more-recent-people-detail.en.png b/app/assets/images/doc/more-recent-people-detail.en.png
new file mode 100644
index 0000000..ae90142
Binary files /dev/null and b/app/assets/images/doc/more-recent-people-detail.en.png differ
diff --git a/app/assets/images/doc/more-recent-people-detail.pt.png b/app/assets/images/doc/more-recent-people-detail.pt.png
new file mode 100644
index 0000000..d4db2ed
Binary files /dev/null and b/app/assets/images/doc/more-recent-people-detail.pt.png differ
diff --git a/app/assets/images/doc/more-recent-people-with-example.en.png b/app/assets/images/doc/more-recent-people-with-example.en.png
new file mode 100644
index 0000000..36e2cdc
Binary files /dev/null and b/app/assets/images/doc/more-recent-people-with-example.en.png differ
diff --git a/app/assets/images/doc/more-recent-people-with-example.pt.png b/app/assets/images/doc/more-recent-people-with-example.pt.png
new file mode 100644
index 0000000..5698821
Binary files /dev/null and b/app/assets/images/doc/more-recent-people-with-example.pt.png differ
diff --git a/app/assets/images/doc/more-recent-people.en.png b/app/assets/images/doc/more-recent-people.en.png
new file mode 100644
index 0000000..ab7b97d
Binary files /dev/null and b/app/assets/images/doc/more-recent-people.en.png differ
diff --git a/app/assets/images/doc/more-recent-people.pt.png b/app/assets/images/doc/more-recent-people.pt.png
new file mode 100644
index 0000000..7b30cd0
Binary files /dev/null and b/app/assets/images/doc/more-recent-people.pt.png differ
diff --git a/app/assets/images/doc/new-folder.en.png b/app/assets/images/doc/new-folder.en.png
new file mode 100644
index 0000000..634f519
Binary files /dev/null and b/app/assets/images/doc/new-folder.en.png differ
diff --git a/app/assets/images/doc/new-folder.pt.png b/app/assets/images/doc/new-folder.pt.png
new file mode 100644
index 0000000..4653f24
Binary files /dev/null and b/app/assets/images/doc/new-folder.pt.png differ
diff --git a/app/assets/images/doc/open-comment-box-for-logged-in.en.png b/app/assets/images/doc/open-comment-box-for-logged-in.en.png
new file mode 100644
index 0000000..ee961b6
Binary files /dev/null and b/app/assets/images/doc/open-comment-box-for-logged-in.en.png differ
diff --git a/app/assets/images/doc/open-comment-box-for-logged-in.pt.png b/app/assets/images/doc/open-comment-box-for-logged-in.pt.png
new file mode 100644
index 0000000..280f91e
Binary files /dev/null and b/app/assets/images/doc/open-comment-box-for-logged-in.pt.png differ
diff --git a/app/assets/images/doc/open-comment-box-for-not-logged-in.en.png b/app/assets/images/doc/open-comment-box-for-not-logged-in.en.png
new file mode 100644
index 0000000..8389815
Binary files /dev/null and b/app/assets/images/doc/open-comment-box-for-not-logged-in.en.png differ
diff --git a/app/assets/images/doc/open-comment-box-for-not-logged-in.pt.png b/app/assets/images/doc/open-comment-box-for-not-logged-in.pt.png
new file mode 100644
index 0000000..c7bcb36
Binary files /dev/null and b/app/assets/images/doc/open-comment-box-for-not-logged-in.pt.png differ
diff --git a/app/assets/images/doc/other-person-view-profile-link.en.png b/app/assets/images/doc/other-person-view-profile-link.en.png
new file mode 100644
index 0000000..e5cded2
Binary files /dev/null and b/app/assets/images/doc/other-person-view-profile-link.en.png differ
diff --git a/app/assets/images/doc/other-person-view-profile-link.pt.png b/app/assets/images/doc/other-person-view-profile-link.pt.png
new file mode 100644
index 0000000..e4397cb
Binary files /dev/null and b/app/assets/images/doc/other-person-view-profile-link.pt.png differ
diff --git a/app/assets/images/doc/people-search-field.en.png b/app/assets/images/doc/people-search-field.en.png
new file mode 100644
index 0000000..cf471d3
Binary files /dev/null and b/app/assets/images/doc/people-search-field.en.png differ
diff --git a/app/assets/images/doc/people-search-field.pt.png b/app/assets/images/doc/people-search-field.pt.png
new file mode 100644
index 0000000..57ffc74
Binary files /dev/null and b/app/assets/images/doc/people-search-field.pt.png differ
diff --git a/app/assets/images/doc/people-search-results-with-example.en.png b/app/assets/images/doc/people-search-results-with-example.en.png
new file mode 100644
index 0000000..2b61988
Binary files /dev/null and b/app/assets/images/doc/people-search-results-with-example.en.png differ
diff --git a/app/assets/images/doc/people-search-results-with-example.pt.png b/app/assets/images/doc/people-search-results-with-example.pt.png
new file mode 100644
index 0000000..77d8f18
Binary files /dev/null and b/app/assets/images/doc/people-search-results-with-example.pt.png differ
diff --git a/app/assets/images/doc/person-activities-list.en.png b/app/assets/images/doc/person-activities-list.en.png
new file mode 100644
index 0000000..ccc9517
Binary files /dev/null and b/app/assets/images/doc/person-activities-list.en.png differ
diff --git a/app/assets/images/doc/person-activities-list.pt.png b/app/assets/images/doc/person-activities-list.pt.png
new file mode 100644
index 0000000..b919a42
Binary files /dev/null and b/app/assets/images/doc/person-activities-list.pt.png differ
diff --git a/app/assets/images/doc/person-balloon-closed-en.png b/app/assets/images/doc/person-balloon-closed-en.png
new file mode 100644
index 0000000..3064935
Binary files /dev/null and b/app/assets/images/doc/person-balloon-closed-en.png differ
diff --git a/app/assets/images/doc/person-balloon-closed.en.png b/app/assets/images/doc/person-balloon-closed.en.png
new file mode 100644
index 0000000..3064935
Binary files /dev/null and b/app/assets/images/doc/person-balloon-closed.en.png differ
diff --git a/app/assets/images/doc/person-balloon-en.png b/app/assets/images/doc/person-balloon-en.png
new file mode 100644
index 0000000..8c4d269
Binary files /dev/null and b/app/assets/images/doc/person-balloon-en.png differ
diff --git a/app/assets/images/doc/person-balloon-pt.png b/app/assets/images/doc/person-balloon-pt.png
new file mode 100644
index 0000000..3760f58
Binary files /dev/null and b/app/assets/images/doc/person-balloon-pt.png differ
diff --git a/app/assets/images/doc/person-balloon.en.png b/app/assets/images/doc/person-balloon.en.png
new file mode 100644
index 0000000..8c4d269
Binary files /dev/null and b/app/assets/images/doc/person-balloon.en.png differ
diff --git a/app/assets/images/doc/person-balloon.pt.png b/app/assets/images/doc/person-balloon.pt.png
new file mode 100644
index 0000000..3760f58
Binary files /dev/null and b/app/assets/images/doc/person-balloon.pt.png differ
diff --git a/app/assets/images/doc/person-delete-profile-confirmation.en.png b/app/assets/images/doc/person-delete-profile-confirmation.en.png
new file mode 100644
index 0000000..616c46a
Binary files /dev/null and b/app/assets/images/doc/person-delete-profile-confirmation.en.png differ
diff --git a/app/assets/images/doc/person-delete-profile-confirmation.pt.png b/app/assets/images/doc/person-delete-profile-confirmation.pt.png
new file mode 100644
index 0000000..95e5534
Binary files /dev/null and b/app/assets/images/doc/person-delete-profile-confirmation.pt.png differ
diff --git a/app/assets/images/doc/person-edit-profile-categories.en.png b/app/assets/images/doc/person-edit-profile-categories.en.png
new file mode 100644
index 0000000..32d966c
Binary files /dev/null and b/app/assets/images/doc/person-edit-profile-categories.en.png differ
diff --git a/app/assets/images/doc/person-edit-profile-categories.pt.png b/app/assets/images/doc/person-edit-profile-categories.pt.png
new file mode 100644
index 0000000..dc47ac8
Binary files /dev/null and b/app/assets/images/doc/person-edit-profile-categories.pt.png differ
diff --git a/app/assets/images/doc/person-edit-profile-info-change-picture.en.png b/app/assets/images/doc/person-edit-profile-info-change-picture.en.png
new file mode 100644
index 0000000..b7aa99b
Binary files /dev/null and b/app/assets/images/doc/person-edit-profile-info-change-picture.en.png differ
diff --git a/app/assets/images/doc/person-edit-profile-info-change-picture.pt.png b/app/assets/images/doc/person-edit-profile-info-change-picture.pt.png
new file mode 100644
index 0000000..35fa301
Binary files /dev/null and b/app/assets/images/doc/person-edit-profile-info-change-picture.pt.png differ
diff --git a/app/assets/images/doc/person-edit-profile-info-general-informationen.en.png b/app/assets/images/doc/person-edit-profile-info-general-informationen.en.png
new file mode 100644
index 0000000..5af4467
Binary files /dev/null and b/app/assets/images/doc/person-edit-profile-info-general-informationen.en.png differ
diff --git a/app/assets/images/doc/person-edit-profile-info-general-informationen.pt.png b/app/assets/images/doc/person-edit-profile-info-general-informationen.pt.png
new file mode 100644
index 0000000..914deee
Binary files /dev/null and b/app/assets/images/doc/person-edit-profile-info-general-informationen.pt.png differ
diff --git a/app/assets/images/doc/person-edit-profile-privacy-options.en.png b/app/assets/images/doc/person-edit-profile-privacy-options.en.png
new file mode 100644
index 0000000..a07b387
Binary files /dev/null and b/app/assets/images/doc/person-edit-profile-privacy-options.en.png differ
diff --git a/app/assets/images/doc/person-edit-profile-privacy-options.pt.png b/app/assets/images/doc/person-edit-profile-privacy-options.pt.png
new file mode 100644
index 0000000..0d5e36e
Binary files /dev/null and b/app/assets/images/doc/person-edit-profile-privacy-options.pt.png differ
diff --git a/app/assets/images/doc/person-view-profile-link.en.png b/app/assets/images/doc/person-view-profile-link.en.png
new file mode 100644
index 0000000..d377257
Binary files /dev/null and b/app/assets/images/doc/person-view-profile-link.en.png differ
diff --git a/app/assets/images/doc/person-view-profile-link.pt.png b/app/assets/images/doc/person-view-profile-link.pt.png
new file mode 100644
index 0000000..ebbc18c
Binary files /dev/null and b/app/assets/images/doc/person-view-profile-link.pt.png differ
diff --git a/app/assets/images/doc/person-wall-scrap-reply-button.en.png b/app/assets/images/doc/person-wall-scrap-reply-button.en.png
new file mode 100644
index 0000000..ece6b73
Binary files /dev/null and b/app/assets/images/doc/person-wall-scrap-reply-button.en.png differ
diff --git a/app/assets/images/doc/person-wall-scrap-reply-form.en.png b/app/assets/images/doc/person-wall-scrap-reply-form.en.png
new file mode 100644
index 0000000..86b3c9d
Binary files /dev/null and b/app/assets/images/doc/person-wall-scrap-reply-form.en.png differ
diff --git a/app/assets/images/doc/person-wall-scrap-reply-form.pt.png b/app/assets/images/doc/person-wall-scrap-reply-form.pt.png
new file mode 100644
index 0000000..df274f1
Binary files /dev/null and b/app/assets/images/doc/person-wall-scrap-reply-form.pt.png differ
diff --git a/app/assets/images/doc/person-wall-scrap-reply-sent.en.png b/app/assets/images/doc/person-wall-scrap-reply-sent.en.png
new file mode 100644
index 0000000..d6449f9
Binary files /dev/null and b/app/assets/images/doc/person-wall-scrap-reply-sent.en.png differ
diff --git a/app/assets/images/doc/person-wall-scrap-reply-sent.pt.png b/app/assets/images/doc/person-wall-scrap-reply-sent.pt.png
new file mode 100644
index 0000000..6638852
Binary files /dev/null and b/app/assets/images/doc/person-wall-scrap-reply-sent.pt.png differ
diff --git a/app/assets/images/doc/person-wall-scrap-sent.en.png b/app/assets/images/doc/person-wall-scrap-sent.en.png
new file mode 100644
index 0000000..078e429
Binary files /dev/null and b/app/assets/images/doc/person-wall-scrap-sent.en.png differ
diff --git a/app/assets/images/doc/person-wall-scrap-sent.pt.png b/app/assets/images/doc/person-wall-scrap-sent.pt.png
new file mode 100644
index 0000000..bb515a3
Binary files /dev/null and b/app/assets/images/doc/person-wall-scrap-sent.pt.png differ
diff --git a/app/assets/images/doc/person-wall-writing-scrap.en.png b/app/assets/images/doc/person-wall-writing-scrap.en.png
new file mode 100644
index 0000000..2cde381
Binary files /dev/null and b/app/assets/images/doc/person-wall-writing-scrap.en.png differ
diff --git a/app/assets/images/doc/person-wall-writing-scrap.pt.png b/app/assets/images/doc/person-wall-writing-scrap.pt.png
new file mode 100644
index 0000000..a08711a
Binary files /dev/null and b/app/assets/images/doc/person-wall-writing-scrap.pt.png differ
diff --git a/app/assets/images/doc/products-block.en.png b/app/assets/images/doc/products-block.en.png
new file mode 100644
index 0000000..c171cb8
Binary files /dev/null and b/app/assets/images/doc/products-block.en.png differ
diff --git a/app/assets/images/doc/products-block.pt.png b/app/assets/images/doc/products-block.pt.png
new file mode 100644
index 0000000..5717295
Binary files /dev/null and b/app/assets/images/doc/products-block.pt.png differ
diff --git a/app/assets/images/doc/products-search-field.en.png b/app/assets/images/doc/products-search-field.en.png
new file mode 100644
index 0000000..d2a880b
Binary files /dev/null and b/app/assets/images/doc/products-search-field.en.png differ
diff --git a/app/assets/images/doc/products-search-field.pt.png b/app/assets/images/doc/products-search-field.pt.png
new file mode 100644
index 0000000..a62dd0f
Binary files /dev/null and b/app/assets/images/doc/products-search-field.pt.png differ
diff --git a/app/assets/images/doc/products-search-results-with-example.en.png b/app/assets/images/doc/products-search-results-with-example.en.png
new file mode 100644
index 0000000..b4fb506
Binary files /dev/null and b/app/assets/images/doc/products-search-results-with-example.en.png differ
diff --git a/app/assets/images/doc/products-search-results-with-example.pt.png b/app/assets/images/doc/products-search-results-with-example.pt.png
new file mode 100644
index 0000000..18b5dc2
Binary files /dev/null and b/app/assets/images/doc/products-search-results-with-example.pt.png differ
diff --git a/app/assets/images/doc/profile-image-block.en.png b/app/assets/images/doc/profile-image-block.en.png
new file mode 100644
index 0000000..7f619a3
Binary files /dev/null and b/app/assets/images/doc/profile-image-block.en.png differ
diff --git a/app/assets/images/doc/profile-image-block.pt.png b/app/assets/images/doc/profile-image-block.pt.png
new file mode 100644
index 0000000..f6e6946
Binary files /dev/null and b/app/assets/images/doc/profile-image-block.pt.png differ
diff --git a/app/assets/images/doc/profile-info-block.en.png b/app/assets/images/doc/profile-info-block.en.png
new file mode 100644
index 0000000..94cbf0d
Binary files /dev/null and b/app/assets/images/doc/profile-info-block.en.png differ
diff --git a/app/assets/images/doc/profile-info-block.pt.png b/app/assets/images/doc/profile-info-block.pt.png
new file mode 100644
index 0000000..dcf6748
Binary files /dev/null and b/app/assets/images/doc/profile-info-block.pt.png differ
diff --git a/app/assets/images/doc/profile-with-button-to-add-friends.en.png b/app/assets/images/doc/profile-with-button-to-add-friends.en.png
new file mode 100644
index 0000000..48581d6
Binary files /dev/null and b/app/assets/images/doc/profile-with-button-to-add-friends.en.png differ
diff --git a/app/assets/images/doc/profile-with-button-to-add-friends.pt.png b/app/assets/images/doc/profile-with-button-to-add-friends.pt.png
new file mode 100644
index 0000000..170df82
Binary files /dev/null and b/app/assets/images/doc/profile-with-button-to-add-friends.pt.png differ
diff --git a/app/assets/images/doc/recent-content-block.en.png b/app/assets/images/doc/recent-content-block.en.png
new file mode 100644
index 0000000..67820c1
Binary files /dev/null and b/app/assets/images/doc/recent-content-block.en.png differ
diff --git a/app/assets/images/doc/recent-content-block.pt.png b/app/assets/images/doc/recent-content-block.pt.png
new file mode 100644
index 0000000..82b66df
Binary files /dev/null and b/app/assets/images/doc/recent-content-block.pt.png differ
diff --git a/app/assets/images/doc/remove-comment-confirmation.en.png b/app/assets/images/doc/remove-comment-confirmation.en.png
new file mode 100644
index 0000000..080521e
Binary files /dev/null and b/app/assets/images/doc/remove-comment-confirmation.en.png differ
diff --git a/app/assets/images/doc/remove-comment-confirmation.pt.png b/app/assets/images/doc/remove-comment-confirmation.pt.png
new file mode 100644
index 0000000..d18800f
Binary files /dev/null and b/app/assets/images/doc/remove-comment-confirmation.pt.png differ
diff --git a/app/assets/images/doc/remove-friend-confirmation.en.png b/app/assets/images/doc/remove-friend-confirmation.en.png
new file mode 100644
index 0000000..3df6993
Binary files /dev/null and b/app/assets/images/doc/remove-friend-confirmation.en.png differ
diff --git a/app/assets/images/doc/remove-friend-confirmation.pt.png b/app/assets/images/doc/remove-friend-confirmation.pt.png
new file mode 100644
index 0000000..ffa872b
Binary files /dev/null and b/app/assets/images/doc/remove-friend-confirmation.pt.png differ
diff --git a/app/assets/images/doc/remove-friend.en.png b/app/assets/images/doc/remove-friend.en.png
new file mode 100644
index 0000000..cf49657
Binary files /dev/null and b/app/assets/images/doc/remove-friend.en.png differ
diff --git a/app/assets/images/doc/remove-friend.pt.png b/app/assets/images/doc/remove-friend.pt.png
new file mode 100644
index 0000000..d4bd284
Binary files /dev/null and b/app/assets/images/doc/remove-friend.pt.png differ
diff --git a/app/assets/images/doc/search-more-options-open.en.png b/app/assets/images/doc/search-more-options-open.en.png
new file mode 100644
index 0000000..bf29bce
Binary files /dev/null and b/app/assets/images/doc/search-more-options-open.en.png differ
diff --git a/app/assets/images/doc/search-more-options-open.pt.png b/app/assets/images/doc/search-more-options-open.pt.png
new file mode 100644
index 0000000..0b01730
Binary files /dev/null and b/app/assets/images/doc/search-more-options-open.pt.png differ
diff --git a/app/assets/images/doc/search-more-options.en.png b/app/assets/images/doc/search-more-options.en.png
new file mode 100644
index 0000000..a99e4ba
Binary files /dev/null and b/app/assets/images/doc/search-more-options.en.png differ
diff --git a/app/assets/images/doc/search-more-options.pt.png b/app/assets/images/doc/search-more-options.pt.png
new file mode 100644
index 0000000..a7b60af
Binary files /dev/null and b/app/assets/images/doc/search-more-options.pt.png differ
diff --git a/app/assets/images/doc/search-results-with-example.en.png b/app/assets/images/doc/search-results-with-example.en.png
new file mode 100644
index 0000000..3e730dd
Binary files /dev/null and b/app/assets/images/doc/search-results-with-example.en.png differ
diff --git a/app/assets/images/doc/search-results-with-example.pt.png b/app/assets/images/doc/search-results-with-example.pt.png
new file mode 100644
index 0000000..43e8137
Binary files /dev/null and b/app/assets/images/doc/search-results-with-example.pt.png differ
diff --git a/app/assets/images/doc/search-view-all-results-with-example.en.png b/app/assets/images/doc/search-view-all-results-with-example.en.png
new file mode 100644
index 0000000..08ff053
Binary files /dev/null and b/app/assets/images/doc/search-view-all-results-with-example.en.png differ
diff --git a/app/assets/images/doc/search-view-all-results-with-example.pt.png b/app/assets/images/doc/search-view-all-results-with-example.pt.png
new file mode 100644
index 0000000..d1c173b
Binary files /dev/null and b/app/assets/images/doc/search-view-all-results-with-example.pt.png differ
diff --git a/app/assets/images/doc/send-message.en.png b/app/assets/images/doc/send-message.en.png
new file mode 100644
index 0000000..e6c9ef3
Binary files /dev/null and b/app/assets/images/doc/send-message.en.png differ
diff --git a/app/assets/images/doc/send-message.pt.png b/app/assets/images/doc/send-message.pt.png
new file mode 100644
index 0000000..32ed844
Binary files /dev/null and b/app/assets/images/doc/send-message.pt.png differ
diff --git a/app/assets/images/doc/signup-form.en.png b/app/assets/images/doc/signup-form.en.png
new file mode 100644
index 0000000..f489a13
Binary files /dev/null and b/app/assets/images/doc/signup-form.en.png differ
diff --git a/app/assets/images/doc/signup-form.pt.png b/app/assets/images/doc/signup-form.pt.png
new file mode 100644
index 0000000..60ccf71
Binary files /dev/null and b/app/assets/images/doc/signup-form.pt.png differ
diff --git a/app/assets/images/doc/slideshow-block.en.png b/app/assets/images/doc/slideshow-block.en.png
new file mode 100644
index 0000000..ad40088
Binary files /dev/null and b/app/assets/images/doc/slideshow-block.en.png differ
diff --git a/app/assets/images/doc/slideshow-block.pt.png b/app/assets/images/doc/slideshow-block.pt.png
new file mode 100644
index 0000000..6539ef1
Binary files /dev/null and b/app/assets/images/doc/slideshow-block.pt.png differ
diff --git a/app/assets/images/doc/system-homepage-top-menu-admin.en.png b/app/assets/images/doc/system-homepage-top-menu-admin.en.png
new file mode 100644
index 0000000..f944d32
Binary files /dev/null and b/app/assets/images/doc/system-homepage-top-menu-admin.en.png differ
diff --git a/app/assets/images/doc/system-homepage-top-menu-admin.pt.png b/app/assets/images/doc/system-homepage-top-menu-admin.pt.png
new file mode 100644
index 0000000..f8657b5
Binary files /dev/null and b/app/assets/images/doc/system-homepage-top-menu-admin.pt.png differ
diff --git a/app/assets/images/doc/system-homepage-top-menu.en.png b/app/assets/images/doc/system-homepage-top-menu.en.png
new file mode 100644
index 0000000..d91ac30
Binary files /dev/null and b/app/assets/images/doc/system-homepage-top-menu.en.png differ
diff --git a/app/assets/images/doc/system-homepage-top-menu.pt.png b/app/assets/images/doc/system-homepage-top-menu.pt.png
new file mode 100644
index 0000000..5be24a0
Binary files /dev/null and b/app/assets/images/doc/system-homepage-top-menu.pt.png differ
diff --git a/app/assets/images/doc/tags-block.en.png b/app/assets/images/doc/tags-block.en.png
new file mode 100644
index 0000000..71e4614
Binary files /dev/null and b/app/assets/images/doc/tags-block.en.png differ
diff --git a/app/assets/images/doc/tags-block.pt.png b/app/assets/images/doc/tags-block.pt.png
new file mode 100644
index 0000000..7fe5c45
Binary files /dev/null and b/app/assets/images/doc/tags-block.pt.png differ
diff --git a/app/assets/images/doc/tasks-list-approval-request.en.png b/app/assets/images/doc/tasks-list-approval-request.en.png
new file mode 100644
index 0000000..86aa0f7
Binary files /dev/null and b/app/assets/images/doc/tasks-list-approval-request.en.png differ
diff --git a/app/assets/images/doc/tasks-list-approval-request.pt.png b/app/assets/images/doc/tasks-list-approval-request.pt.png
new file mode 100644
index 0000000..d791c22
Binary files /dev/null and b/app/assets/images/doc/tasks-list-approval-request.pt.png differ
diff --git a/app/assets/images/doc/tasks-list-friendship-request.en.png b/app/assets/images/doc/tasks-list-friendship-request.en.png
new file mode 100644
index 0000000..9eca09b
Binary files /dev/null and b/app/assets/images/doc/tasks-list-friendship-request.en.png differ
diff --git a/app/assets/images/doc/tasks-list-friendship-request.pt.png b/app/assets/images/doc/tasks-list-friendship-request.pt.png
new file mode 100644
index 0000000..dba9678
Binary files /dev/null and b/app/assets/images/doc/tasks-list-friendship-request.pt.png differ
diff --git a/app/assets/images/doc/tasks-list-membership-request.en.png b/app/assets/images/doc/tasks-list-membership-request.en.png
new file mode 100644
index 0000000..253131e
Binary files /dev/null and b/app/assets/images/doc/tasks-list-membership-request.en.png differ
diff --git a/app/assets/images/doc/tasks-list-membership-request.pt.png b/app/assets/images/doc/tasks-list-membership-request.pt.png
new file mode 100644
index 0000000..47e5177
Binary files /dev/null and b/app/assets/images/doc/tasks-list-membership-request.pt.png differ
diff --git a/app/assets/images/doc/top-menu.en.png b/app/assets/images/doc/top-menu.en.png
new file mode 100644
index 0000000..8c5ae7b
Binary files /dev/null and b/app/assets/images/doc/top-menu.en.png differ
diff --git a/app/assets/images/doc/top-menu.pt.png b/app/assets/images/doc/top-menu.pt.png
new file mode 100644
index 0000000..c2f7dbb
Binary files /dev/null and b/app/assets/images/doc/top-menu.pt.png differ
diff --git a/app/assets/images/doc/uploading-files-to-gallery.en.png b/app/assets/images/doc/uploading-files-to-gallery.en.png
new file mode 100644
index 0000000..39484fd
Binary files /dev/null and b/app/assets/images/doc/uploading-files-to-gallery.en.png differ
diff --git a/app/assets/images/doc/uploading-files-to-gallery.pt.png b/app/assets/images/doc/uploading-files-to-gallery.pt.png
new file mode 100644
index 0000000..70a8139
Binary files /dev/null and b/app/assets/images/doc/uploading-files-to-gallery.pt.png differ
diff --git a/app/assets/images/doc/user-edit-sideboxes.en.png b/app/assets/images/doc/user-edit-sideboxes.en.png
new file mode 100644
index 0000000..20a8544
Binary files /dev/null and b/app/assets/images/doc/user-edit-sideboxes.en.png differ
diff --git a/app/assets/images/doc/user-edit-sideboxes.pt.png b/app/assets/images/doc/user-edit-sideboxes.pt.png
new file mode 100644
index 0000000..56eda23
Binary files /dev/null and b/app/assets/images/doc/user-edit-sideboxes.pt.png differ
diff --git a/app/assets/images/doc/user-friends-with-invitation-button.en.png b/app/assets/images/doc/user-friends-with-invitation-button.en.png
new file mode 100644
index 0000000..6038b0c
Binary files /dev/null and b/app/assets/images/doc/user-friends-with-invitation-button.en.png differ
diff --git a/app/assets/images/doc/user-friends-with-invitation-button.pt.png b/app/assets/images/doc/user-friends-with-invitation-button.pt.png
new file mode 100644
index 0000000..ca08852
Binary files /dev/null and b/app/assets/images/doc/user-friends-with-invitation-button.pt.png differ
diff --git a/app/assets/images/doc/user-import-invitation-step-1.en.png b/app/assets/images/doc/user-import-invitation-step-1.en.png
new file mode 100644
index 0000000..3bec3f8
Binary files /dev/null and b/app/assets/images/doc/user-import-invitation-step-1.en.png differ
diff --git a/app/assets/images/doc/user-import-invitation-step-1.pt.png b/app/assets/images/doc/user-import-invitation-step-1.pt.png
new file mode 100644
index 0000000..5179c0d
Binary files /dev/null and b/app/assets/images/doc/user-import-invitation-step-1.pt.png differ
diff --git a/app/assets/images/doc/user-import-invitation-step-2.en.png b/app/assets/images/doc/user-import-invitation-step-2.en.png
new file mode 100644
index 0000000..58be9b7
Binary files /dev/null and b/app/assets/images/doc/user-import-invitation-step-2.en.png differ
diff --git a/app/assets/images/doc/user-import-invitation-step-2.pt.png b/app/assets/images/doc/user-import-invitation-step-2.pt.png
new file mode 100644
index 0000000..e617358
Binary files /dev/null and b/app/assets/images/doc/user-import-invitation-step-2.pt.png differ
diff --git a/app/assets/images/doc/user-manually-invitation-step-1.en.png b/app/assets/images/doc/user-manually-invitation-step-1.en.png
new file mode 100644
index 0000000..7148034
Binary files /dev/null and b/app/assets/images/doc/user-manually-invitation-step-1.en.png differ
diff --git a/app/assets/images/doc/user-manually-invitation-step-1.pt.png b/app/assets/images/doc/user-manually-invitation-step-1.pt.png
new file mode 100644
index 0000000..572cda1
Binary files /dev/null and b/app/assets/images/doc/user-manually-invitation-step-1.pt.png differ
diff --git a/app/assets/images/doc/user-manually-invitation-step-2.en.png b/app/assets/images/doc/user-manually-invitation-step-2.en.png
new file mode 100644
index 0000000..5c8e47d
Binary files /dev/null and b/app/assets/images/doc/user-manually-invitation-step-2.en.png differ
diff --git a/app/assets/images/doc/user-manually-invitation-step-2.pt.png b/app/assets/images/doc/user-manually-invitation-step-2.pt.png
new file mode 100644
index 0000000..3f8e07b
Binary files /dev/null and b/app/assets/images/doc/user-manually-invitation-step-2.pt.png differ
diff --git a/app/assets/images/doc/user-network-block.en.png b/app/assets/images/doc/user-network-block.en.png
new file mode 100644
index 0000000..4e55939
Binary files /dev/null and b/app/assets/images/doc/user-network-block.en.png differ
diff --git a/app/assets/images/doc/user-network-block.pt.png b/app/assets/images/doc/user-network-block.pt.png
new file mode 100644
index 0000000..01d89ba
Binary files /dev/null and b/app/assets/images/doc/user-network-block.pt.png differ
diff --git a/app/assets/images/doc/user-sideboxes-add-block.en.png b/app/assets/images/doc/user-sideboxes-add-block.en.png
new file mode 100644
index 0000000..eaad923
Binary files /dev/null and b/app/assets/images/doc/user-sideboxes-add-block.en.png differ
diff --git a/app/assets/images/doc/user-sideboxes-add-block.pt.png b/app/assets/images/doc/user-sideboxes-add-block.pt.png
new file mode 100644
index 0000000..2eb9907
Binary files /dev/null and b/app/assets/images/doc/user-sideboxes-add-block.pt.png differ
diff --git a/app/assets/images/doc/wysiwyg-buttons.en.png b/app/assets/images/doc/wysiwyg-buttons.en.png
new file mode 100644
index 0000000..dbdf4d2
Binary files /dev/null and b/app/assets/images/doc/wysiwyg-buttons.en.png differ
diff --git a/app/assets/images/doc/wysiwyg-buttons.pt.png b/app/assets/images/doc/wysiwyg-buttons.pt.png
new file mode 100644
index 0000000..8c5faca
Binary files /dev/null and b/app/assets/images/doc/wysiwyg-buttons.pt.png differ
diff --git a/app/assets/images/dotleaders.png b/app/assets/images/dotleaders.png
new file mode 100644
index 0000000..8359ba2
Binary files /dev/null and b/app/assets/images/dotleaders.png differ
diff --git a/app/assets/images/down-arrow.png b/app/assets/images/down-arrow.png
new file mode 100644
index 0000000..9e6b5dc
Binary files /dev/null and b/app/assets/images/down-arrow.png differ
diff --git a/app/assets/images/ecosol-tree-sprite.png b/app/assets/images/ecosol-tree-sprite.png
new file mode 100644
index 0000000..843a71d
Binary files /dev/null and b/app/assets/images/ecosol-tree-sprite.png differ
diff --git a/app/assets/images/fancybox/blank.gif b/app/assets/images/fancybox/blank.gif
new file mode 100644
index 0000000..35d42e8
Binary files /dev/null and b/app/assets/images/fancybox/blank.gif differ
diff --git a/app/assets/images/fancybox/fancy_close.png b/app/assets/images/fancybox/fancy_close.png
new file mode 100644
index 0000000..0703530
Binary files /dev/null and b/app/assets/images/fancybox/fancy_close.png differ
diff --git a/app/assets/images/fancybox/fancy_loading.png b/app/assets/images/fancybox/fancy_loading.png
new file mode 100644
index 0000000..2503017
Binary files /dev/null and b/app/assets/images/fancybox/fancy_loading.png differ
diff --git a/app/assets/images/fancybox/fancy_nav_left.png b/app/assets/images/fancybox/fancy_nav_left.png
new file mode 100644
index 0000000..ebaa6a4
Binary files /dev/null and b/app/assets/images/fancybox/fancy_nav_left.png differ
diff --git a/app/assets/images/fancybox/fancy_nav_right.png b/app/assets/images/fancybox/fancy_nav_right.png
new file mode 100644
index 0000000..873294e
Binary files /dev/null and b/app/assets/images/fancybox/fancy_nav_right.png differ
diff --git a/app/assets/images/fancybox/fancy_shadow_e.png b/app/assets/images/fancybox/fancy_shadow_e.png
new file mode 100644
index 0000000..2eda089
Binary files /dev/null and b/app/assets/images/fancybox/fancy_shadow_e.png differ
diff --git a/app/assets/images/fancybox/fancy_shadow_n.png b/app/assets/images/fancybox/fancy_shadow_n.png
new file mode 100644
index 0000000..69aa10e
Binary files /dev/null and b/app/assets/images/fancybox/fancy_shadow_n.png differ
diff --git a/app/assets/images/fancybox/fancy_shadow_ne.png b/app/assets/images/fancybox/fancy_shadow_ne.png
new file mode 100644
index 0000000..79f6980
Binary files /dev/null and b/app/assets/images/fancybox/fancy_shadow_ne.png differ
diff --git a/app/assets/images/fancybox/fancy_shadow_nw.png b/app/assets/images/fancybox/fancy_shadow_nw.png
new file mode 100644
index 0000000..7182cd9
Binary files /dev/null and b/app/assets/images/fancybox/fancy_shadow_nw.png differ
diff --git a/app/assets/images/fancybox/fancy_shadow_s.png b/app/assets/images/fancybox/fancy_shadow_s.png
new file mode 100644
index 0000000..d8858bf
Binary files /dev/null and b/app/assets/images/fancybox/fancy_shadow_s.png differ
diff --git a/app/assets/images/fancybox/fancy_shadow_se.png b/app/assets/images/fancybox/fancy_shadow_se.png
new file mode 100644
index 0000000..541e3ff
Binary files /dev/null and b/app/assets/images/fancybox/fancy_shadow_se.png differ
diff --git a/app/assets/images/fancybox/fancy_shadow_sw.png b/app/assets/images/fancybox/fancy_shadow_sw.png
new file mode 100644
index 0000000..b451689
Binary files /dev/null and b/app/assets/images/fancybox/fancy_shadow_sw.png differ
diff --git a/app/assets/images/fancybox/fancy_shadow_w.png b/app/assets/images/fancybox/fancy_shadow_w.png
new file mode 100644
index 0000000..8a4e4a8
Binary files /dev/null and b/app/assets/images/fancybox/fancy_shadow_w.png differ
diff --git a/app/assets/images/fancybox/fancy_title_left.png b/app/assets/images/fancybox/fancy_title_left.png
new file mode 100644
index 0000000..6049223
Binary files /dev/null and b/app/assets/images/fancybox/fancy_title_left.png differ
diff --git a/app/assets/images/fancybox/fancy_title_main.png b/app/assets/images/fancybox/fancy_title_main.png
new file mode 100644
index 0000000..8044271
Binary files /dev/null and b/app/assets/images/fancybox/fancy_title_main.png differ
diff --git a/app/assets/images/fancybox/fancy_title_over.png b/app/assets/images/fancybox/fancy_title_over.png
new file mode 100644
index 0000000..d9f458f
Binary files /dev/null and b/app/assets/images/fancybox/fancy_title_over.png differ
diff --git a/app/assets/images/fancybox/fancy_title_right.png b/app/assets/images/fancybox/fancy_title_right.png
new file mode 100644
index 0000000..e36d9db
Binary files /dev/null and b/app/assets/images/fancybox/fancy_title_right.png differ
diff --git a/app/assets/images/fancybox/fancybox-x.png b/app/assets/images/fancybox/fancybox-x.png
new file mode 100644
index 0000000..c2130f8
Binary files /dev/null and b/app/assets/images/fancybox/fancybox-x.png differ
diff --git a/app/assets/images/fancybox/fancybox-y.png b/app/assets/images/fancybox/fancybox-y.png
new file mode 100644
index 0000000..7ef399b
Binary files /dev/null and b/app/assets/images/fancybox/fancybox-y.png differ
diff --git a/app/assets/images/fancybox/fancybox.png b/app/assets/images/fancybox/fancybox.png
new file mode 100644
index 0000000..65e14f6
Binary files /dev/null and b/app/assets/images/fancybox/fancybox.png differ
diff --git a/app/assets/images/fff.gif b/app/assets/images/fff.gif
new file mode 100644
index 0000000..81240ae
Binary files /dev/null and b/app/assets/images/fff.gif differ
diff --git a/app/assets/images/field-bg.png b/app/assets/images/field-bg.png
new file mode 100644
index 0000000..12acff2
Binary files /dev/null and b/app/assets/images/field-bg.png differ
diff --git a/app/assets/images/forum-activity-bg-onecol.png b/app/assets/images/forum-activity-bg-onecol.png
new file mode 100644
index 0000000..2973d35
Binary files /dev/null and b/app/assets/images/forum-activity-bg-onecol.png differ
diff --git a/app/assets/images/forum-activity-bg.png b/app/assets/images/forum-activity-bg.png
new file mode 100644
index 0000000..b6e7926
Binary files /dev/null and b/app/assets/images/forum-activity-bg.png differ
diff --git a/app/assets/images/forum-activity-icon.png b/app/assets/images/forum-activity-icon.png
new file mode 100644
index 0000000..acadece
Binary files /dev/null and b/app/assets/images/forum-activity-icon.png differ
diff --git a/app/assets/images/gallery-image-activity-border-big-onecol.png b/app/assets/images/gallery-image-activity-border-big-onecol.png
new file mode 100644
index 0000000..56692b8
Binary files /dev/null and b/app/assets/images/gallery-image-activity-border-big-onecol.png differ
diff --git a/app/assets/images/gallery-image-activity-border-big.png b/app/assets/images/gallery-image-activity-border-big.png
new file mode 100644
index 0000000..358302c
Binary files /dev/null and b/app/assets/images/gallery-image-activity-border-big.png differ
diff --git a/app/assets/images/gallery-image-activity-border-onecol.png b/app/assets/images/gallery-image-activity-border-onecol.png
new file mode 100644
index 0000000..113d269
Binary files /dev/null and b/app/assets/images/gallery-image-activity-border-onecol.png differ
diff --git a/app/assets/images/gallery-image-activity-border.png b/app/assets/images/gallery-image-activity-border.png
new file mode 100644
index 0000000..5662e5d
Binary files /dev/null and b/app/assets/images/gallery-image-activity-border.png differ
diff --git a/app/assets/images/grip-clue.png b/app/assets/images/grip-clue.png
new file mode 100644
index 0000000..05daab5
Binary files /dev/null and b/app/assets/images/grip-clue.png differ
diff --git a/app/assets/images/hachure.png b/app/assets/images/hachure.png
new file mode 100644
index 0000000..176275e
Binary files /dev/null and b/app/assets/images/hachure.png differ
diff --git a/app/assets/images/help-avatar.gif b/app/assets/images/help-avatar.gif
new file mode 100644
index 0000000..32712f7
Binary files /dev/null and b/app/assets/images/help-avatar.gif differ
diff --git a/app/assets/images/icon_filter_exclude.png b/app/assets/images/icon_filter_exclude.png
new file mode 100644
index 0000000..e5a39da
Binary files /dev/null and b/app/assets/images/icon_filter_exclude.png differ
diff --git a/app/assets/images/icon_more_options.png b/app/assets/images/icon_more_options.png
new file mode 100644
index 0000000..742f0a4
Binary files /dev/null and b/app/assets/images/icon_more_options.png differ
diff --git a/app/assets/images/icons-app/alert.png b/app/assets/images/icons-app/alert.png
new file mode 120000
index 0000000..a540276
--- /dev/null
+++ b/app/assets/images/icons-app/alert.png
@@ -0,0 +1 @@
+emblem-important.png
\ No newline at end of file
diff --git a/app/assets/images/icons-app/article-minor.png b/app/assets/images/icons-app/article-minor.png
new file mode 100644
index 0000000..04f2680
Binary files /dev/null and b/app/assets/images/icons-app/article-minor.png differ
diff --git a/app/assets/images/icons-app/article-portrait.png b/app/assets/images/icons-app/article-portrait.png
new file mode 100644
index 0000000..339c3ca
Binary files /dev/null and b/app/assets/images/icons-app/article-portrait.png differ
diff --git a/app/assets/images/icons-app/article-thumb.png b/app/assets/images/icons-app/article-thumb.png
new file mode 100644
index 0000000..0580ccb
Binary files /dev/null and b/app/assets/images/icons-app/article-thumb.png differ
diff --git a/app/assets/images/icons-app/chat-22x22.png b/app/assets/images/icons-app/chat-22x22.png
new file mode 120000
index 0000000..dcd54db
--- /dev/null
+++ b/app/assets/images/icons-app/chat-22x22.png
@@ -0,0 +1 @@
+gnome-irc-22x22.png
\ No newline at end of file
diff --git a/app/assets/images/icons-app/community-big.png b/app/assets/images/icons-app/community-big.png
new file mode 100644
index 0000000..31cbd3f
Binary files /dev/null and b/app/assets/images/icons-app/community-big.png differ
diff --git a/app/assets/images/icons-app/community-icon.png b/app/assets/images/icons-app/community-icon.png
new file mode 100644
index 0000000..67137bf
Binary files /dev/null and b/app/assets/images/icons-app/community-icon.png differ
diff --git a/app/assets/images/icons-app/community-minor.png b/app/assets/images/icons-app/community-minor.png
new file mode 100644
index 0000000..b591795
Binary files /dev/null and b/app/assets/images/icons-app/community-minor.png differ
diff --git a/app/assets/images/icons-app/community-portrait.png b/app/assets/images/icons-app/community-portrait.png
new file mode 100644
index 0000000..5f5e7d2
Binary files /dev/null and b/app/assets/images/icons-app/community-portrait.png differ
diff --git a/app/assets/images/icons-app/community-thumb.png b/app/assets/images/icons-app/community-thumb.png
new file mode 100644
index 0000000..f952fba
Binary files /dev/null and b/app/assets/images/icons-app/community-thumb.png differ
diff --git a/app/assets/images/icons-app/design-editor.png b/app/assets/images/icons-app/design-editor.png
new file mode 100644
index 0000000..3cec8f4
Binary files /dev/null and b/app/assets/images/icons-app/design-editor.png differ
diff --git a/app/assets/images/icons-app/emblem-important.png b/app/assets/images/icons-app/emblem-important.png
new file mode 100644
index 0000000..6ee4565
Binary files /dev/null and b/app/assets/images/icons-app/emblem-important.png differ
diff --git a/app/assets/images/icons-app/enterprise-big.png b/app/assets/images/icons-app/enterprise-big.png
new file mode 100644
index 0000000..551bdb1
Binary files /dev/null and b/app/assets/images/icons-app/enterprise-big.png differ
diff --git a/app/assets/images/icons-app/enterprise-icon.png b/app/assets/images/icons-app/enterprise-icon.png
new file mode 100644
index 0000000..aed1b99
Binary files /dev/null and b/app/assets/images/icons-app/enterprise-icon.png differ
diff --git a/app/assets/images/icons-app/enterprise-minor.png b/app/assets/images/icons-app/enterprise-minor.png
new file mode 100644
index 0000000..1f40c91
Binary files /dev/null and b/app/assets/images/icons-app/enterprise-minor.png differ
diff --git a/app/assets/images/icons-app/enterprise-portrait.png b/app/assets/images/icons-app/enterprise-portrait.png
new file mode 100644
index 0000000..75c9803
Binary files /dev/null and b/app/assets/images/icons-app/enterprise-portrait.png differ
diff --git a/app/assets/images/icons-app/enterprise-registration.png b/app/assets/images/icons-app/enterprise-registration.png
new file mode 120000
index 0000000..9850e17
--- /dev/null
+++ b/app/assets/images/icons-app/enterprise-registration.png
@@ -0,0 +1 @@
+gnome-settings-theme.png
\ No newline at end of file
diff --git a/app/assets/images/icons-app/enterprise-thumb.png b/app/assets/images/icons-app/enterprise-thumb.png
new file mode 100644
index 0000000..ba3a6f1
Binary files /dev/null and b/app/assets/images/icons-app/enterprise-thumb.png differ
diff --git a/app/assets/images/icons-app/gnome-irc-22x22.png b/app/assets/images/icons-app/gnome-irc-22x22.png
new file mode 100644
index 0000000..3624f0e
Binary files /dev/null and b/app/assets/images/icons-app/gnome-irc-22x22.png differ
diff --git a/app/assets/images/icons-app/gnome-irc.png b/app/assets/images/icons-app/gnome-irc.png
new file mode 100644
index 0000000..f036cf5
Binary files /dev/null and b/app/assets/images/icons-app/gnome-irc.png differ
diff --git a/app/assets/images/icons-app/gnome-settings-theme.png b/app/assets/images/icons-app/gnome-settings-theme.png
new file mode 100644
index 0000000..9f4d59b
Binary files /dev/null and b/app/assets/images/icons-app/gnome-settings-theme.png differ
diff --git a/app/assets/images/icons-app/gtk-folder.png b/app/assets/images/icons-app/gtk-folder.png
new file mode 100644
index 0000000..51fb7da
Binary files /dev/null and b/app/assets/images/icons-app/gtk-folder.png differ
diff --git a/app/assets/images/icons-app/ico-female.png b/app/assets/images/icons-app/ico-female.png
new file mode 100644
index 0000000..963ea0b
Binary files /dev/null and b/app/assets/images/icons-app/ico-female.png differ
diff --git a/app/assets/images/icons-app/ico-male.png b/app/assets/images/icons-app/ico-male.png
new file mode 100644
index 0000000..af13933
Binary files /dev/null and b/app/assets/images/icons-app/ico-male.png differ
diff --git a/app/assets/images/icons-app/ico-sex-undef.png b/app/assets/images/icons-app/ico-sex-undef.png
new file mode 100644
index 0000000..ba8f653
Binary files /dev/null and b/app/assets/images/icons-app/ico-sex-undef.png differ
diff --git a/app/assets/images/icons-app/image-loading-big.png b/app/assets/images/icons-app/image-loading-big.png
new file mode 100644
index 0000000..b5c8fbe
Binary files /dev/null and b/app/assets/images/icons-app/image-loading-big.png differ
diff --git a/app/assets/images/icons-app/image-loading-display.png b/app/assets/images/icons-app/image-loading-display.png
new file mode 100644
index 0000000..4c7573f
Binary files /dev/null and b/app/assets/images/icons-app/image-loading-display.png differ
diff --git a/app/assets/images/icons-app/image-loading-icon.png b/app/assets/images/icons-app/image-loading-icon.png
new file mode 100644
index 0000000..08319c3
Binary files /dev/null and b/app/assets/images/icons-app/image-loading-icon.png differ
diff --git a/app/assets/images/icons-app/image-loading-minor.png b/app/assets/images/icons-app/image-loading-minor.png
new file mode 100644
index 0000000..1c9a14d
Binary files /dev/null and b/app/assets/images/icons-app/image-loading-minor.png differ
diff --git a/app/assets/images/icons-app/image-loading-portrait.png b/app/assets/images/icons-app/image-loading-portrait.png
new file mode 100644
index 0000000..479ce45
Binary files /dev/null and b/app/assets/images/icons-app/image-loading-portrait.png differ
diff --git a/app/assets/images/icons-app/image-loading-slideshow.png b/app/assets/images/icons-app/image-loading-slideshow.png
new file mode 100644
index 0000000..80f63f1
Binary files /dev/null and b/app/assets/images/icons-app/image-loading-slideshow.png differ
diff --git a/app/assets/images/icons-app/image-loading-small.png b/app/assets/images/icons-app/image-loading-small.png
new file mode 100644
index 0000000..587902e
Binary files /dev/null and b/app/assets/images/icons-app/image-loading-small.png differ
diff --git a/app/assets/images/icons-app/image-loading-thumb.png b/app/assets/images/icons-app/image-loading-thumb.png
new file mode 100644
index 0000000..0642df1
Binary files /dev/null and b/app/assets/images/icons-app/image-loading-thumb.png differ
diff --git a/app/assets/images/icons-app/person-big.png b/app/assets/images/icons-app/person-big.png
new file mode 100644
index 0000000..2b0bd4d
Binary files /dev/null and b/app/assets/images/icons-app/person-big.png differ
diff --git a/app/assets/images/icons-app/person-icon.png b/app/assets/images/icons-app/person-icon.png
new file mode 100644
index 0000000..9d48ccf
Binary files /dev/null and b/app/assets/images/icons-app/person-icon.png differ
diff --git a/app/assets/images/icons-app/person-minor.png b/app/assets/images/icons-app/person-minor.png
new file mode 100644
index 0000000..9527557
Binary files /dev/null and b/app/assets/images/icons-app/person-minor.png differ
diff --git a/app/assets/images/icons-app/person-portrait.png b/app/assets/images/icons-app/person-portrait.png
new file mode 100644
index 0000000..240502c
Binary files /dev/null and b/app/assets/images/icons-app/person-portrait.png differ
diff --git a/app/assets/images/icons-app/person-thumb.png b/app/assets/images/icons-app/person-thumb.png
new file mode 100644
index 0000000..1946f29
Binary files /dev/null and b/app/assets/images/icons-app/person-thumb.png differ
diff --git a/app/assets/images/icons-app/product-default-pic-big.png b/app/assets/images/icons-app/product-default-pic-big.png
new file mode 100644
index 0000000..b7ec210
Binary files /dev/null and b/app/assets/images/icons-app/product-default-pic-big.png differ
diff --git a/app/assets/images/icons-app/product-default-pic-minor.png b/app/assets/images/icons-app/product-default-pic-minor.png
new file mode 100644
index 0000000..03c796a
Binary files /dev/null and b/app/assets/images/icons-app/product-default-pic-minor.png differ
diff --git a/app/assets/images/icons-app/product-default-pic-portrait.png b/app/assets/images/icons-app/product-default-pic-portrait.png
new file mode 100644
index 0000000..960ccef
Binary files /dev/null and b/app/assets/images/icons-app/product-default-pic-portrait.png differ
diff --git a/app/assets/images/icons-app/product-default-pic-thumb.png b/app/assets/images/icons-app/product-default-pic-thumb.png
new file mode 100644
index 0000000..f654580
Binary files /dev/null and b/app/assets/images/icons-app/product-default-pic-thumb.png differ
diff --git a/app/assets/images/icons-app/user_icon.png b/app/assets/images/icons-app/user_icon.png
new file mode 100644
index 0000000..b1f88eb
Binary files /dev/null and b/app/assets/images/icons-app/user_icon.png differ
diff --git a/app/assets/images/icons-app/user_icon.svg b/app/assets/images/icons-app/user_icon.svg
new file mode 100644
index 0000000..684c446
--- /dev/null
+++ b/app/assets/images/icons-app/user_icon.svg
@@ -0,0 +1,529 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ image/svg+xml
+
+ People
+
+
+ Jakub Steiner
+
+
+ http://jimmac.musichall.cz
+
+
+ users
+ people
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/assets/images/icons-app/users.svg b/app/assets/images/icons-app/users.svg
new file mode 100644
index 0000000..a7ba359
--- /dev/null
+++ b/app/assets/images/icons-app/users.svg
@@ -0,0 +1,863 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ image/svg+xml
+
+ People
+
+
+ Jakub Steiner
+
+
+ http://jimmac.musichall.cz
+
+
+ users
+ people
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/assets/images/icons-bar/accessibility.png b/app/assets/images/icons-bar/accessibility.png
new file mode 100644
index 0000000..a0aa27e
Binary files /dev/null and b/app/assets/images/icons-bar/accessibility.png differ
diff --git a/app/assets/images/icons-bar/admin.png b/app/assets/images/icons-bar/admin.png
new file mode 100644
index 0000000..f362e72
Binary files /dev/null and b/app/assets/images/icons-bar/admin.png differ
diff --git a/app/assets/images/icons-bar/go-content.png b/app/assets/images/icons-bar/go-content.png
new file mode 100644
index 0000000..386b187
Binary files /dev/null and b/app/assets/images/icons-bar/go-content.png differ
diff --git a/app/assets/images/icons-bar/go-home.png b/app/assets/images/icons-bar/go-home.png
new file mode 100644
index 0000000..5734022
Binary files /dev/null and b/app/assets/images/icons-bar/go-home.png differ
diff --git a/app/assets/images/icons-bar/help.png b/app/assets/images/icons-bar/help.png
new file mode 100644
index 0000000..5c266e6
Binary files /dev/null and b/app/assets/images/icons-bar/help.png differ
diff --git a/app/assets/images/icons-bar/login.png b/app/assets/images/icons-bar/login.png
new file mode 100644
index 0000000..f2023e8
Binary files /dev/null and b/app/assets/images/icons-bar/login.png differ
diff --git a/app/assets/images/icons-bar/logout.png b/app/assets/images/icons-bar/logout.png
new file mode 100644
index 0000000..502e206
Binary files /dev/null and b/app/assets/images/icons-bar/logout.png differ
diff --git a/app/assets/images/icons-bar/logout2.png b/app/assets/images/icons-bar/logout2.png
new file mode 100644
index 0000000..473e7bc
Binary files /dev/null and b/app/assets/images/icons-bar/logout2.png differ
diff --git a/app/assets/images/icons-cat/Agropecuária_extrativismo_e_pesca.png b/app/assets/images/icons-cat/Agropecuária_extrativismo_e_pesca.png
new file mode 100644
index 0000000..9cbed3f
Binary files /dev/null and b/app/assets/images/icons-cat/Agropecuária_extrativismo_e_pesca.png differ
diff --git a/app/assets/images/icons-cat/Alimentos_e_bebidas.png b/app/assets/images/icons-cat/Alimentos_e_bebidas.png
new file mode 100644
index 0000000..5ad5810
Binary files /dev/null and b/app/assets/images/icons-cat/Alimentos_e_bebidas.png differ
diff --git a/app/assets/images/icons-cat/Artefatos_artesanais.png b/app/assets/images/icons-cat/Artefatos_artesanais.png
new file mode 100644
index 0000000..1324701
Binary files /dev/null and b/app/assets/images/icons-cat/Artefatos_artesanais.png differ
diff --git a/app/assets/images/icons-cat/Ação_comunitária.png b/app/assets/images/icons-cat/Ação_comunitária.png
new file mode 100644
index 0000000..f6ee209
Binary files /dev/null and b/app/assets/images/icons-cat/Ação_comunitária.png differ
diff --git a/app/assets/images/icons-cat/Coleta_e_reciclagem_de_materiais.png b/app/assets/images/icons-cat/Coleta_e_reciclagem_de_materiais.png
new file mode 100644
index 0000000..d13568c
Binary files /dev/null and b/app/assets/images/icons-cat/Coleta_e_reciclagem_de_materiais.png differ
diff --git a/app/assets/images/icons-cat/Crédito_e_finanças.png b/app/assets/images/icons-cat/Crédito_e_finanças.png
new file mode 100644
index 0000000..d7e10d7
Binary files /dev/null and b/app/assets/images/icons-cat/Crédito_e_finanças.png differ
diff --git a/app/assets/images/icons-cat/Fitoterápicos_e_produtos_de_limpeza_e_higiene.png b/app/assets/images/icons-cat/Fitoterápicos_e_produtos_de_limpeza_e_higiene.png
new file mode 100644
index 0000000..11a560e
Binary files /dev/null and b/app/assets/images/icons-cat/Fitoterápicos_e_produtos_de_limpeza_e_higiene.png differ
diff --git a/app/assets/images/icons-cat/Prestação_de_serviços_diversos.png b/app/assets/images/icons-cat/Prestação_de_serviços_diversos.png
new file mode 100644
index 0000000..49c3e71
Binary files /dev/null and b/app/assets/images/icons-cat/Prestação_de_serviços_diversos.png differ
diff --git a/app/assets/images/icons-cat/Produção_industrial.png b/app/assets/images/icons-cat/Produção_industrial.png
new file mode 100644
index 0000000..209775b
Binary files /dev/null and b/app/assets/images/icons-cat/Produção_industrial.png differ
diff --git a/app/assets/images/icons-cat/Produção_têxtil_e_confecção.png b/app/assets/images/icons-cat/Produção_têxtil_e_confecção.png
new file mode 100644
index 0000000..86271e9
Binary files /dev/null and b/app/assets/images/icons-cat/Produção_têxtil_e_confecção.png differ
diff --git a/app/assets/images/icons-cat/Software.png b/app/assets/images/icons-cat/Software.png
new file mode 100644
index 0000000..048da5b
Binary files /dev/null and b/app/assets/images/icons-cat/Software.png differ
diff --git a/app/assets/images/icons-cat/Software_Livre.png b/app/assets/images/icons-cat/Software_Livre.png
new file mode 100644
index 0000000..02e6608
Binary files /dev/null and b/app/assets/images/icons-cat/Software_Livre.png differ
diff --git a/app/assets/images/icons-cat/undefined.png b/app/assets/images/icons-cat/undefined.png
new file mode 100644
index 0000000..a8ac82a
Binary files /dev/null and b/app/assets/images/icons-cat/undefined.png differ
diff --git a/app/assets/images/icons-map/enterprise.png b/app/assets/images/icons-map/enterprise.png
new file mode 100644
index 0000000..b131338
Binary files /dev/null and b/app/assets/images/icons-map/enterprise.png differ
diff --git a/app/assets/images/icons-map/enterprise_shadow.png b/app/assets/images/icons-map/enterprise_shadow.png
new file mode 100644
index 0000000..521bca1
Binary files /dev/null and b/app/assets/images/icons-map/enterprise_shadow.png differ
diff --git a/app/assets/images/icons-mime/README b/app/assets/images/icons-mime/README
new file mode 100644
index 0000000..7248846
--- /dev/null
+++ b/app/assets/images/icons-mime/README
@@ -0,0 +1,93 @@
+mime icons in Noosfero
+======================
+
+Icon Source Theme License
+------------------------ -------------- -------
+gnome-mime-text-html.png dlg-neu GPLV2+
+gnome-mime-empty.png Nuovo GPLV2+
+ico-feed-on.png GPLv3
+
+The icons in this directory are taken from some GNOME theme with compatible
+license (i.e. GPLV2+ or GPLv3), section "mimetypes/". We take the SVG files and
+convert to 24x24 PNG images, so these icons are in fact derived works of those
+in the themes.
+
+Some icons are not taken from themes (e.g. ico-feed-on.png was made by Aurélio
+A. Heckert and is licensed under the GNU General
+Public License, version 3.)
+
+Structure
+=========
+
+To keep a trace back to original themes, when rasterizing the SVG files we keep
+the original filenames (replacing .svg by .png, obviously) and create symbolic
+links with names more sensible for Noosfero.
+
+Icons rasterization
+===================
+
+With rsvg, from the librsvg2-bin package (i.e. we use the same rasterization
+library as GNOME, so the icons must look like they do in GNOME).
+
+$ rsvg -w 24 -h 24 .svg .png
+
+Licensing
+=========
+
+dlg-neu icons (according to /usr/share/doc/gnome-icon-theme-dlg-neu/copyright
+on a Debian system):
+
+ Copyright Holders: Silvestre Herrera (silvestre.herrera@gmail.com)
+
+ This package is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This package is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this package; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ 02110-1301 USA
+
+Nuovo icons (according to /usr/share/doc/gnome-icon-theme-nuovo/copyright on a
+Debian system):
+
+ Copyright Holders: Silvestre Herrera
+
+ This package is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This package is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this package; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ 02110-1301 USA
+
+ico-feed-on.png:
+
+ Copyright holders: Aurélio A. Heckert
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see .
+
diff --git a/app/assets/images/icons-mime/empty.png b/app/assets/images/icons-mime/empty.png
new file mode 100644
index 0000000..9f56b72
Binary files /dev/null and b/app/assets/images/icons-mime/empty.png differ
diff --git a/app/assets/images/icons-mime/event.png b/app/assets/images/icons-mime/event.png
new file mode 120000
index 0000000..c258d1d
--- /dev/null
+++ b/app/assets/images/icons-mime/event.png
@@ -0,0 +1 @@
+../calendar_date_select/calendar.png
\ No newline at end of file
diff --git a/app/assets/images/icons-mime/folder.png b/app/assets/images/icons-mime/folder.png
new file mode 120000
index 0000000..0bd6da1
--- /dev/null
+++ b/app/assets/images/icons-mime/folder.png
@@ -0,0 +1 @@
+gnome-folder.png
\ No newline at end of file
diff --git a/app/assets/images/icons-mime/gnome-folder.png b/app/assets/images/icons-mime/gnome-folder.png
new file mode 100644
index 0000000..b624ae8
Binary files /dev/null and b/app/assets/images/icons-mime/gnome-folder.png differ
diff --git a/app/assets/images/icons-mime/gnome-mime-empty.png b/app/assets/images/icons-mime/gnome-mime-empty.png
new file mode 100644
index 0000000..2a2727e
Binary files /dev/null and b/app/assets/images/icons-mime/gnome-mime-empty.png differ
diff --git a/app/assets/images/icons-mime/gnome-mime-text-html.png b/app/assets/images/icons-mime/gnome-mime-text-html.png
new file mode 100644
index 0000000..5693e7a
Binary files /dev/null and b/app/assets/images/icons-mime/gnome-mime-text-html.png differ
diff --git a/app/assets/images/icons-mime/ico-feed-on.png b/app/assets/images/icons-mime/ico-feed-on.png
new file mode 100644
index 0000000..e6e6edd
Binary files /dev/null and b/app/assets/images/icons-mime/ico-feed-on.png differ
diff --git a/app/assets/images/icons-mime/rss-feed-16.png b/app/assets/images/icons-mime/rss-feed-16.png
new file mode 100644
index 0000000..f1b8742
Binary files /dev/null and b/app/assets/images/icons-mime/rss-feed-16.png differ
diff --git a/app/assets/images/icons-mime/rss-feed.png b/app/assets/images/icons-mime/rss-feed.png
new file mode 120000
index 0000000..e96cb3b
--- /dev/null
+++ b/app/assets/images/icons-mime/rss-feed.png
@@ -0,0 +1 @@
+ico-feed-on.png
\ No newline at end of file
diff --git a/app/assets/images/icons-mime/text-html.png b/app/assets/images/icons-mime/text-html.png
new file mode 120000
index 0000000..16cc51f
--- /dev/null
+++ b/app/assets/images/icons-mime/text-html.png
@@ -0,0 +1 @@
+gnome-mime-text-html.png
\ No newline at end of file
diff --git a/app/assets/images/icons-mime/unknown.png b/app/assets/images/icons-mime/unknown.png
new file mode 120000
index 0000000..3a18748
--- /dev/null
+++ b/app/assets/images/icons-mime/unknown.png
@@ -0,0 +1 @@
+gnome-mime-empty.png
\ No newline at end of file
diff --git a/app/assets/images/icons-task/closed-arrow-hover.png b/app/assets/images/icons-task/closed-arrow-hover.png
new file mode 100644
index 0000000..a797866
Binary files /dev/null and b/app/assets/images/icons-task/closed-arrow-hover.png differ
diff --git a/app/assets/images/icons-task/closed-arrow.png b/app/assets/images/icons-task/closed-arrow.png
new file mode 100644
index 0000000..e2a51f7
Binary files /dev/null and b/app/assets/images/icons-task/closed-arrow.png differ
diff --git a/app/assets/images/icons-task/opened-arrow-hover.png b/app/assets/images/icons-task/opened-arrow-hover.png
new file mode 100644
index 0000000..db9e2fe
Binary files /dev/null and b/app/assets/images/icons-task/opened-arrow-hover.png differ
diff --git a/app/assets/images/icons-task/opened-arrow.png b/app/assets/images/icons-task/opened-arrow.png
new file mode 100644
index 0000000..72f3edf
Binary files /dev/null and b/app/assets/images/icons-task/opened-arrow.png differ
diff --git a/app/assets/images/input-bg.gif b/app/assets/images/input-bg.gif
new file mode 100644
index 0000000..a9a3051
Binary files /dev/null and b/app/assets/images/input-bg.gif differ
diff --git a/app/assets/images/loading-dark.gif b/app/assets/images/loading-dark.gif
new file mode 100644
index 0000000..e017d5d
Binary files /dev/null and b/app/assets/images/loading-dark.gif differ
diff --git a/app/assets/images/loading-small-dark.gif b/app/assets/images/loading-small-dark.gif
new file mode 100644
index 0000000..c5fa56d
Binary files /dev/null and b/app/assets/images/loading-small-dark.gif differ
diff --git a/app/assets/images/loading-small.gif b/app/assets/images/loading-small.gif
new file mode 100644
index 0000000..085ccae
Binary files /dev/null and b/app/assets/images/loading-small.gif differ
diff --git a/app/assets/images/loading.gif b/app/assets/images/loading.gif
new file mode 100644
index 0000000..5bb90fd
Binary files /dev/null and b/app/assets/images/loading.gif differ
diff --git a/app/assets/images/login_checking.png b/app/assets/images/login_checking.png
new file mode 100644
index 0000000..5dd52f1
Binary files /dev/null and b/app/assets/images/login_checking.png differ
diff --git a/app/assets/images/logo-anhetegua-200x50.png b/app/assets/images/logo-anhetegua-200x50.png
new file mode 100644
index 0000000..fb7ca53
Binary files /dev/null and b/app/assets/images/logo-anhetegua-200x50.png differ
diff --git a/app/assets/images/logo-anhetegua.png b/app/assets/images/logo-anhetegua.png
new file mode 100644
index 0000000..11ba6b8
Binary files /dev/null and b/app/assets/images/logo-anhetegua.png differ
diff --git a/app/assets/images/noosfero-network.png b/app/assets/images/noosfero-network.png
new file mode 100644
index 0000000..355d576
Binary files /dev/null and b/app/assets/images/noosfero-network.png differ
diff --git a/app/assets/images/noosfero-network.svg b/app/assets/images/noosfero-network.svg
new file mode 100755
index 0000000..319c97e
--- /dev/null
+++ b/app/assets/images/noosfero-network.svg
@@ -0,0 +1,4618 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ image/svg+xml
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/assets/images/orange-balloon.png b/app/assets/images/orange-balloon.png
new file mode 100644
index 0000000..6a5540c
Binary files /dev/null and b/app/assets/images/orange-balloon.png differ
diff --git a/app/assets/images/orange-bg.png b/app/assets/images/orange-bg.png
new file mode 100644
index 0000000..e3b1979
Binary files /dev/null and b/app/assets/images/orange-bg.png differ
diff --git a/app/assets/images/passwords_match.png b/app/assets/images/passwords_match.png
new file mode 100644
index 0000000..a837436
Binary files /dev/null and b/app/assets/images/passwords_match.png differ
diff --git a/app/assets/images/passwords_nomatch.png b/app/assets/images/passwords_nomatch.png
new file mode 100644
index 0000000..1cc786b
Binary files /dev/null and b/app/assets/images/passwords_nomatch.png differ
diff --git a/app/assets/images/rails.png b/app/assets/images/rails.png
new file mode 100644
index 0000000..d5edc04
Binary files /dev/null and b/app/assets/images/rails.png differ
diff --git a/app/assets/images/scrap-bg-gray.png b/app/assets/images/scrap-bg-gray.png
new file mode 100644
index 0000000..b10351f
Binary files /dev/null and b/app/assets/images/scrap-bg-gray.png differ
diff --git a/app/assets/images/scrap-bg.png b/app/assets/images/scrap-bg.png
new file mode 100644
index 0000000..c2637ab
Binary files /dev/null and b/app/assets/images/scrap-bg.png differ
diff --git a/app/assets/images/solidarity-economy.png b/app/assets/images/solidarity-economy.png
new file mode 100644
index 0000000..b29f07a
Binary files /dev/null and b/app/assets/images/solidarity-economy.png differ
diff --git a/app/assets/images/top-arrow.png b/app/assets/images/top-arrow.png
new file mode 100644
index 0000000..9b2b158
Binary files /dev/null and b/app/assets/images/top-arrow.png differ
diff --git a/app/assets/images/white-pixel.gif b/app/assets/images/white-pixel.gif
new file mode 100644
index 0000000..08fc23e
Binary files /dev/null and b/app/assets/images/white-pixel.gif differ
diff --git a/app/assets/images/zoom-dark.png b/app/assets/images/zoom-dark.png
new file mode 100644
index 0000000..f1e89b3
Binary files /dev/null and b/app/assets/images/zoom-dark.png differ
diff --git a/app/assets/images/zoom.png b/app/assets/images/zoom.png
new file mode 100644
index 0000000..750e6bd
Binary files /dev/null and b/app/assets/images/zoom.png differ
diff --git a/app/assets/javascripts/add-and-join.js b/app/assets/javascripts/add-and-join.js
new file mode 100644
index 0000000..9055491
--- /dev/null
+++ b/app/assets/javascripts/add-and-join.js
@@ -0,0 +1,103 @@
+jQuery(function($) {
+
+ $(".add-friend").live('click', function(){
+ clicked = $(this)
+ url = clicked.attr("href");
+ loading_for_button(this);
+ $.post(url, function(data){
+ clicked.fadeOut();
+ display_notice(data);
+ });
+ return false;
+ })
+
+ $(".join-community").live('click', function(){
+ clicked = $(this)
+ url = clicked.attr("href");
+ loading_for_button(this);
+ $.post(url, function(data){
+ clicked.fadeOut(function(){
+ clicked.css("display","none");
+ clicked.parent().parent().find(".leave-community").fadeIn();
+ clicked.parent().parent().find(".leave-community").css("display", "");
+ });
+ clicked.css("cursor","");
+ $(".small-loading").remove();
+ display_notice(data.message);
+ }, "json");
+ return false;
+ })
+
+ $(".leave-community").live('click', function(){
+ clicked = $(this)
+ url = clicked.attr("href");
+ loading_for_button(this);
+ $.post(url, function(data){
+ if(data.redirect_to){
+ document.location.href = data.redirect_to;
+ }
+ else if(data.reload){
+ document.location.reload(true);
+ }
+ else{
+ clicked.fadeOut(function(){
+ clicked.css("display","none");
+ clicked.parent().parent().find(".join-community").fadeIn();
+ clicked.parent().parent().find(".join-community").css("display", "");
+ });
+ clicked.css("cursor","");
+ $(".small-loading").remove();
+
+ display_notice(data.message);
+ }
+ }, "json");
+ return false;
+ })
+
+ $(".person-trigger").click(function(){
+ clicked = $(this);
+ url = clicked.attr("url");
+ $.get(url, function(data){
+ if(data == "true"){
+ clicked.parent().find(".add-friend").fadeOut(function(){
+ clicked.parent().find(".send-an-email").fadeIn();
+ })
+ }
+ else if(data == "false"){
+ clicked.parent().find(".send-an-email").fadeOut(function(){
+ clicked.parent().find(".add-friend").fadeIn();
+ });
+ }
+ })
+ })
+
+ $(".community-trigger").click(function(){
+ clicked = $(this);
+ url = clicked.attr("url");
+ $.get(url, function(data){
+ if(data == "true"){
+ clicked.parent().find(".join-community").fadeOut(function(){
+ clicked.parent().find(".leave-community").fadeIn();
+ clicked.parent().find(".send-an-email").fadeIn();
+ });
+ }
+ else if(data == "false"){
+ clicked.parent().find(".send-an-email").fadeOut();
+ clicked.parent().find(".leave-community").fadeOut(function(){
+ clicked.parent().find(".join-community").fadeIn();
+ });
+ }
+ })
+ })
+
+ $(".enterprise-trigger").click(function(){
+ clicked = $(this);
+ url = clicked.attr("url");
+ $.get(url, function(data){
+ if(data == "true")
+ clicked.parent().find(".send-an-email").fadeIn();
+ else if(data == "false")
+ clicked.parent().find(".send-an-email").fadeOut();
+ })
+ })
+});
diff --git a/app/assets/javascripts/application.js b/app/assets/javascripts/application.js
new file mode 100644
index 0000000..4e773ca
--- /dev/null
+++ b/app/assets/javascripts/application.js
@@ -0,0 +1,16 @@
+// 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
+//= require miscellaneous
+//= require_tree .
\ No newline at end of file
diff --git a/app/assets/javascripts/article.js b/app/assets/javascripts/article.js
new file mode 100644
index 0000000..c26b4e5
--- /dev/null
+++ b/app/assets/javascripts/article.js
@@ -0,0 +1,175 @@
+jQuery(function($) {
+ $(".lead-button").live('click', function(){
+ article_id = this.getAttribute("article_id");
+ $(this).toggleClass('icon-add').toggleClass('icon-remove');
+ $(article_id).slideToggle();
+ return false;
+ })
+ $("#body-button").click(function(){
+ $(this).toggleClass('icon-add').toggleClass('icon-remove');
+ $('#article-body-field').slideToggle();
+ return false;
+ })
+
+ $("#textile-quickref-show").click(function(){
+ $('#textile-quickref-hide').show();
+ $(this).hide();
+ $('#textile-quickref').slideToggle();
+ return false;
+ })
+ $("#textile-quickref-hide").click(function(){
+ $('#textile-quickref-show').show();
+ $(this).hide();
+ $('#textile-quickref').slideToggle();
+ return false;
+ })
+
+ var button_add = $('.text-editor-sidebar span.button-add').attr('data-value');
+ var button_zoom = $('.text-editor-sidebar span.button-zoom').attr('data-value');
+ var button_close = $('.text-editor-sidebar span.button-close').attr('data-value');
+
+ function add_to_text_button(extra_class) {
+ if (!extra_class) { extra_class = '' }
+ return '';
+ }
+
+ function close_button(extra_class) {
+ if (!extra_class) { extra_class = '' }
+ return '';
+ }
+
+ function zoom_button() {
+ return '' + button_zoom + ' ';
+ }
+
+ function list_items(items, selector, auto_add) {
+ var html_for_items = '';
+
+ var images = [];
+ var files = [];
+ var errors = [];
+
+ $.each(items, function(i, item) {
+ if (item.error) {
+ errors.push(item);
+ return;
+ }
+ if (item.content_type && item.content_type.match(/^image/)) {
+ images.push(item);
+ } else {
+ files.push(item);
+ }
+ });
+
+ $.each(images, function(i, item) {
+ html_for_items += '' + add_to_text_button() + zoom_button() + '
';
+ });
+
+ $.each(files, function(i, item) {
+ html_for_items += ' ' + add_to_text_button() + '
';
+ });
+
+ $.each(errors, function(i, item) {
+ html_for_items += '' + item.error + '
';
+ });
+
+ $(selector).html(html_for_items);
+
+ if (auto_add) {
+ $(selector).find('a.add-to-text').click();
+ }
+ }
+
+ function zoom_dialog_html(img) {
+ // FIXME organize this code better
+ return '' + '
' + add_to_text_button('with-text') + ' ' + close_button('with-text') + '
'
+ }
+
+ $('a.add-to-text').live('click', function() {
+ var $item = $(this).closest('.item');
+ var html_selector = $item.attr('data-item');
+ insert_item_in_text($item.find(html_selector));
+ $.colorbox.close();
+ return false;
+ });
+ $('a.zoom').live('click', function() {
+ var $item = $(this).closest('.item');
+ var html_selector = $item.attr('data-item');
+ var img = $item.find(html_selector).find('img').attr('src');
+ $.colorbox({
+ html: zoom_dialog_html(img),
+ scrolling: false
+ });
+ return false;
+ });
+ $('a.close').live('click', function() {
+ $.colorbox.close();
+ return false;
+ })
+
+ // FIXME the user may also want to add the item to the abstract textarea!
+ var text_field = 'article_body';
+
+ function insert_item_in_text($wrapper) {
+ if (window.tinymce) {
+
+ var html = $wrapper.html();
+
+ var editor = tinymce.get(text_field);
+
+ editor.setContent(editor.getContent() + html);
+
+ } else {
+ // simple text editor
+ var $text_element = $('#' + text_field);
+ var text = $text_element.val();
+ var $item = $wrapper.children().first();
+ if ($item.attr('src')) {
+ $text_element.val(text + '!' + $item.attr('src') + "!\n");
+ }
+ if ($item.attr('href')) {
+ $text_element.val(text + $item.attr('href'));
+ }
+ }
+ }
+
+ $('#media-search-button').click(function() {
+ var query = $('#media-search-query').val();
+ var $button = $(this);
+ $('#media-search-box .header').toggleClass('icon-loading');
+ $.get($(this).parent().attr('action'), { 'q': query }, function(data) {
+ list_items(data, '#media-search-results .items', false);
+ if (data.length && data.length > 0) {
+ $('#media-search-results').slideDown();
+ }
+ $('#media-search-box .header').toggleClass('icon-loading');
+ });
+ return false;
+ });
+
+ $('#media-upload-form form').ajaxForm({
+ resetForm: true,
+ beforeSubmit:
+ function() {
+ $('#media-upload-form').slideUp();
+ $('#media-upload-box .header').toggleClass('icon-loading');
+ },
+ success:
+ function(text) {
+ text = text.replace('', '').replace(' ', ''); // old firefox
+ var data = $.parseJSON(text);
+ list_items(data, '#media-upload-results .items', true);
+ if (data.length && data.length > 0) {
+ $('#media-upload-results').slideDown();
+ }
+ $('#media-upload-box .header').toggleClass('icon-loading');
+ }
+ });
+
+ $('#media-upload-more-files').click(function() {
+ $('#media-upload-results').hide();
+ $('#media-upload-form').show();
+ return false;
+ });
+
+});
diff --git a/app/assets/javascripts/ba-linkify.js b/app/assets/javascripts/ba-linkify.js
new file mode 100644
index 0000000..81dae5f
--- /dev/null
+++ b/app/assets/javascripts/ba-linkify.js
@@ -0,0 +1,214 @@
+/*!
+ * JavaScript Linkify - v0.3 - 6/27/2009
+ * http://benalman.com/projects/javascript-linkify/
+ *
+ * Copyright (c) 2009 "Cowboy" Ben Alman
+ * Dual licensed under the MIT and GPL licenses.
+ * http://benalman.com/about/license/
+ *
+ * Some regexps adapted from http://userscripts.org/scripts/review/7122
+ */
+
+// Script: JavaScript Linkify: Process links in text!
+//
+// *Version: 0.3, Last updated: 6/27/2009*
+//
+// Project Home - http://benalman.com/projects/javascript-linkify/
+// GitHub - http://github.com/cowboy/javascript-linkify/
+// Source - http://github.com/cowboy/javascript-linkify/raw/master/ba-linkify.js
+// (Minified) - http://github.com/cowboy/javascript-linkify/raw/master/ba-linkify.min.js (2.8kb)
+//
+// About: License
+//
+// Copyright (c) 2009 "Cowboy" Ben Alman,
+// Dual licensed under the MIT and GPL licenses.
+// http://benalman.com/about/license/
+//
+// About: Examples
+//
+// This working example, complete with fully commented code, illustrates one way
+// in which this code can be used.
+//
+// Linkify - http://benalman.com/code/projects/javascript-linkify/examples/linkify/
+//
+// About: Support and Testing
+//
+// Information about what browsers this code has been tested in.
+//
+// Browsers Tested - Internet Explorer 6-8, Firefox 2-3.7, Safari 3-4, Chrome, Opera 9.6-10.
+//
+// About: Release History
+//
+// 0.3 - (6/27/2009) Initial release
+
+// Function: linkify
+//
+// Turn text into linkified html.
+//
+// Usage:
+//
+// > var html = linkify( text [, options ] );
+//
+// Arguments:
+//
+// text - (String) Non-HTML text containing links to be parsed.
+// options - (Object) An optional object containing linkify parse options.
+//
+// Options:
+//
+// callback (Function) - If specified, this will be called once for each link-
+// or non-link-chunk with two arguments, text and href. If the chunk is
+// non-link, href will be omitted. If unspecified, the default linkification
+// callback is used.
+// punct_regexp (RegExp) - A RegExp that will be used to trim trailing
+// punctuation from links, instead of the default. If set to null, trailing
+// punctuation will not be trimmed.
+//
+// Returns:
+//
+// (String) An HTML string containing links.
+
+window.linkify = (function(){
+ var
+ SCHEME = "[a-z\\d.-]+://",
+ IPV4 = "(?:(?:[0-9]|[1-9]\\d|1\\d{2}|2[0-4]\\d|25[0-5])\\.){3}(?:[0-9]|[1-9]\\d|1\\d{2}|2[0-4]\\d|25[0-5])",
+ HOSTNAME = "(?:(?:[^\\s!@#$%^&*()_=+[\\]{}\\\\|;:'\",.<>/?]+)\\.)+",
+ TLD = "(?:ac|ad|aero|ae|af|ag|ai|al|am|an|ao|aq|arpa|ar|asia|as|at|au|aw|ax|az|ba|bb|bd|be|bf|bg|bh|biz|bi|bj|bm|bn|bo|br|bs|bt|bv|bw|by|bz|cat|ca|cc|cd|cf|cg|ch|ci|ck|cl|cm|cn|coop|com|co|cr|cu|cv|cx|cy|cz|de|dj|dk|dm|do|dz|ec|edu|ee|eg|er|es|et|eu|fi|fj|fk|fm|fo|fr|ga|gb|gd|ge|gf|gg|gh|gi|gl|gm|gn|gov|gp|gq|gr|gs|gt|gu|gw|gy|hk|hm|hn|hr|ht|hu|id|ie|il|im|info|int|in|io|iq|ir|is|it|je|jm|jobs|jo|jp|ke|kg|kh|ki|km|kn|kp|kr|kw|ky|kz|la|lb|lc|li|lk|lr|ls|lt|lu|lv|ly|ma|mc|md|me|mg|mh|mil|mk|ml|mm|mn|mobi|mo|mp|mq|mr|ms|mt|museum|mu|mv|mw|mx|my|mz|name|na|nc|net|ne|nf|ng|ni|nl|no|np|nr|nu|nz|om|org|pa|pe|pf|pg|ph|pk|pl|pm|pn|pro|pr|ps|pt|pw|py|qa|re|ro|rs|ru|rw|sa|sb|sc|sd|se|sg|sh|si|sj|sk|sl|sm|sn|so|sr|st|su|sv|sy|sz|tc|td|tel|tf|tg|th|tj|tk|tl|tm|tn|to|tp|travel|tr|tt|tv|tw|tz|ua|ug|uk|um|us|uy|uz|va|vc|ve|vg|vi|vn|vu|wf|ws|xn--0zwm56d|xn--11b5bs3a9aj6g|xn--80akhbyknj4f|xn--9t4b11yi5a|xn--deba0ad|xn--g6w251d|xn--hgbk6aj7f53bba|xn--hlcj6aya9esc7a|xn--jxalpdlp|xn--kgbechtv|xn--zckzah|ye|yt|yu|za|zm|zw)",
+ HOST_OR_IP = "(?:" + HOSTNAME + TLD + "|" + IPV4 + ")",
+ PATH = "(?:[;/][^#?<>\\s]*)?",
+ QUERY_FRAG = "(?:\\?[^#<>\\s]*)?(?:#[^<>\\s]*)?",
+ URI1 = "\\b" + SCHEME + "[^<>\\s]+",
+ URI2 = "\\b" + HOST_OR_IP + PATH + QUERY_FRAG + "(?!\\w)",
+
+ MAILTO = "mailto:",
+ EMAIL = "(?:" + MAILTO + ")?[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@" + HOST_OR_IP + QUERY_FRAG + "(?!\\w)",
+
+ URI_RE = new RegExp( "(?:" + URI1 + "|" + URI2 + "|" + EMAIL + ")", "ig" ),
+ SCHEME_RE = new RegExp( "^" + SCHEME, "i" ),
+
+ quotes = {
+ "'": "`",
+ '>': '<',
+ ')': '(',
+ ']': '[',
+ '}': '{',
+ '»': '«',
+ '›': '‹'
+ },
+
+ default_options = {
+ callback: function( text, href ) {
+ return href ? '' + text + ' ' : text;
+ },
+ punct_regexp: /(?:[!?.,:;'"]|(?:&|&)(?:lt|gt|quot|apos|raquo|laquo|rsaquo|lsaquo);)$/
+ };
+
+ return function( txt, options ) {
+ options = options || {};
+
+ // Temp variables.
+ var arr,
+ i,
+ link,
+ href,
+
+ // Output HTML.
+ html = '',
+
+ // Store text / link parts, in order, for re-combination.
+ parts = [],
+
+ // Used for keeping track of indices in the text.
+ idx_prev,
+ idx_last,
+ idx,
+ link_last,
+
+ // Used for trimming trailing punctuation and quotes from links.
+ matches_begin,
+ matches_end,
+ quote_begin,
+ quote_end;
+
+ // Initialize options.
+ for ( i in default_options ) {
+ if ( options[ i ] === undefined ) {
+ options[ i ] = default_options[ i ];
+ }
+ }
+
+ // Find links.
+ while ( arr = URI_RE.exec( txt ) ) {
+
+ link = arr[0];
+ idx_last = URI_RE.lastIndex;
+ idx = idx_last - link.length;
+
+ // Not a link if preceded by certain characters.
+ if ( /[\/:]/.test( txt.charAt( idx - 1 ) ) ) {
+ continue;
+ }
+
+ // Trim trailing punctuation.
+ do {
+ // If no changes are made, we don't want to loop forever!
+ link_last = link;
+
+ quote_end = link.substr( -1 )
+ quote_begin = quotes[ quote_end ];
+
+ // Ending quote character?
+ if ( quote_begin ) {
+ matches_begin = link.match( new RegExp( '\\' + quote_begin + '(?!$)', 'g' ) );
+ matches_end = link.match( new RegExp( '\\' + quote_end, 'g' ) );
+
+ // If quotes are unbalanced, remove trailing quote character.
+ if ( ( matches_begin ? matches_begin.length : 0 ) < ( matches_end ? matches_end.length : 0 ) ) {
+ link = link.substr( 0, link.length - 1 );
+ idx_last--;
+ }
+ }
+
+ // Ending non-quote punctuation character?
+ if ( options.punct_regexp ) {
+ link = link.replace( options.punct_regexp, function(a){
+ idx_last -= a.length;
+ return '';
+ });
+ }
+ } while ( link.length && link !== link_last );
+
+ href = link;
+
+ // Add appropriate protocol to naked links.
+ if ( !SCHEME_RE.test( href ) ) {
+ href = ( href.indexOf( '@' ) !== -1 ? ( !href.indexOf( MAILTO ) ? '' : MAILTO )
+ : !href.indexOf( 'irc.' ) ? 'irc://'
+ : !href.indexOf( 'ftp.' ) ? 'ftp://'
+ : 'http://' )
+ + href;
+ }
+
+ // Push preceding non-link text onto the array.
+ if ( idx_prev != idx ) {
+ parts.push([ txt.slice( idx_prev, idx ) ]);
+ idx_prev = idx_last;
+ }
+
+ // Push massaged link onto the array
+ parts.push([ link, href ]);
+ };
+
+ // Push remaining non-link text onto the array.
+ parts.push([ txt.substr( idx_prev ) ]);
+
+ // Process the array items.
+ for ( i = 0; i < parts.length; i++ ) {
+ html += options.callback.apply( window, parts[i] );
+ }
+
+ // In case of catastrophic failure, return the original text;
+ return html || txt;
+ };
+
+})();
\ No newline at end of file
diff --git a/app/assets/javascripts/catalog.js b/app/assets/javascripts/catalog.js
new file mode 100644
index 0000000..9e9341c
--- /dev/null
+++ b/app/assets/javascripts/catalog.js
@@ -0,0 +1,47 @@
+(function($) {
+
+$('#product-list .product .expand-box').live('click', function () {
+ $('.expand-box').each(function(index, element){ this.clicked = false; toggle_expandbox(this); });
+ this.clicked = !this.clicked;
+ toggle_expandbox(this);
+ $.each($(this).siblings('.expand-box'), function(index, value) { value.clicked = false; toggle_expandbox(value); });
+
+ return false;
+});
+
+$(document).live('click', function() {
+ $.each($('#product-list .product .expand-box'), function(index, value) { value.clicked = false; toggle_expandbox(value); });
+});
+
+$(document).click(function (event) {
+ if ($(event.target).parents('.expand-box').length == 0) {
+ $('.expand-box').each(function(index, element){
+ $(element).removeClass('open');
+ $(element).children('div').toggle(false);
+ });
+ }
+});
+
+var rows = {};
+$('#product-list .product').each(function (index, element) {
+ obj = rows[$(element).offset().top] || {};
+
+ obj.heights = obj.heights || [];
+ obj.elements = obj.elements || [];
+ obj.heights.push($(element).height());
+ obj.elements.push(element);
+
+ rows[$(element).offset().top] = obj;
+});
+
+$.each(rows, function(top, obj) {
+ maxWidth = Array.max(obj.heights);
+ $(obj.elements).height(maxWidth);
+});
+
+})(jQuery);
+
+function toggle_expandbox(e) {
+ jQuery(e).toggleClass('open', e.clicked);
+ jQuery(e).children('div').toggle(e.clicked).css({left: jQuery(e).position().left-180, top: jQuery(e).position().top-10});
+}
diff --git a/app/assets/javascripts/chat.js b/app/assets/javascripts/chat.js
new file mode 100644
index 0000000..35914a1
--- /dev/null
+++ b/app/assets/javascripts/chat.js
@@ -0,0 +1,641 @@
+/* XMPP/Jabber Noosfero's client
+
+ XMPP Core:
+ http://xmpp.org/rfcs/rfc3920.html
+
+ MUC support:
+ http://xmpp.org/extensions/xep-0045.html
+
+ Messages and presence:
+ http://xmpp.org/rfcs/rfc3921.html
+*/
+
+jQuery(function($) {
+ // extending the current namespaces in Strophe.NS
+ Strophe.addNamespace('MUC_USER', 'http://jabber.org/protocol/muc#user');
+ Strophe.addNamespace('MUC_OWNER', 'http://jabber.org/protocol/muc#owner');
+ Strophe.addNamespace('CHAT_STATES', 'http://jabber.org/protocol/chatstates');
+ Strophe.addNamespace('DATA_FORMS', 'jabber:x:data');
+
+ var Jabber = {
+ debug: true,
+ connection: null,
+ bosh_service: '/http-bind',
+ muc_domain: $muc_domain,
+ muc_supported: false,
+ presence_status: '',
+ update_presence_status_every: $update_presence_status_every, // time in seconds of how often update presence status to Noosfero DB
+ tab_prefix: 'conversation-', // used to compose jQuery UI tabs and anchors to select then
+ jids: {},
+ rooms: {},
+
+ templates: {
+ buddy_item: " ",
+ occupant_item: " ",
+ room_item: "%{name} ",
+ message: $balloon_template,
+ error: "%{text} ",
+ occupant_list: ""
+ },
+
+ jid_to_id: function (jid) {
+ return Strophe.getBareJidFromJid(jid).replace(/@/g, "-").replace(/\./g, "-");
+ },
+
+ jid_of: function(jid_id) {
+ return Jabber.jids[jid_id].jid;
+ },
+ name_of: function(jid_id) {
+ return Jabber.jids[jid_id].name;
+ },
+ type_of: function(jid_id) {
+ return Jabber.jids[jid_id].type;
+ },
+ unread_messages_of: function(jid_id, value) {
+ Jabber.jids[jid_id].unread_messages = (value == undefined ? Jabber.jids[jid_id].unread_messages : value);
+ return Jabber.jids[jid_id].unread_messages;
+ },
+
+ insert_or_update_user: function (list, item, jid, name, presence, template) {
+ var jid_id = Jabber.jid_to_id(jid);
+ var html = template
+ .replace('%{jid_id}', jid_id)
+ .replace(/%{presence_status}/g, presence)
+ .replace('%{name}', name);
+ if ($(item).length > 0) {
+ $(item).parent('li').replaceWith(html);
+ } else {
+ $(list).append(html);
+ }
+ Jabber.jids[jid_id] = {jid: jid, name: name, type: 'chat', presence: presence};
+ },
+ insert_or_update_contact: function (jid, name, presence) {
+ var jid_id = Jabber.jid_to_id(jid);
+ var list = $('#buddy-list .buddy-list');
+ var item = $('#' + jid_id);
+ presence = presence || ($(item).length > 0 ? $(item).parent('li').attr('class') : 'offline');
+ log('adding or updating contact ' + jid + ' as ' + presence);
+ Jabber.insert_or_update_user(list, item, jid, name, presence, Jabber.templates.buddy_item);
+ $("#chat-window .tab a[href='#"+ Jabber.tab_prefix + jid_id +"']")
+ .removeClass()
+ .addClass('icon-menu-' + presence + '-11');
+ },
+ insert_or_update_occupant: function (jid, name, presence, room_jid) {
+ log('adding or updating occupant ' + jid + ' as ' + presence);
+ var jid_id = Jabber.jid_to_id(jid);
+ var list = $('#' + Jabber.tab_prefix + Jabber.jid_to_id(room_jid) + ' .occupant-list ul');
+ var item = $(list).find('a[data-id='+ jid_id +']');
+ Jabber.insert_or_update_user(list, item, jid, name, presence, Jabber.templates.occupant_item);
+ if (Jabber.rooms[Jabber.jid_to_id(room_jid)] === undefined) {
+ Jabber.rooms[Jabber.jid_to_id(room_jid)] = {};
+ }
+ Jabber.rooms[Jabber.jid_to_id(room_jid)][name] = jid;
+ },
+
+ remove_contact: function(jid) {
+ var jid_id = Jabber.jid_to_id(jid)
+ log('Removing contact ' + jid);
+ $('#' + jid_id).parent('li').remove();
+ },
+
+ render_body_message: function(body) {
+ body = $().emoticon(body);
+ body = linkify(body, {
+ callback: function(text, href) {
+ return href ? '' + text + ' ' : text;
+ }
+ });
+ return body;
+ },
+
+ show_message: function (jid, name, body, who, identifier) {
+ if (body) {
+ body = Jabber.render_body_message(body);
+ var jid_id = Jabber.jid_to_id(jid);
+ var tab_id = '#' + Jabber.tab_prefix + jid_id;
+ if ($(tab_id).find('.message').length > 0 && $(tab_id).find('.message:last').attr('data-who') == who) {
+ $(tab_id).find('.history').find('.message:last .comment-balloon-content').append('' + body + '
');
+ }
+ else {
+ var time = new Date();
+ time = time.getHours() + ':' + checkTime(time.getMinutes());
+ var message_html = Jabber.templates.message
+ .replace('%{message}', body)
+ .replace(/%{who}/g, who)
+ .replace('%{time}', time)
+ .replace('%{name}', name)
+ .replace('%{avatar_url}', '/chat/avatar/' + identifier);
+ $('#' + Jabber.tab_prefix + jid_id).find('.history').append(message_html);
+ }
+ $(tab_id).find('.history').scrollTo({top:'100%', left:'0%'});
+ if (who != "self") {
+ if ($(tab_id).find('.history:visible').length == 0) {
+ count_unread_messages(jid_id);
+ }
+ document.alert_title = name;
+ }
+ }
+ },
+
+ show_status: function(presence) {
+ log('changing my status to ' + presence);
+ $('#buddy-list .user-status .simplemenu-trigger')
+ .removeClass('icon-menu-chat')
+ .removeClass('icon-menu-offline')
+ .removeClass('icon-menu-dnd')
+ .addClass('icon-menu-' + (presence || 'offline'))
+ .find('span').html($presence_status_label[presence]);
+ $.get('/chat/update_presence_status', { status: {chat_status: presence, last_chat_status: presence} });
+ },
+
+ send_availability_status: function(presence) {
+ Jabber.connection.send($pres().c('show').t(presence).up());
+ Jabber.show_status(presence);
+ },
+
+ enter_room: function(room_jid) {
+ Jabber.connection.send(
+ $pres({to: room_jid + '/' + $own_name}).c('x', {xmlns: Strophe.NS.MUC}).c('history', {maxchars: 0})
+ );
+ },
+
+ leave_room: function(room_jid) {
+ Jabber.connection.send($pres({from: Jabber.connection.jid, to: room_jid + '/' + $own_name, type: 'unavailable'}))
+ },
+
+ update_chat_title: function () {
+ var friends_online = $('#buddy-list .buddy-list li:visible').length;
+ $('#friends-online').text(friends_online);
+ document.title = $('#title-bar .title').text();
+ },
+
+ on_connect: function (status) {
+ switch (status) {
+ case Strophe.Status.CONNECTING:
+ log('connecting...');
+ break;
+ case Strophe.Status.CONNFAIL:
+ log('failed to connect');
+ break;
+ case Strophe.Status.DISCONNECTING:
+ log('disconnecting...');
+ $('#buddy-list .toolbar').addClass('small-loading-dark');
+ break;
+ case Strophe.Status.DISCONNECTED:
+ log('disconnected');
+ Jabber.show_status('');
+ $('#buddy-list ul.buddy-list, .occupant-list ul.occupant-list').html('');
+ Jabber.update_chat_title();
+ $('#chat-window .tab a').removeClass().addClass('icon-menu-offline-11');
+ $('#buddy-list .toolbar').removeClass('small-loading-dark');
+ $('textarea').attr('disabled', 'disabled');
+ break;
+ case Strophe.Status.CONNECTED:
+ log('connected');
+ case Strophe.Status.ATTACHED:
+ log('XMPP/BOSH session attached');
+ $('#buddy-list .toolbar').removeClass('small-loading-dark');
+ $('textarea').attr('disabled', '');
+ break;
+ }
+ },
+
+ on_roster: function (iq) {
+ log('receiving roster');
+ $(iq).find('item').each(function () {
+ var jid = $(this).attr('jid');
+ var name = $(this).attr('name') || jid;
+ var jid_id = Jabber.jid_to_id(jid);
+ Jabber.insert_or_update_contact(jid, name);
+ });
+ // set up presence handler and send initial presence
+ Jabber.connection.addHandler(Jabber.on_presence, null, "presence");
+ Jabber.send_availability_status(Jabber.presence_status);
+ // detect if chat was opened with anchor like #community@conference.jabber.colivre
+ $(window).trigger('hashchange');
+ },
+
+ // NOTE: cause Noosfero store's rosters in database based on friendship relation between people
+ // these event never occurs cause jabber service (ejabberd) didn't know when a roster was changed
+ on_roster_changed: function (iq) {
+ log('roster changed');
+ $(iq).find('item').each(function () {
+ var sub = $(this).attr('subscription');
+ var jid = $(this).attr('jid');
+ var name = $(this).attr('name') || jid;
+ if (sub == 'remove') {
+ // contact is being removed
+ Jabber.remove_contact(jid);
+ } else {
+ // contact is being added or modified
+ Jabber.insert_or_update_contact(jid, name);
+ }
+ });
+ return true;
+ },
+
+ parse: function (stanza) {
+ var result = {};
+ if (Strophe.isTagEqual(stanza, 'presence')) {
+ result.from = $(stanza).attr('from');
+ result.type = $(stanza).attr('type');
+ if (result.type == 'unavailable') {
+ result.show = 'offline';
+ } else {
+ var show = $(stanza).find("show").text();
+ if (show === "" || show == "chat") {
+ result.show = 'chat';
+ }
+ else if (show == "dnd" || show == "xa") {
+ result.show = 'dnd';
+ }
+ else {
+ result.show = 'away';
+ }
+ }
+ if ($(stanza).find('x[xmlns='+ Strophe.NS.MUC_USER +']').length > 0) {
+ result.is_from_room = true;
+ result.from_user = $(stanza).find('x item').attr('jid');
+ if ($(stanza).find('x item').attr('affiliation') == 'owner') {
+ result.awaiting_configuration = ($(stanza).find('x status').attr('code') == '201');
+ }
+ }
+ }
+ else if (Strophe.isTagEqual(stanza, 'message')) {
+ result.from = $(stanza).attr('from');
+ result.body = $(stanza).find('body').text();
+ if ($(stanza).find('error').length > 0) {
+ result.error = $(stanza).find('error text').text();
+ if (!result.error && $(stanza).find('error').find('service-unavailable').length > 0) {
+ result.error = $user_unavailable_error;
+ }
+ }
+ }
+ return result;
+ },
+
+ on_presence: function (presence) {
+ presence = Jabber.parse(presence);
+ if (presence.type != 'error') {
+ if (presence.is_from_room) {
+ log('receiving room presence from ' + presence.from + ' as ' + presence.show);
+ var name = Strophe.getResourceFromJid(presence.from);
+ if (presence.from_user) {
+ Jabber.insert_or_update_occupant(presence.from_user, name, presence.show, presence.from);
+ }
+ else {
+ log('ooops! user jid not found in presence stanza');
+ }
+ if (presence.awaiting_configuration) {
+ log('sending instant room configuration to ' + Strophe.getBareJidFromJid(presence.from));
+ Jabber.connection.sendIQ(
+ $iq({type: 'set', to: Strophe.getBareJidFromJid(presence.from)})
+ .c('query', {xmlns: Strophe.NS.MUC_OWNER})
+ .c('x', {xmlns: Strophe.NS.DATA_FORMS, type: 'submit'})
+ );
+ }
+ }
+ else {
+ log('receiving contact presence from ' + presence.from + ' as ' + presence.show);
+ var jid = Strophe.getBareJidFromJid(presence.from);
+ if (jid != Jabber.connection.jid) {
+ var name = Jabber.name_of(Jabber.jid_to_id(jid));
+ Jabber.insert_or_update_contact(jid, name, presence.show);
+ Jabber.update_chat_title();
+ }
+ else {
+ // why server sends presence from myself to me?
+ log('ignoring presence from myself');
+ }
+ }
+ }
+ return true;
+ },
+
+ on_private_message: function (message) {
+ message = Jabber.parse(message);
+ log('receiving message from ' + message.from);
+ var jid = Strophe.getBareJidFromJid(message.from);
+ var jid_id = Jabber.jid_to_id(jid);
+ var name = Jabber.name_of(jid_id);
+ create_conversation_tab(name, jid_id);
+ Jabber.show_message(jid, name, message.body, 'other', Strophe.getNodeFromJid(jid));
+ $.sound.play('/sounds/receive.wav');
+ return true;
+ },
+
+ on_public_message: function (message) {
+ message = Jabber.parse(message);
+ log('receiving message from ' + message.from);
+ var name = Strophe.getResourceFromJid(message.from);
+ // is a message from the room itself
+ if (! name) {
+ Jabber.show_notice(Jabber.jid_to_id(message.from), message.body);
+ }
+ // is a message from another user, not mine
+ else if ($own_name != name) {
+ var jid = Jabber.rooms[Jabber.jid_to_id(message.from)][name];
+ Jabber.show_message(message.from, name, message.body, name, Strophe.getNodeFromJid(jid));
+ $.sound.play('/sounds/receive.wav');
+ }
+ return true;
+ },
+
+ on_message_error: function (message) {
+ message = Jabber.parse(message)
+ var jid = Strophe.getBareJidFromJid(message.from);
+ log('Receiving error message from ' + jid);
+ var body = Jabber.templates.error.replace('%{text}', message.error);
+ Jabber.show_message(jid, Jabber.name_of(Jabber.jid_to_id(jid)), body, 'other', Strophe.getNodeFromJid(jid));
+ return true;
+ },
+
+ on_muc_support: function(iq) {
+ if ($(iq).find('identity[category=conference]').length > 0 && $(iq).find('feature[var='+ Strophe.NS.MUC +']').length > 0) {
+ var name = $(iq).find('identity[category=conference]').attr('name');
+ log('muc support found with identity '+ name);
+ Jabber.muc_supported = true;
+ }
+ else {
+ log('muc support not found');
+ }
+ },
+
+ attach_connection: function(data) {
+ // create the connection and attach it
+ Jabber.connection = new Strophe.Connection(Jabber.bosh_service);
+ Jabber.connection.attach(data.jid, data.sid, data.rid, Jabber.on_connect);
+
+ // handle get roster list (buddy list)
+ Jabber.connection.sendIQ($iq({type: 'get'}).c('query', {xmlns: Strophe.NS.ROSTER}), Jabber.on_roster);
+
+ // handle presence updates in roster list
+ Jabber.connection.addHandler(Jabber.on_roster_changed, 'jabber:iq:roster', 'iq', 'set');
+
+ // Handle messages
+ Jabber.connection.addHandler(Jabber.on_private_message, null, "message", "chat");
+
+ // Handle conference messages
+ Jabber.connection.addHandler(Jabber.on_public_message, null, "message", "groupchat");
+
+ // Handle message errors
+ Jabber.connection.addHandler(Jabber.on_message_error, null, "message", "error");
+
+ // discovering MUC support
+ Jabber.connection.sendIQ(
+ $iq({type: 'get', from: Jabber.connection.jid, to: Jabber.muc_domain})
+ .c('query', {xmlns: Strophe.NS.DISCO_INFO}),
+ Jabber.on_muc_support
+ );
+
+ // Timed handle to save presence status to Noosfero DB every (N) seconds
+ Jabber.connection.addTimedHandler(Jabber.update_presence_status_every * 1000, function() {
+ log('saving presence status to Noosfero DB');
+ $.get('/chat/update_presence_status', { status: {chat_status: Jabber.presence_status} });
+ return true;
+ });
+
+ // uncomment for extra debugging
+ //Strophe.log = function (lvl, msg) { log(msg); };
+ },
+
+ connect: function() {
+ if (Jabber.connection && Jabber.connection.connected) {
+ Jabber.send_availability_status(Jabber.presence_status);
+ }
+ else {
+ log('starting XMPP/BOSH session...');
+ $('#buddy-list .toolbar').removeClass('small-loading-dark').addClass('small-loading-dark');
+ $('.dialog-error').hide();
+ $.ajax({
+ url: '/chat/start_session',
+ dataType: 'json',
+ success: function(data) {
+ Jabber.attach_connection(data)
+ },
+ error: function(error) {
+ $('#buddy-list .toolbar').removeClass('small-loading-dark');
+ $('#buddy-list .dialog-error')
+ .html(error.responseText)
+ .show('highlight')
+ .unbind('click')
+ .click(function() { $(this).hide('highlight'); });
+ }
+ });
+ }
+ },
+
+ deliver_message: function(jid, body) {
+ var type = Jabber.type_of(Jabber.jid_to_id(jid));
+ var message = $msg({to: jid, from: Jabber.connection.jid, "type": type})
+ .c('body').t(body).up()
+ .c('active', {xmlns: Strophe.NS.CHAT_STATES});
+ Jabber.connection.send(message);
+ Jabber.show_message(jid, $own_name, body, 'self', Strophe.getNodeFromJid(Jabber.connection.jid));
+ },
+
+ is_a_room: function(jid_id) {
+ return Jabber.type_of(jid_id) == 'groupchat';
+ },
+
+ show_notice: function(jid_id, msg) {
+ var tab_id = '#' + Jabber.tab_prefix + jid_id;
+ $(tab_id).find('.history').append("" + msg + " ");
+ }
+ };
+
+ $('#chat-connect').live('click', function() {
+ Jabber.presence_status = 'chat';
+ Jabber.connect();
+ });
+
+ $('#chat-disconnect').click(function() {
+ if (Jabber.connection && Jabber.connection.connected) {
+ Jabber.connection.disconnect();
+ }
+ });
+
+ // save presence_status as offline in Noosfero database when close or reload chat window
+ $(window).unload(function() {
+ $.get('/chat/update_presence_status', { status: {chat_status: ''} });
+ });
+
+ $('#chat-busy').click(function() {
+ Jabber.presence_status = 'dnd';
+ Jabber.connect();
+ });
+
+ $('#chat-retry').live('click', function() {
+ Jabber.presence_status = Jabber.presence_status || 'chat';
+ Jabber.connect();
+ });
+
+ // detect when click in chat with a community or person in main window of Noosfero environment
+ $(window).bind('hashchange', function() {
+ if (window.location.hash) {
+ var full_jid = window.location.hash.replace('#', '');
+ var jid = Strophe.getBareJidFromJid(full_jid);
+ var name = Strophe.getResourceFromJid(full_jid);
+ var jid_id = Jabber.jid_to_id(full_jid);
+ window.location.hash = '#';
+ if (full_jid) {
+ if (Strophe.getDomainFromJid(jid) == Jabber.muc_domain) {
+ if (Jabber.muc_supported) {
+ log('opening groupchat with ' + jid);
+ Jabber.jids[jid_id] = {jid: jid, name: name, type: 'groupchat'};
+ Jabber.enter_room(jid);
+ create_conversation_tab(name, jid_id);
+ }
+ }
+ else {
+ log('opening chat with ' + jid);
+ create_conversation_tab(name, jid_id);
+ }
+ }
+ }
+ });
+
+ $('.conversation textarea').live('keydown', function(e) {
+ if (e.keyCode == 13) {
+ var jid = $(this).attr('data-to');
+ var body = $(this).val();
+ body = body.stripScripts();
+ Jabber.deliver_message(jid, body);
+ $(this).val('');
+ return false;
+ }
+ });
+
+ // open new conversation or change to already opened tab
+ $('#buddy-list .buddy-list li a').live('click', function() {
+ var jid_id = $(this).attr('id');
+ var name = Jabber.name_of(jid_id);
+ create_conversation_tab(name, jid_id);
+ });
+
+ // put name into text area when click in one occupant
+ $('.occupant-list .occupant-list li a').live('click', function() {
+ var jid_id = $(this).attr('data-id');
+ var name = Jabber.name_of(jid_id);
+ var val = $('.conversation textarea:visible').val();
+ $('.conversation textarea:visible').val(val + name + ', ').focus();
+ });
+
+ $('.conversation .history').live('click', function() {
+ $('.conversation textarea:visible').focus();
+ });
+
+ function create_conversation_tab(title, jid_id) {
+ if (! $('#' + Jabber.tab_prefix + jid_id).length > 0) {
+ // opening chat with selected online friend
+ var tab = $tabs.tabs('add', '#' + Jabber.tab_prefix + jid_id, title);
+ var jid = Jabber.jid_of(jid_id);
+ $("a[href='#" + Jabber.tab_prefix + jid_id + "']").addClass($('#' + jid_id).attr('class') || 'icon-chat');
+ $('#' + Jabber.tab_prefix + jid_id).find('textarea').attr('data-to', jid);
+ $tabs.tabs('select', '#' + Jabber.tab_prefix + jid_id);
+ }
+ }
+
+ function count_unread_messages(jid_id, hide) {
+ if (hide) {
+ $('a[href=#' + Jabber.tab_prefix + jid_id + ']').find('.unread-messages').hide();
+ Jabber.unread_messages_of(jid_id, 0);
+ $('a[href=#' + Jabber.tab_prefix + jid_id + ']').find('.unread-messages').text('');
+ }
+ else {
+ $('a[href=#' + Jabber.tab_prefix + jid_id + ']').find('.unread-messages').show();
+ var unread_messages = Jabber.unread_messages_of(jid_id) || 0;
+ Jabber.unread_messages_of(jid_id, ++unread_messages);
+ $('a[href=#' + Jabber.tab_prefix + jid_id + ']').find('.unread-messages').text(unread_messages);
+ }
+ }
+
+ // creating tabs
+ var $tabs = $('#chat-window #tabs').tabs({
+ tabTemplate: ' #{label} ',
+ panelTemplate: "",
+ add: function(event, ui) {
+ var jid_id = ui.panel.id.replace(Jabber.tab_prefix, '');
+
+ var notice = $starting_chat_notice.replace('%{name}', $(ui.tab).html());
+ Jabber.show_notice(jid_id, notice);
+
+ // define textarea name as ''
+ $(ui.panel).find('textarea').attr('name', ui.panel.id);
+
+ if (Jabber.is_a_room(jid_id)) {
+ $(ui.panel).append(Jabber.templates.occupant_list);
+ $(ui.panel).find('.history').addClass('room');
+ }
+ },
+ show: function(event, ui) {
+ $(ui.panel).find('.history').scrollTo({top:'100%', left:'0%'});
+ $(ui.panel).find('textarea').focus();
+ var jid_id = ui.panel.id.replace(Jabber.tab_prefix, '');
+ count_unread_messages(jid_id, true);
+ },
+ remove: function(event, ui) {
+ var jid_id = ui.panel.id.replace(Jabber.tab_prefix, '');
+ if (Jabber.is_a_room(jid_id)) {
+ // exiting from a chat room
+ var jid = Jabber.jid_of(jid_id);
+ log('leaving chatroom ' + jid);
+ Jabber.leave_room(jid);
+ }
+ else {
+ // TODO notify to friend when I close chat window
+ }
+ }
+ }).scrollabletab({
+ closable: true
+ });
+
+ // remove some unnecessary css classes to apply style for tabs in bottom
+ $(".tabs-bottom .ui-tabs-nav, .tabs-bottom .ui-tabs-nav > *")
+ .removeClass("ui-corner-all ui-corner-top ui-helper-clearfix");
+ $('#chat-window #tabs').removeClass("ui-corner-all ui-widget-content");
+
+ // positionting scrollabletab wrapper at bottom and tabs next/prev buttons
+ $('#stTabswrapper,#tabs').css({'position':'absolute', 'top':0, 'bottom':0, 'left': 0, 'right': 0, 'width': 'auto'});
+ $('.stNavWrapper').css('position', 'absolute').css('bottom', 0).css('left', 0).css('right', 0)
+ .find('.stNav').css('top', null).css('bottom', '12px').css('height', '22px')
+ .find('.ui-icon').css('margin-top', '2px');
+ $('.webkit .stNavWrapper .stNav').css('height', '20px');
+
+ // // blink window title alerting about new unread messages
+ //
+ // FIXME disabling window blinking for now
+ //
+ // $(window).blur(function() {
+ // setTimeout(function() {
+ // window.blinkInterval = setInterval(function() {
+ // if (document.title.match(/\*.+\* .+/)) {
+ // document.title = document.title.replace(/\*.+\* /g, '');
+ // }
+ // else if (document.alert_title) {
+ // document.title = '*'+ document.alert_title +'* '+ document.title.replace(/\*.+\* /g, '');
+ // }}, 2000
+ // );
+ // }, 2000);
+ // }, false);
+ // $(window).focus(function() {
+ // clearInterval(window.blinkInterval);
+ // document.alert_title = null;
+ // document.title = document.title.replace(/\*.+\* /g, '');
+ // }, false);
+
+ function log(msg) {
+ if(Jabber.debug && window.console && window.console.log) {
+ var time = new Date();
+ window.console.log('['+ time.toTimeString() +'] ' + msg);
+ }
+ }
+
+});
+
+function checkTime(i) {
+ if (i<10) {
+ i="0" + i;
+ }
+ return i;
+}
diff --git a/app/assets/javascripts/codepress/codepress.css b/app/assets/javascripts/codepress/codepress.css
new file mode 100644
index 0000000..2186820
--- /dev/null
+++ b/app/assets/javascripts/codepress/codepress.css
@@ -0,0 +1,21 @@
+body {
+ margin-top:13px;
+ _margin-top:14px;
+ background:white;
+ margin-left:32px;
+ font-family:monospace;
+ font-size:13px;
+ white-space:pre;
+ background-image:url("images/line-numbers.png");
+ background-repeat:repeat-y;
+ background-position:0 3px;
+ line-height:16px;
+ height:100%;
+}
+pre {margin:0;}
+html>body{background-position:0 2px;}
+P {margin:0;padding:0;border:0;outline:0;display:block;white-space:pre;}
+b, i, s, u, a, em, tt, ins, big, cite, strong, var, dfn {text-decoration:none;font-weight:normal;font-style:normal;font-size:13px;}
+
+body.hide-line-numbers {background:white;margin-left:16px;}
+body.show-line-numbers {background-image:url("images/line-numbers.png");margin-left:32px;}
\ No newline at end of file
diff --git a/app/assets/javascripts/codepress/codepress.html b/app/assets/javascripts/codepress/codepress.html
new file mode 100644
index 0000000..20270fe
--- /dev/null
+++ b/app/assets/javascripts/codepress/codepress.html
@@ -0,0 +1,35 @@
+
+
+
+ CodePress - Real Time Syntax Highlighting Editor written in JavaScript
+
+
+
+
+
+
+
+
+
diff --git a/app/assets/javascripts/codepress/codepress.js b/app/assets/javascripts/codepress/codepress.js
new file mode 100644
index 0000000..48c1d74
--- /dev/null
+++ b/app/assets/javascripts/codepress/codepress.js
@@ -0,0 +1,138 @@
+/*
+ * CodePress - Real Time Syntax Highlighting Editor written in JavaScript - http://codepress.org/
+ *
+ * Copyright (C) 2006 Fernando M.A.d.S.
+ *
+ * This program is free software; you can redistribute it and/or modify it under the terms of the
+ * GNU Lesser General Public License as published by the Free Software Foundation.
+ *
+ * Read the full licence: http://www.opensource.org/licenses/lgpl-license.php
+ */
+
+CodePress = function(obj) {
+ var self = document.createElement('iframe');
+ self.textarea = obj;
+ self.textarea.disabled = true;
+ self.textarea.style.overflow = 'hidden';
+ self.style.height = self.textarea.clientHeight +'px';
+ self.style.width = self.textarea.clientWidth +'px';
+ self.textarea.style.overflow = 'auto';
+ self.style.border = '1px solid gray';
+ self.frameBorder = 0; // remove IE internal iframe border
+ self.style.visibility = 'hidden';
+ self.style.position = 'absolute';
+ self.options = self.textarea.className;
+
+ self.initialize = function() {
+ self.editor = self.contentWindow.CodePress;
+ self.editor.body = self.contentWindow.document.getElementsByTagName('body')[0];
+ self.editor.setCode(self.textarea.value);
+ self.setOptions();
+ self.editor.syntaxHighlight('init');
+ self.textarea.style.display = 'none';
+ self.style.position = 'static';
+ self.style.visibility = 'visible';
+ self.style.display = 'inline';
+ }
+
+ // obj can by a textarea id or a string (code)
+ self.edit = function(obj,language) {
+ if(obj) self.textarea.value = document.getElementById(obj) ? document.getElementById(obj).value : obj;
+ if(!self.textarea.disabled) return;
+ self.language = language ? language : self.getLanguage();
+ self.src = CodePress.path+'codepress.html?language='+self.language+'&ts='+(new Date).getTime();
+ if(self.attachEvent) self.attachEvent('onload',self.initialize);
+ else self.addEventListener('load',self.initialize,false);
+ }
+
+ self.getLanguage = function() {
+ for (language in CodePress.languages)
+ if(self.options.match('\\b'+language+'\\b'))
+ return CodePress.languages[language] ? language : 'generic';
+ }
+
+ self.setOptions = function() {
+ if(self.options.match('autocomplete-off')) self.toggleAutoComplete();
+ if(self.options.match('readonly-on')) self.toggleReadOnly();
+ if(self.options.match('linenumbers-off')) self.toggleLineNumbers();
+ }
+
+ self.getCode = function() {
+ return self.textarea.disabled ? self.editor.getCode() : self.textarea.value;
+ }
+
+ self.setCode = function(code) {
+ self.textarea.disabled ? self.editor.setCode(code) : self.textarea.value = code;
+ }
+
+ self.toggleAutoComplete = function() {
+ self.editor.autocomplete = (self.editor.autocomplete) ? false : true;
+ }
+
+ self.toggleReadOnly = function() {
+ self.textarea.readOnly = (self.textarea.readOnly) ? false : true;
+ if(self.style.display != 'none') // prevent exception on FF + iframe with display:none
+ self.editor.readOnly(self.textarea.readOnly ? true : false);
+ }
+
+ self.toggleLineNumbers = function() {
+ var cn = self.editor.body.className;
+ self.editor.body.className = (cn==''||cn=='show-line-numbers') ? 'hide-line-numbers' : 'show-line-numbers';
+ }
+
+ self.toggleEditor = function() {
+ if(self.textarea.disabled) {
+ self.textarea.value = self.getCode();
+ self.textarea.disabled = false;
+ self.style.display = 'none';
+ self.textarea.style.display = 'inline';
+ }
+ else {
+ self.textarea.disabled = true;
+ self.setCode(self.textarea.value);
+ self.editor.syntaxHighlight('init');
+ self.style.display = 'inline';
+ self.textarea.style.display = 'none';
+ }
+ }
+
+ self.edit();
+ return self;
+}
+
+CodePress.languages = {
+ csharp : 'C#',
+ css : 'CSS',
+ generic : 'Generic',
+ html : 'HTML',
+ java : 'Java',
+ javascript : 'JavaScript',
+ perl : 'Perl',
+ ruby : 'Ruby',
+ php : 'PHP',
+ text : 'Text',
+ sql : 'SQL',
+ vbscript : 'VBScript'
+}
+
+
+CodePress.run = function() {
+ s = document.getElementsByTagName('script');
+ for(var i=0,n=s.length;i
+ *
+ * Developers:
+ * Fernando M.A.d.S.
+ * Michael Hurni
+ * Contributors:
+ * Martin D. Kirk
+ *
+ * This program is free software; you can redistribute it and/or modify it under the terms of the
+ * GNU Lesser General Public License as published by the Free Software Foundation.
+ *
+ * Read the full licence: http://www.opensource.org/licenses/lgpl-license.php
+ */
+
+CodePress = {
+ scrolling : false,
+ autocomplete : true,
+
+ // set initial vars and start sh
+ initialize : function() {
+ if(typeof(editor)=='undefined' && !arguments[0]) return;
+ body = document.getElementsByTagName('body')[0];
+ body.innerHTML = body.innerHTML.replace(/\n/g,"");
+ chars = '|32|46|62|8|'; // charcodes that trigger syntax highlighting
+ cc = '\u2009'; // carret char
+ editor = document.getElementsByTagName('pre')[0];
+ document.designMode = 'on';
+ document.addEventListener('keypress', this.keyHandler, true);
+ window.addEventListener('scroll', function() { if(!CodePress.scrolling) CodePress.syntaxHighlight('scroll') }, false);
+ completeChars = this.getCompleteChars();
+ completeEndingChars = this.getCompleteEndingChars();
+ },
+
+ // treat key bindings
+ keyHandler : function(evt) {
+ keyCode = evt.keyCode;
+ charCode = evt.charCode;
+ fromChar = String.fromCharCode(charCode);
+
+ if((evt.ctrlKey || evt.metaKey) && evt.shiftKey && charCode!=90) { // shortcuts = ctrl||appleKey+shift+key!=z(undo)
+ CodePress.shortcuts(charCode?charCode:keyCode);
+ }
+ else if( (completeEndingChars.indexOf('|'+fromChar+'|')!= -1 || completeChars.indexOf('|'+fromChar+'|')!=-1) && CodePress.autocomplete) { // auto complete
+ if(!CodePress.completeEnding(fromChar))
+ CodePress.complete(fromChar);
+ }
+ else if(chars.indexOf('|'+charCode+'|')!=-1||keyCode==13) { // syntax highlighting
+ top.setTimeout(function(){CodePress.syntaxHighlight('generic');},100);
+ }
+ else if(keyCode==9 || evt.tabKey) { // snippets activation (tab)
+ CodePress.snippets(evt);
+ }
+ else if(keyCode==46||keyCode==8) { // save to history when delete or backspace pressed
+ CodePress.actions.history[CodePress.actions.next()] = editor.innerHTML;
+ }
+ else if((charCode==122||charCode==121||charCode==90) && evt.ctrlKey) { // undo and redo
+ (charCode==121||evt.shiftKey) ? CodePress.actions.redo() : CodePress.actions.undo();
+ evt.preventDefault();
+ }
+ else if(charCode==118 && evt.ctrlKey) { // handle paste
+ top.setTimeout(function(){CodePress.syntaxHighlight('generic');},100);
+ }
+ else if(charCode==99 && evt.ctrlKey) { // handle cut
+ //alert(window.getSelection().getRangeAt(0).toString().replace(/\t/g,'FFF'));
+ }
+
+ },
+
+ // put cursor back to its original position after every parsing
+ findString : function() {
+ if(self.find(cc))
+ window.getSelection().getRangeAt(0).deleteContents();
+ },
+
+ // split big files, highlighting parts of it
+ split : function(code,flag) {
+ if(flag=='scroll') {
+ this.scrolling = true;
+ return code;
+ }
+ else {
+ this.scrolling = false;
+ mid = code.indexOf(cc);
+ if(mid-2000<0) {ini=0;end=4000;}
+ else if(mid+2000>code.length) {ini=code.length-4000;end=code.length;}
+ else {ini=mid-2000;end=mid+2000;}
+ code = code.substring(ini,end);
+ return code;
+ }
+ },
+
+ getEditor : function() {
+ if(!document.getElementsByTagName('pre')[0]) {
+ body = document.getElementsByTagName('body')[0];
+ if(!body.innerHTML) return body;
+ if(body.innerHTML==" ") body.innerHTML = " ";
+ else body.innerHTML = ""+body.innerHTML+" ";
+ }
+ return document.getElementsByTagName('pre')[0];
+ },
+
+ // syntax highlighting parser
+ syntaxHighlight : function(flag) {
+ //if(document.designMode=='off') document.designMode='on'
+ if(flag != 'init') { window.getSelection().getRangeAt(0).insertNode(document.createTextNode(cc));}
+ editor = CodePress.getEditor();
+ o = editor.innerHTML;
+ o = o.replace(/ /g,'\n');
+ o = o.replace(/<.*?>/g,'');
+ x = z = this.split(o,flag);
+ x = x.replace(/\n/g,' ');
+
+ if(arguments[1]&&arguments[2]) x = x.replace(arguments[1],arguments[2]);
+
+ for(i=0;i/g,'>');
+ if(content.indexOf('$0')<0) content += cc;
+ else content = content.replace(/\$0/,cc);
+ content = content.replace(/\n/g,' ');
+ var pattern = new RegExp(trigger+cc,'gi');
+ evt.preventDefault(); // prevent the tab key from being added
+ this.syntaxHighlight('snippets',pattern,content);
+ }
+ }
+ },
+
+ readOnly : function() {
+ document.designMode = (arguments[0]) ? 'off' : 'on';
+ },
+
+ complete : function(trigger) {
+ window.getSelection().getRangeAt(0).deleteContents();
+ var complete = Language.complete;
+ for (var i=0; i/g,'\n');
+ code = code.replace(/\u2009/g,'');
+ code = code.replace(/<.*?>/g,'');
+ code = code.replace(/</g,'<');
+ code = code.replace(/>/g,'>');
+ code = code.replace(/&/gi,'&');
+ return code;
+ },
+
+ // put code inside editor
+ setCode : function() {
+ var code = arguments[0];
+ code = code.replace(/\u2009/gi,'');
+ code = code.replace(/&/gi,'&');
+ code = code.replace(//g,'>');
+ editor.innerHTML = code;
+ if (code == '')
+ document.getElementsByTagName('body')[0].innerHTML = '';
+ },
+
+ // undo and redo methods
+ actions : {
+ pos : -1, // actual history position
+ history : [], // history vector
+
+ undo : function() {
+ editor = CodePress.getEditor();
+ if(editor.innerHTML.indexOf(cc)==-1){
+ if(editor.innerHTML != " ")
+ window.getSelection().getRangeAt(0).insertNode(document.createTextNode(cc));
+ this.history[this.pos] = editor.innerHTML;
+ }
+ this.pos --;
+ if(typeof(this.history[this.pos])=='undefined') this.pos ++;
+ editor.innerHTML = this.history[this.pos];
+ if(editor.innerHTML.indexOf(cc)>-1) editor.innerHTML+=cc;
+ CodePress.findString();
+ },
+
+ redo : function() {
+ // editor = CodePress.getEditor();
+ this.pos++;
+ if(typeof(this.history[this.pos])=='undefined') this.pos--;
+ editor.innerHTML = this.history[this.pos];
+ CodePress.findString();
+ },
+
+ next : function() { // get next vector position and clean old ones
+ if(this.pos>20) this.history[this.pos-21] = undefined;
+ return ++this.pos;
+ }
+ }
+}
+
+Language={};
+window.addEventListener('load', function() { CodePress.initialize('new'); }, true);
\ No newline at end of file
diff --git a/app/assets/javascripts/codepress/engines/khtml.js b/app/assets/javascripts/codepress/engines/khtml.js
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/app/assets/javascripts/codepress/engines/khtml.js
diff --git a/app/assets/javascripts/codepress/engines/msie.js b/app/assets/javascripts/codepress/engines/msie.js
new file mode 100644
index 0000000..fd609b2
--- /dev/null
+++ b/app/assets/javascripts/codepress/engines/msie.js
@@ -0,0 +1,304 @@
+/*
+ * CodePress - Real Time Syntax Highlighting Editor written in JavaScript - http://codepress.org/
+ *
+ * Copyright (C) 2007 Fernando M.A.d.S.
+ *
+ * Developers:
+ * Fernando M.A.d.S.
+ * Michael Hurni
+ * Contributors:
+ * Martin D. Kirk
+ *
+ * This program is free software; you can redistribute it and/or modify it under the terms of the
+ * GNU Lesser General Public License as published by the Free Software Foundation.
+ *
+ * Read the full licence: http://www.opensource.org/licenses/lgpl-license.php
+ */
+
+CodePress = {
+ scrolling : false,
+ autocomplete : true,
+
+ // set initial vars and start sh
+ initialize : function() {
+ if(typeof(editor)=='undefined' && !arguments[0]) return;
+ chars = '|32|46|62|'; // charcodes that trigger syntax highlighting
+ cc = '\u2009'; // carret char
+ editor = document.getElementsByTagName('pre')[0];
+ editor.contentEditable = 'true';
+ document.getElementsByTagName('body')[0].onfocus = function() {editor.focus();}
+ document.attachEvent('onkeydown', this.metaHandler);
+ document.attachEvent('onkeypress', this.keyHandler);
+ window.attachEvent('onscroll', function() { if(!CodePress.scrolling) setTimeout(function(){CodePress.syntaxHighlight('scroll')},1)});
+ completeChars = this.getCompleteChars();
+ completeEndingChars = this.getCompleteEndingChars();
+ setTimeout(function() { window.scroll(0,0) },50); // scroll IE to top
+ },
+
+ // treat key bindings
+ keyHandler : function(evt) {
+ charCode = evt.keyCode;
+ fromChar = String.fromCharCode(charCode);
+
+ if( (completeEndingChars.indexOf('|'+fromChar+'|')!= -1 || completeChars.indexOf('|'+fromChar+'|')!=-1 )&& CodePress.autocomplete) { // auto complete
+ if(!CodePress.completeEnding(fromChar))
+ CodePress.complete(fromChar);
+ }
+ else if(chars.indexOf('|'+charCode+'|')!=-1||charCode==13) { // syntax highlighting
+ CodePress.syntaxHighlight('generic');
+ }
+ },
+
+ metaHandler : function(evt) {
+ keyCode = evt.keyCode;
+
+ if(keyCode==9 || evt.tabKey) {
+ CodePress.snippets();
+ }
+ else if((keyCode==122||keyCode==121||keyCode==90) && evt.ctrlKey) { // undo and redo
+ (keyCode==121||evt.shiftKey) ? CodePress.actions.redo() : CodePress.actions.undo();
+ evt.returnValue = false;
+ }
+ else if(keyCode==34||keyCode==33) { // handle page up/down for IE
+ self.scrollBy(0, (keyCode==34) ? 200 : -200);
+ evt.returnValue = false;
+ }
+ else if(keyCode==46||keyCode==8) { // save to history when delete or backspace pressed
+ CodePress.actions.history[CodePress.actions.next()] = editor.innerHTML;
+ }
+ else if((evt.ctrlKey || evt.metaKey) && evt.shiftKey && keyCode!=90) { // shortcuts = ctrl||appleKey+shift+key!=z(undo)
+ CodePress.shortcuts(keyCode);
+ evt.returnValue = false;
+ }
+ else if(keyCode==86 && evt.ctrlKey) { // handle paste
+ window.clipboardData.setData('Text',window.clipboardData.getData('Text').replace(/\t/g,'\u2008'));
+ top.setTimeout(function(){CodePress.syntaxHighlight('paste');},10);
+ }
+ else if(keyCode==67 && evt.ctrlKey) { // handle cut
+ // window.clipboardData.setData('Text',x[0]);
+ // code = window.clipboardData.getData('Text');
+ }
+ },
+
+ // put cursor back to its original position after every parsing
+
+
+ findString : function() {
+ range = self.document.body.createTextRange();
+ if(range.findText(cc)){
+ range.select();
+ range.text = '';
+ }
+ },
+
+ // split big files, highlighting parts of it
+ split : function(code,flag) {
+ if(flag=='scroll') {
+ this.scrolling = true;
+ return code;
+ }
+ else {
+ this.scrolling = false;
+ mid = code.indexOf(cc);
+ if(mid-2000<0) {ini=0;end=4000;}
+ else if(mid+2000>code.length) {ini=code.length-4000;end=code.length;}
+ else {ini=mid-2000;end=mid+2000;}
+ code = code.substring(ini,end);
+ return code.substring(code.indexOf(''),code.lastIndexOf('
')+4);
+ }
+ },
+
+ // syntax highlighting parser
+ syntaxHighlight : function(flag) {
+ if(flag!='init') document.selection.createRange().text = cc;
+ o = editor.innerHTML;
+ if(flag=='paste') { // fix pasted text
+ o = o.replace(/ /g,'\r\n');
+ o = o.replace(/\u2008/g,'\t');
+ }
+ o = o.replace(//g,'\n');
+ o = o.replace(/<\/P>/g,'\r');
+ o = o.replace(/<.*?>/g,'');
+ o = o.replace(/ /g,'');
+ o = '
'+o+'
';
+ o = o.replace(/\n\r/g,'
');
+ o = o.replace(/\n/g,'');
+ o = o.replace(/\r/g,'<\/P>');
+ o = o.replace(/
(
)+/,'
');
+ o = o.replace(/<\/P>(<\/P>)+/,'
');
+ o = o.replace(/<\/P>/g,'
');
+ x = z = this.split(o,flag);
+
+ if(arguments[1]&&arguments[2]) x = x.replace(arguments[1],arguments[2]);
+
+ for(i=0;i/g,'>');
+ if(content.indexOf('$0')<0) content += cc;
+ else content = content.replace(/\$0/,cc);
+ content = content.replace(/\n/g,'
');
+ var pattern = new RegExp(trigger+cc,"gi");
+ this.syntaxHighlight('snippets',pattern,content);
+ }
+ }
+ },
+
+ readOnly : function() {
+ editor.contentEditable = (arguments[0]) ? 'false' : 'true';
+ },
+
+ complete : function(trigger) {
+ var complete = Language.complete;
+ for (var i=0; i/g,'\n');
+ code = code.replace(/<\/p>/gi,'\r');
+ code = code.replace(//i,''); // IE first line fix
+ code = code.replace(/
/gi,'\n');
+ code = code.replace(/ /gi,'');
+ code = code.replace(/\u2009/g,'');
+ code = code.replace(/<.*?>/g,'');
+ code = code.replace(/</g,'<');
+ code = code.replace(/>/g,'>');
+ code = code.replace(/&/gi,'&');
+ return code;
+ },
+
+ // put code inside editor
+ setCode : function() {
+ var code = arguments[0];
+ code = code.replace(/\u2009/gi,'');
+ code = code.replace(/&/gi,'&');
+ code = code.replace(//g,'>');
+ editor.innerHTML = '
'+code+' ';
+ },
+
+
+ // undo and redo methods
+ actions : {
+ pos : -1, // actual history position
+ history : [], // history vector
+
+ undo : function() {
+ if(editor.innerHTML.indexOf(cc)==-1){
+ document.selection.createRange().text = cc;
+ this.history[this.pos] = editor.innerHTML;
+ }
+ this.pos--;
+ if(typeof(this.history[this.pos])=='undefined') this.pos++;
+ editor.innerHTML = this.history[this.pos];
+ CodePress.findString();
+ },
+
+ redo : function() {
+ this.pos++;
+ if(typeof(this.history[this.pos])=='undefined') this.pos--;
+ editor.innerHTML = this.history[this.pos];
+ CodePress.findString();
+ },
+
+ next : function() { // get next vector position and clean old ones
+ if(this.pos>20) this.history[this.pos-21] = undefined;
+ return ++this.pos;
+ }
+ }
+}
+
+Language={};
+window.attachEvent('onload', function() { CodePress.initialize('new');});
\ No newline at end of file
diff --git a/app/assets/javascripts/codepress/engines/older.js b/app/assets/javascripts/codepress/engines/older.js
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/app/assets/javascripts/codepress/engines/older.js
diff --git a/app/assets/javascripts/codepress/engines/opera.js b/app/assets/javascripts/codepress/engines/opera.js
new file mode 100644
index 0000000..152c763
--- /dev/null
+++ b/app/assets/javascripts/codepress/engines/opera.js
@@ -0,0 +1,260 @@
+/*
+ * CodePress - Real Time Syntax Highlighting Editor written in JavaScript - http://codepress.org/
+ *
+ * Copyright (C) 2007 Fernando M.A.d.S.
+ *
+ * Contributors :
+ *
+ * Michael Hurni
+ *
+ * This program is free software; you can redistribute it and/or modify it under the terms of the
+ * GNU Lesser General Public License as published by the Free Software Foundation.
+ *
+ * Read the full licence: http://www.opensource.org/licenses/lgpl-license.php
+ */
+
+
+CodePress = {
+ scrolling : false,
+ autocomplete : true,
+
+ // set initial vars and start sh
+ initialize : function() {
+ if(typeof(editor)=='undefined' && !arguments[0]) return;
+ chars = '|32|46|62|'; // charcodes that trigger syntax highlighting
+ cc = '\u2009'; // control char
+ editor = document.getElementsByTagName('body')[0];
+ document.designMode = 'on';
+ document.addEventListener('keyup', this.keyHandler, true);
+ window.addEventListener('scroll', function() { if(!CodePress.scrolling) CodePress.syntaxHighlight('scroll') }, false);
+ completeChars = this.getCompleteChars();
+// CodePress.syntaxHighlight('init');
+ },
+
+ // treat key bindings
+ keyHandler : function(evt) {
+ keyCode = evt.keyCode;
+ charCode = evt.charCode;
+
+ if((evt.ctrlKey || evt.metaKey) && evt.shiftKey && charCode!=90) { // shortcuts = ctrl||appleKey+shift+key!=z(undo)
+ CodePress.shortcuts(charCode?charCode:keyCode);
+ }
+ else if(completeChars.indexOf('|'+String.fromCharCode(charCode)+'|')!=-1 && CodePress.autocomplete) { // auto complete
+ CodePress.complete(String.fromCharCode(charCode));
+ }
+ else if(chars.indexOf('|'+charCode+'|')!=-1||keyCode==13) { // syntax highlighting
+ CodePress.syntaxHighlight('generic');
+ }
+ else if(keyCode==9 || evt.tabKey) { // snippets activation (tab)
+ CodePress.snippets(evt);
+ }
+ else if(keyCode==46||keyCode==8) { // save to history when delete or backspace pressed
+ CodePress.actions.history[CodePress.actions.next()] = editor.innerHTML;
+ }
+ else if((charCode==122||charCode==121||charCode==90) && evt.ctrlKey) { // undo and redo
+ (charCode==121||evt.shiftKey) ? CodePress.actions.redo() : CodePress.actions.undo();
+ evt.preventDefault();
+ }
+ else if(keyCode==86 && evt.ctrlKey) { // paste
+ // TODO: pasted text should be parsed and highlighted
+ }
+ },
+
+ // put cursor back to its original position after every parsing
+ findString : function() {
+ var sel = window.getSelection();
+ var range = window.document.createRange();
+ var span = window.document.getElementsByTagName('span')[0];
+
+ range.selectNode(span);
+ sel.removeAllRanges();
+ sel.addRange(range);
+ span.parentNode.removeChild(span);
+ //if(self.find(cc))
+ //window.getSelection().getRangeAt(0).deleteContents();
+ },
+
+ // split big files, highlighting parts of it
+ split : function(code,flag) {
+ if(flag=='scroll') {
+ this.scrolling = true;
+ return code;
+ }
+ else {
+ this.scrolling = false;
+ mid = code.indexOf('');
+ if(mid-2000<0) {ini=0;end=4000;}
+ else if(mid+2000>code.length) {ini=code.length-4000;end=code.length;}
+ else {ini=mid-2000;end=mid+2000;}
+ code = code.substring(ini,end);
+ return code;
+ }
+ },
+
+ // syntax highlighting parser
+ syntaxHighlight : function(flag) {
+ //if(document.designMode=='off') document.designMode='on'
+ if(flag!='init') {
+ var span = document.createElement('span');
+ window.getSelection().getRangeAt(0).insertNode(span);
+ }
+
+ o = editor.innerHTML;
+// o = o.replace(/ /g,'\r\n');
+// o = o.replace(/<(b|i|s|u|a|em|tt|ins|big|cite|strong)?>/g,'');
+ //alert(o)
+ o = o.replace(/<(?!span|\/span|br).*?>/gi,'');
+// alert(o)
+// x = o;
+ x = z = this.split(o,flag);
+ //alert(z)
+// x = x.replace(/\r\n/g,' ');
+ x = x.replace(/\t/g, ' ');
+
+
+ if(arguments[1]&&arguments[2]) x = x.replace(arguments[1],arguments[2]);
+
+ for(i=0;i/g,'>');
+ if(content.indexOf('$0')<0) content += cc;
+ else content = content.replace(/\$0/,cc);
+ content = content.replace(/\n/g,' ');
+ var pattern = new RegExp(trigger+cc,'gi');
+ evt.preventDefault(); // prevent the tab key from being added
+ this.syntaxHighlight('snippets',pattern,content);
+ }
+ }
+ },
+
+ readOnly : function() {
+ document.designMode = (arguments[0]) ? 'off' : 'on';
+ },
+
+ complete : function(trigger) {
+ window.getSelection().getRangeAt(0).deleteContents();
+ var complete = Language.complete;
+ for (var i=0; i/g,'\n');
+ code = code.replace(/\u2009/g,'');
+ code = code.replace(/<.*?>/g,'');
+ code = code.replace(/</g,'<');
+ code = code.replace(/>/g,'>');
+ code = code.replace(/&/gi,'&');
+ return code;
+ },
+
+ // put code inside editor
+ setCode : function() {
+ var code = arguments[0];
+ code = code.replace(/\u2009/gi,'');
+ code = code.replace(/&/gi,'&');
+ code = code.replace(//g,'>');
+ editor.innerHTML = code;
+ },
+
+ // undo and redo methods
+ actions : {
+ pos : -1, // actual history position
+ history : [], // history vector
+
+ undo : function() {
+ if(editor.innerHTML.indexOf(cc)==-1){
+ window.getSelection().getRangeAt(0).insertNode(document.createTextNode(cc));
+ this.history[this.pos] = editor.innerHTML;
+ }
+ this.pos--;
+ if(typeof(this.history[this.pos])=='undefined') this.pos++;
+ editor.innerHTML = this.history[this.pos];
+ CodePress.findString();
+ },
+
+ redo : function() {
+ this.pos++;
+ if(typeof(this.history[this.pos])=='undefined') this.pos--;
+ editor.innerHTML = this.history[this.pos];
+ CodePress.findString();
+ },
+
+ next : function() { // get next vector position and clean old ones
+ if(this.pos>20) this.history[this.pos-21] = undefined;
+ return ++this.pos;
+ }
+ }
+}
+
+Language={};
+window.addEventListener('load', function() { CodePress.initialize('new'); }, true);
diff --git a/app/assets/javascripts/codepress/images/line-numbers.png b/app/assets/javascripts/codepress/images/line-numbers.png
new file mode 100644
index 0000000..ffea4e6
Binary files /dev/null and b/app/assets/javascripts/codepress/images/line-numbers.png differ
diff --git a/app/assets/javascripts/codepress/index.html b/app/assets/javascripts/codepress/index.html
new file mode 100644
index 0000000..703cec2
--- /dev/null
+++ b/app/assets/javascripts/codepress/index.html
@@ -0,0 +1,443 @@
+
+
+
+
+ CodePress - Real Time Syntax Highlighting Editor written in JavaScript
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ CodePress is web-based source code editor with syntax highlighting written in JavaScript that colors text in real time while it's being typed in the browser.
+
+
+
+ Go to http://codepress.org/ for updates.
+
+
+
Demo
+
+ choose example in:
+ PHP
+ JavaScript
+ Java
+ Perl
+ SQL
+ HTML
+ CSS
+
+
+
+
+
+
+
+
+
+ get code from editor
+ turn on/off CodePress
+ show/hide line numbers
+ turn on/off auto-complete
+ turn on/off read only
+
+
+
+
+
Installation
+
+
+
+ Download and uncompress CodePress under a directory inside your webserver.
+ Example: http://yourserver/codepress/
+ Since CodePress is pure JavaScript and HTML, you can also test it without a webserver.
+
+
+
+
+ Insert CodePress script somewhere in your page inside the <head> or above the </body> tag.
+
+
+
+ <script src="/codepress/codepress.js" type="text/javascript"></script>
+
+
+
+
+
+ Add the <textarea> tag to the place on your page you want CodePress to appear. CodePress will inherit the width and height of your textarea.
+ When the page loads, it will automatically replace your textarea with a CodePress window.
+
+
+ <textarea id="myCpWindow" class="codepress javascript linenumbers-off">
+ // your code here
+ </textarea>
+
+
+
+ The javascript portion of the class="" means that the language being edited is JavaScript.
+
+
+ The codepress portion of the class="" is mandatory and indicates a textarea to be replaced for a CodePress window.
+
+
+ Other class options are linenumbers-off, autocomplete-off and readonly-on.
+
+
+ Careful not to use the same id for two different CodePress windows (<textarea id="xx "...>)
+
+
+
+
+
+
+
You also can...
+
+
+ Open/edit code from a different textarea.
+ Example: textarea_id.edit('other_textarea_id','language')
+
+
+ Get code from CodePress window.
+ Example: textarea_id.getCode()
+
+
+ Turn on/off CodePress editor and return to the regular textarea.
+ Example: textarea_id.toggleEditor()
+
+
+ Turn on/off line numbers.
+ Example: textarea_id.toggleLineNumbers()
+
+
+ Turn on/off read only.
+ Example: textarea_id.toggleReadOnly()
+
+
+ Turn on/off auto-complete.
+ Example: textarea_id.toggleAutoComplete()
+
+
+
+
+
+
+
License
+
+ CodePress is distributed under the LGPL . If your software is compatible with this licence or it is under Creative Commons , you can use it as you want. Just keep the credits somewhere around.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/assets/javascripts/codepress/languages/asp.css b/app/assets/javascripts/codepress/languages/asp.css
new file mode 100644
index 0000000..87af390
--- /dev/null
+++ b/app/assets/javascripts/codepress/languages/asp.css
@@ -0,0 +1,71 @@
+/*
+ * CodePress color styles for ASP-VB syntax highlighting
+ * By Martin D. Kirk
+ */
+/* tags */
+
+b {
+ color:#000080;
+}
+/* comments */
+big, big b, big em, big ins, big s, strong i, strong i b, strong i s, strong i u, strong i a, strong i a u, strong i s u {
+ color:gray;
+ font-weight:normal;
+}
+/* ASP comments */
+strong dfn, strong dfn a,strong dfn var, strong dfn a u, strong dfn u{
+ color:gray;
+ font-weight:normal;
+}
+ /* attributes */
+s, s b, span s u, span s cite, strong span s {
+ color:#5656fa ;
+ font-weight:normal;
+}
+ /* strings */
+strong s,strong s b, strong s u, strong s cite {
+ color:#009900;
+ font-weight:normal;
+}
+strong ins{
+ color:#000000;
+ font-weight:bold;
+}
+ /* Syntax */
+strong a, strong a u {
+ color:#0000FF;
+ font-weight:;
+}
+ /* Native Keywords */
+strong u {
+ color:#990099;
+ font-weight:bold;
+}
+/* Numbers */
+strong var{
+ color:#FF0000;
+}
+/* ASP Language */
+span{
+ color:#990000;
+ font-weight:bold;
+}
+strong i,strong a i, strong u i {
+ color:#009999;
+}
+/* style */
+em {
+ color:#800080;
+ font-style:normal;
+}
+ /* script */
+ins {
+ color:#800000;
+ font-weight:bold;
+}
+
+/* */
+cite, s cite {
+ color:red;
+ font-weight:bold;
+}
\ No newline at end of file
diff --git a/app/assets/javascripts/codepress/languages/asp.js b/app/assets/javascripts/codepress/languages/asp.js
new file mode 100644
index 0000000..7439539
--- /dev/null
+++ b/app/assets/javascripts/codepress/languages/asp.js
@@ -0,0 +1,117 @@
+/*
+ * CodePress regular expressions for ASP-vbscript syntax highlighting
+ */
+
+// ASP VBScript
+Language.syntax = [
+// all tags
+ { input : /(<[^!%|!%@]*?>)/g, output : '$1 ' },
+// style tags
+ { input : /(<style.*?>)(.*?)(<\/style>)/g, output : '$1 $2 $3 ' },
+// script tags
+ { input : /(<script.*?>)(.*?)(<\/script>)/g, output : '$1 $2 $3 ' },
+// strings "" and attributes
+ { input : /\"(.*?)(\"| |<\/P>)/g, output : '"$1$2 ' },
+// ASP Comment
+ { input : /\'(.*?)(\'| |<\/P>)/g, output : '\'$1$2 '},
+// <%.*
+ { input : /(<%)/g, output : '$1' },
+// .*%>
+ { input : /(%>)/g, output : '$1 ' },
+// <%@...%>
+ { input : /(<%@)(.+?)(%>)/gi, output : '$1$2 $3' },
+//Numbers
+ { input : /\b([\d]+)\b/g, output : '$1 ' },
+// Reserved Words 1 (Blue)
+ { input : /\b(And|As|ByRef|ByVal|Call|Case|Class|Const|Dim|Do|Each|Else|ElseIf|Empty|End|Eqv|Exit|False|For|Function)\b/gi, output : '$1 ' },
+ { input : /\b(Get|GoTo|If|Imp|In|Is|Let|Loop|Me|Mod|Enum|New|Next|Not|Nothing|Null|On|Option|Or|Private|Public|ReDim|Rem)\b/gi, output : '$1 ' },
+ { input : /\b(Resume|Select|Set|Stop|Sub|Then|To|True|Until|Wend|While|With|Xor|Execute|Randomize|Erase|ExecuteGlobal|Explicit|step)\b/gi, output : '$1 ' },
+// Reserved Words 2 (Purple)
+ { input : /\b(Abandon|Abs|AbsolutePage|AbsolutePosition|ActiveCommand|ActiveConnection|ActualSize|AddHeader|AddNew|AppendChunk)\b/gi, output : '$1 ' },
+ { input : /\b(AppendToLog|Application|Array|Asc|Atn|Attributes|BeginTrans|BinaryRead|BinaryWrite|BOF|Bookmark|Boolean|Buffer|Byte)\b/gi, output : '$1 ' },
+ { input : /\b(CacheControl|CacheSize|Cancel|CancelBatch|CancelUpdate|CBool|CByte|CCur|CDate|CDbl|Charset|Chr|CInt|Clear)\b/gi, output : '$1 ' },
+ { input : /\b(ClientCertificate|CLng|Clone|Close|CodePage|CommandText|CommandType|CommandTimeout|CommitTrans|CompareBookmarks|ConnectionString|ConnectionTimeout)\b/gi, output : '$1 ' },
+ { input : /\b(Contents|ContentType|Cookies|Cos|CreateObject|CreateParameter|CSng|CStr|CursorLocation|CursorType|DataMember|DataSource|Date|DateAdd|DateDiff)\b/gi, output : '$1 ' },
+ { input : /\b(DatePart|DateSerial|DateValue|Day|DefaultDatabase|DefinedSize|Delete|Description|Double|EditMode|Eof|EOF|err|Error)\b/gi, output : '$1 ' },
+ { input : /\b(Exp|Expires|ExpiresAbsolute|Filter|Find|Fix|Flush|Form|FormatCurrency|FormatDateTime|FormatNumber|FormatPercent)\b/gi, output : '$1 ' },
+ { input : /\b(GetChunk|GetLastError|GetRows|GetString|Global|HelpContext|HelpFile|Hex|Hour|HTMLEncode|IgnoreCase|Index|InStr|InStrRev)\b/gi, output : '$1 ' },
+ { input : /\b(Int|Integer|IsArray|IsClientConnected|IsDate|IsolationLevel|Join|LBound|LCase|LCID|Left|Len|Lock|LockType|Log|Long|LTrim)\b/gi, output : '$1 ' },
+ { input : /\b(MapPath|MarshalOptions|MaxRecords|Mid|Minute|Mode|Month|MonthName|Move|MoveFirst|MoveLast|MoveNext|MovePrevious|Name|NextRecordset)\b/gi, output : '$1 ' },
+ { input : /\b(Now|Number|NumericScale|ObjectContext|Oct|Open|OpenSchema|OriginalValue|PageCount|PageSize|Pattern|PICS|Precision|Prepared|Property)\b/gi, output : '$1 ' },
+ { input : /\b(Provider|QueryString|RecordCount|Redirect|RegExp|Remove|RemoveAll|Replace|Requery|Request|Response|Resync|Right|Rnd)\b/gi, output : '$1 ' },
+ { input : /\b(RollbackTrans|RTrim|Save|ScriptTimeout|Second|Seek|Server|ServerVariables|Session|SessionID|SetAbort|SetComplete|Sgn)\b/gi, output : '$1 ' },
+ { input : /\b(Sin|Size|Sort|Source|Space|Split|Sqr|State|StaticObjects|Status|StayInSync|StrComp|String|StrReverse|Supports|Tan|Time)\b/gi, output : '$1 ' },
+ { input : /\b(Timeout|Timer|TimeSerial|TimeValue|TotalBytes|Transfer|Trim|Type|Type|UBound|UCase|UnderlyingValue|UnLock|Update|UpdateBatch)\b/gi, output : '$1 ' },
+ { input : /\b(URLEncode|Value|Value|Version|Weekday|WeekdayName|Write|Year)\b/gi, output : '$1 ' },
+// Reserved Words 3 (Turquis)
+ { input : /\b(vbBlack|vbRed|vbGreen|vbYellow|vbBlue|vbMagenta|vbCyan|vbWhite|vbBinaryCompare|vbTextCompare)\b/gi, output : '$1 ' },
+ { input : /\b(vbSunday|vbMonday|vbTuesday|vbWednesday|vbThursday|vbFriday|vbSaturday|vbUseSystemDayOfWeek)\b/gi, output : '$1 ' },
+ { input : /\b(vbFirstJan1|vbFirstFourDays|vbFirstFullWeek|vbGeneralDate|vbLongDate|vbShortDate|vbLongTime|vbShortTime)\b/gi, output : '$1 ' },
+ { input : /\b(vbObjectError|vbCr|VbCrLf|vbFormFeed|vbLf|vbNewLine|vbNullChar|vbNullString|vbTab|vbVerticalTab|vbUseDefault|vbTrue)\b/gi, output : '$1 ' },
+ { input : /\b(vbFalse|vbEmpty|vbNull|vbInteger|vbLong|vbSingle|vbDouble|vbCurrency|vbDate|vbString|vbObject|vbError|vbBoolean|vbVariant)\b/gi, output : '$1 ' },
+ { input : /\b(vbDataObject|vbDecimal|vbByte|vbArray)\b/gi, output : '$1 ' },
+// html comments
+ { input : /(<!--.*?-->.)/g, output : '$1 ' }
+]
+
+Language.Functions = [
+ // Output at index 0, must be the desired tagname surrounding a $1
+ // Name is the index from the regex that marks the functionname
+ {input : /(function|sub)([ ]*?)(\w+)([ ]*?\()/gi , output : '$1 ', name : '$3'}
+]
+
+Language.snippets = [
+//Conditional
+ { input : 'if', output : 'If $0 Then\n\t\nEnd If' },
+ { input : 'ifelse', output : 'If $0 Then\n\t\n\nElse\n\t\nEnd If' },
+ { input : 'case', output : 'Select Case $0\n\tCase ?\n\tCase Else\nEnd Select'},
+//Response
+ { input : 'rw', output : 'Response.Write( $0 )' },
+ { input : 'resc', output : 'Response.Cookies( $0 )' },
+ { input : 'resb', output : 'Response.Buffer'},
+ { input : 'resflu', output : 'Response.Flush()'},
+ { input : 'resend', output : 'Response.End'},
+//Request
+ { input : 'reqc', output : 'Request.Cookies( $0 )' },
+ { input : 'rq', output : 'Request.Querystring("$0")' },
+ { input : 'rf', output : 'Request.Form("$0")' },
+//FSO
+ { input : 'fso', output : 'Set fso = Server.CreateObject("Scripting.FileSystemObject")\n$0' },
+ { input : 'setfo', output : 'Set fo = fso.getFolder($0)' },
+ { input : 'setfi', output : 'Set fi = fso.getFile($0)' },
+ { input : 'twr', output : 'Set f = fso.CreateTextFile($0,true)\'overwrite\nf.WriteLine()\nf.Close'},
+ { input : 'tre', output : 'Set f = fso.OpenTextFile($0, 1)\nf.ReadAll\nf.Close'},
+//Server
+ { input : 'mapp', output : 'Server.Mappath($0)' },
+//Loops
+ { input : 'foreach', output : 'For Each $0 in ?\n\t\nNext' },
+ { input : 'for', output : 'For $0 to ? step ?\n\t\nNext' },
+ { input : 'do', output : 'Do While($0)\n\t\nLoop' },
+ { input : 'untilrs', output : 'do until rs.eof\n\t\nrs.movenext\nloop' },
+//ADO
+ { input : 'adorec', output : 'Set rs = Server.CreateObject("ADODB.Recordset")' },
+ { input : 'adocon', output : 'Set Conn = Server.CreateObject("ADODB.Connection")' },
+ { input : 'adostr', output : 'Set oStr = Server.CreateObject("ADODB.Stream")' },
+//Http Request
+ { input : 'xmlhttp', output : 'Set xmlHttp = Server.CreateObject("Microsoft.XMLHTTP")\nxmlHttp.open("GET", $0, false)\nxmlHttp.send()\n?=xmlHttp.responseText' },
+ { input : 'xmldoc', output : 'Set xmldoc = Server.CreateObject("Microsoft.XMLDOM")\nxmldoc.async=false\nxmldoc.load(request)'},
+//Functions
+ { input : 'func', output : 'Function $0()\n\t\n\nEnd Function'},
+ { input : 'sub', output : 'Sub $0()\n\t\nEnd Sub'}
+
+]
+
+Language.complete = [
+ //{ input : '\'', output : '\'$0\'' },
+ { input : '"', output : '"$0"' },
+ { input : '(', output : '\($0\)' },
+ { input : '[', output : '\[$0\]' },
+ { input : '{', output : '{\n\t$0\n}' }
+]
+
+Language.shortcuts = [
+ { input : '[space]', output : ' ' },
+ { input : '[enter]', output : ' ' } ,
+ { input : '[j]', output : 'testing' },
+ { input : '[7]', output : '&' }
+]
\ No newline at end of file
diff --git a/app/assets/javascripts/codepress/languages/autoit.css b/app/assets/javascripts/codepress/languages/autoit.css
new file mode 100644
index 0000000..953ed86
--- /dev/null
+++ b/app/assets/javascripts/codepress/languages/autoit.css
@@ -0,0 +1,13 @@
+/**
+ * CodePress color styles for AutoIt syntax highlighting
+ */
+
+u {font-style:normal;color:#000090;font-weight:bold;font-family:Monospace;}
+var {color:#AA0000;font-weight:bold;font-style:normal;}
+em {color:#FF33FF;}
+ins {color:#AC00A9;}
+i {color:#F000FF;}
+b {color:#FF0000;}
+a {color:#0080FF;font-weight:bold;}
+s, s u, s b {color:#9999CC;font-weight:normal;}
+cite, cite *{color:#009933;font-weight:normal;}
\ No newline at end of file
diff --git a/app/assets/javascripts/codepress/languages/autoit.js b/app/assets/javascripts/codepress/languages/autoit.js
new file mode 100644
index 0000000..c34ecc6
--- /dev/null
+++ b/app/assets/javascripts/codepress/languages/autoit.js
@@ -0,0 +1,32 @@
+/**
+ * CodePress regular expressions for AutoIt syntax highlighting
+ * @author: James Brooks, Michael HURNI
+ */
+
+// AutoIt
+Language.syntax = [
+ { input : /({|}|\(|\))/g, output : '$1 ' }, // Brackets
+ { input : /(\*|\+|-)/g, output : '$1 ' }, // Operator
+ { input : /\"(.*?)(\"| |<\/P>)/g, output : "\"$1$2 " }, // strings double
+ { input : /\'(.*?)(\'| |<\/P>)/g, output : '\'$1$2 ' }, // strings single
+ { input : /\b([\d]+)\b/g, output : '$1 ' }, // Numbers
+ { input : /#(.*?)( |<\/P>)/g, output : '#$1 $2' }, // Directives and Includes
+ { input : /(\$[\w\.]*)/g, output : '$1 ' }, // vars
+ { input : /(_[\w\.]*)/g, output : '$1 ' }, // underscored word
+ { input : /(\@[\w\.]*)/g, output : '$1 ' }, // Macros
+ { input : /\b(Abs|ACos|AdlibDisable|AdlibEnable|Asc|AscW|ASin|Assign|ATan|AutoItSetOption|AutoItWinGetTitle|AutoItWinSetTitle|Beep|Binary|BinaryLen|BinaryMid|BinaryToString|BitAND|BitNOT|BitOR|BitSHIFT|BitXOR|BlockInput|Break|Call|CDTray|Ceiling|Chr|ChrW|ClipGet|ClipPut|ConsoleRead|ConsoleWrite|ConsoleWriteError|ControlClick|ControlCommand|ControlDisable|ControlEnable|ControlFocus|ControlGetFocus|ControlGetHandle|ControlGetPos|ControlGetText|ControlHide|ControlListView|ControlMove|ControlSend|ControlSetText|ControlShow|Cos|Dec|DirCopy|DirCreate|DirGetSize|DirMove|DirRemove|DllCall|DllCall|DllClose|DllOpen|DllStructCreate|DllStructGetData|DllStructGetPtr|DllStructGetSize|DllStructSetData|DriveGetDrive|DriveGetFileSystem|DriveGetLabel|DriveGetSerial|DriveGetType|DriveMapAdd|DriveMapDel|DriveMapGet|DriveSetLabel|DriveSpaceFree|DriveSpaceTotal|DriveStatus|EnvGet|EnvSet|EnvUpdate|Eval|Execute|Exp|FileChangeDir|FileClose|FileCopy|FileCreateNTFS|FileCreateShortcut|FileDelete|FileExists|FileFindFirstFile|FileFindNextFile|FileGetAttrib|FileGetLongName|FileGetShortcut|FileGetShortName|FileGetSize|FileGetTime|FileGetVersion|FileInstall|FileMove|FileOpen|FileOpenDialog|FileRead|FileReadLine|FileRecycle|FileRecycleEmpty|FileSaveDialog|FileSelectFolder|FileSetAttrib|FileSetTime|FileWrite|FileWriteLine|Floor|FtpSetProxy|GuiCreate|GuiCtrlCreateAvi|GuiCtrlCreateButton|GuiCtrlCreateCheckbox|GuiCtrlCreateCombo|GuiCtrlCreateContextMenu|GuiCtrlCreateDate|GuiCtrlCreateDummy|GuiCtrlCreateEdit|GuiCtrlCreateGraphic|GuiCtrlCreateGroup|GuiCtrlCreateIcon|GuiCtrlCreateInput|GuiCtrlCreateLabel|GuiCtrlCreateList|GuiCtrlCreateListView|GuiCtrlCreateListViewItem|GuiCtrlCreateMenu|GuiCtrlCreateMenuItem|GuiCtrlCreateMonthCal|GuiCtrlCreateObj|GuiCtrlCreatePic|GuiCtrlCreateProgress|GuiCtrlCreateRadio|GuiCtrlCreateSlider|GuiCtrlCreateTab|GuiCtrlCreateTabItem|GuiCtrlCreateUpdown|GuiCtrlDelete|GuiCtrlGetHandle|GuiCtrlGetState|GuiCtrlRead|GuiCtrlRecvMsg|GuiCtrlSentMsg|GuiCtrlSendToDummy|GuiCtrlSetBkColor|GuiCtrlSetColor|GuiCtrlSetCursor|GuiCtrlSetData|GuiCtrlSetFont|GuiCtrlSetGraphic|GuiCtrlSetImage|GuiCtrlSetLimit|GuiCtrlSetOnEvent|GuiCtrlSetPos|GuiCtrlResizing|GuiCtrlSetState|GuiCtrlSetTip|GuiDelete|GuiGetCursorInfo|GuiGetMsg|GuiGetStyle|GuiRegisterMsg|GuiSetBkColor|GuiSetCoord|GuiSetCursor|GuiSetFont|GuiSetHelp|GuiSetIcon|GuiSetOnEvent|GuiSetStat|GuiSetStyle|GuiStartGroup|GuiSwitch|Hex|HotKeySet|HttpSetProxy|HWnd|InetGet|InetGetSize|IniDelete|IniRead|IniReadSection|IniReadSectionNames|IniRenameSection|IniWrite|IniWriteSection|InputBox|Int|IsAdmin|IsArray|IsBinary|IsBool|IsDeclared|IsDllStruct|IsFloat|IsHWnd|IsInt|IsKeyword|IsNumber|IsObj|IsString|Log|MemGetStats|Mod|MouseClick|MouseClickDrag|MouseDown|MouseGetCursor|MouseGetPos|MouseMove|MouseUp|MouseWheel|MsgBox|Number|ObjCreate|ObjEvent|ObjGet|ObjName|Ping|PixelCheckSum|PixelGetColor|PixelSearch|ProcessClose|ProcessExists|ProcessList|ProcessSetPriority|ProcessWait|ProcessWaitClose|ProgressOff|ProcessOn|ProgressSet|Random|RegDelete|RegEnumKey|RegEnumVal|RegRead|RegWrite|Round|Run|RunAsSet|RunWait|Send|SetError|SetExtended|ShellExecute|ShellExecuteWait|Shutdown|Sin|Sleep|SoundPlay|SoundSetWaveVolume|SplashImageOn|SplashOff|SplashTextOn|Sqrt|SRandom|StatusbarGetText|StderrRead|StdinWrite|StdoutRead|String|StringAddCR|StringCompare|StringFormat|StringInStr|StringIsAlNum|StringIsAlpha|StringIsASCII|StringIsDigit|StringIsFloat|StringIsInt|StringIsLower|StringIsSpace|StringIsUpper|StringIsXDigit|StringLeft|StringLen|StringLower|StringMid|StringRegExp|StringRegExpReplace|StringReplace|StringRight|StringSplit|StringStripCR|StringStripWS|StringToBinary|StringTrimLeft|StringTrimRight|StringUpper|Tan|TCPAccept|TCPCloseSocket|TCPConnect|TCPListen|TCPNameToIP|TCPrecv|TCPSend|TCPShutdown|TCPStartup|TimerDiff|TimerInit|ToolTip|TrayCreateItem|TrayCreateMenu|TrayGetMenu|TrayGetMsg|TrayItemDelete|TrayItemGetHandle|TrayItemGetState|TrayItemGetText|TrayItemSetOnEvent|TrayItemSetState|TrayItemSetText|TraySetClick|TraySetIcon|TraySetOnEvent|TraySetPauseIcon|TraySetState|TraySetToolTip|TrayTip|UBound|UDPBind|UDPCloseSocket|UDPOpen|UDPRecv|UDPSend|WinActivate|WinActive|WinClose|WinExists|WinFlash|WinGetCaretPos|WinGetClassList|WinGetClientSize|WinGetHandle|WinGetPos|WinGetProcess|WinGetState|WinGetText|WinGetTitle|WinKill|WinList|WinMenuSelectItem|WinMinimizeAll|WinMinimizeAllUndo|WinMove|WinSetOnTop|WinSetState|WinSetTitle|WinSetTrans|WinWait|WinWaitActive|WinWaitClose|WinWaitNotActive)\b/g, output : '$1 ' } ,// reserved words
+ { input : /\B;(.*?)( |<\/P>)/g, output : ';$1 $2' }, // comments
+ { input : /#CS(.*?)#CE/g, output : '#CS$1#CE ' } // Block Comments
+]
+
+Language.snippets = []
+
+Language.complete = [
+{ input : '\'',output : '\'$0\'' },
+{ input : '"', output : '"$0"' },
+{ input : '(', output : '\($0\)' },
+{ input : '[', output : '\[$0\]' },
+{ input : '{', output : '{\n\t$0\n}' }
+]
+
+Language.shortcuts = []
diff --git a/app/assets/javascripts/codepress/languages/csharp.css b/app/assets/javascripts/codepress/languages/csharp.css
new file mode 100644
index 0000000..6415d65
--- /dev/null
+++ b/app/assets/javascripts/codepress/languages/csharp.css
@@ -0,0 +1,9 @@
+/*
+ * CodePress color styles for Java syntax highlighting
+ * By Edwin de Jonge
+ */
+
+b {color:#7F0055;font-weight:bold;font-style:normal;} /* reserved words */
+a {color:#2A0088;font-weight:bold;font-style:normal;} /* types */
+i, i b, i s {color:#3F7F5F;font-weight:bold;} /* comments */
+s, s b {color:#2A00FF;font-weight:normal;} /* strings */
\ No newline at end of file
diff --git a/app/assets/javascripts/codepress/languages/csharp.js b/app/assets/javascripts/codepress/languages/csharp.js
new file mode 100644
index 0000000..20fdd91
--- /dev/null
+++ b/app/assets/javascripts/codepress/languages/csharp.js
@@ -0,0 +1,25 @@
+/*
+ * CodePress regular expressions for C# syntax highlighting
+ * By Edwin de Jonge
+ */
+
+Language.syntax = [ // C#
+ { input : /\"(.*?)(\"| |<\/P>)/g, output : '"$1$2 ' }, // strings double quote
+ { input : /\'(.?)(\'| |<\/P>)/g, output : '\'$1$2 ' }, // strings single quote
+ { input : /\b(abstract|as|base|break|case|catch|checked|continue|default|delegate|do|else|event|explicit|extern|false|finally|fixed|for|foreach|get|goto|if|implicit|in|interface|internal|is|lock|namespace|new|null|object|operator|out|override|params|partial|private|protected|public|readonly|ref|return|set|sealed|sizeof|static|stackalloc|switch|this|throw|true|try|typeof|unchecked|unsafe|using|value|virtual|while)\b/g, output : '$1 ' }, // reserved words
+ { input : /\b(bool|byte|char|class|double|float|int|interface|long|string|struct|void)\b/g, output : '$1 ' }, // types
+ { input : /([^:]|^)\/\/(.*?)( //$2$3' }, // comments //
+ { input : /\/\*(.*?)\*\//g, output : '/*$1*/ ' } // comments /* */
+];
+
+Language.snippets = [];
+
+Language.complete = [ // Auto complete only for 1 character
+ {input : '\'',output : '\'$0\'' },
+ {input : '"', output : '"$0"' },
+ {input : '(', output : '\($0\)' },
+ {input : '[', output : '\[$0\]' },
+ {input : '{', output : '{\n\t$0\n}' }
+];
+
+Language.shortcuts = [];
\ No newline at end of file
diff --git a/app/assets/javascripts/codepress/languages/css.css b/app/assets/javascripts/codepress/languages/css.css
new file mode 100644
index 0000000..64778d2
--- /dev/null
+++ b/app/assets/javascripts/codepress/languages/css.css
@@ -0,0 +1,10 @@
+/*
+ * CodePress color styles for CSS syntax highlighting
+ */
+
+b, b a, b u {color:#000080;} /* tags, ids, classes */
+i, i b, i s, i a, i u {color:gray;} /* comments */
+s, s b {color:#a0a0dd;} /* parameters */
+a {color:#0000ff;} /* keys */
+u {color:red;} /* values */
+
diff --git a/app/assets/javascripts/codepress/languages/css.js b/app/assets/javascripts/codepress/languages/css.js
new file mode 100644
index 0000000..00dcce0
--- /dev/null
+++ b/app/assets/javascripts/codepress/languages/css.js
@@ -0,0 +1,23 @@
+/*
+ * CodePress regular expressions for CSS syntax highlighting
+ */
+
+// CSS
+Language.syntax = [
+ { input : /(.*?){(.*?)}/g,output : '$1 {$2 }' }, // tags, ids, classes, values
+ { input : /([\w-]*?):([^\/])/g,output : '$1 :$2' }, // keys
+ { input : /\((.*?)\)/g,output : '($1 )' }, // parameters
+ { input : /\/\*(.*?)\*\//g,output : '/*$1*/ '} // comments
+]
+
+Language.snippets = []
+
+Language.complete = [
+ { input : '\'',output : '\'$0\'' },
+ { input : '"', output : '"$0"' },
+ { input : '(', output : '\($0\)' },
+ { input : '[', output : '\[$0\]' },
+ { input : '{', output : '{\n\t$0\n}' }
+]
+
+Language.shortcuts = []
diff --git a/app/assets/javascripts/codepress/languages/generic.css b/app/assets/javascripts/codepress/languages/generic.css
new file mode 100644
index 0000000..3d52b6b
--- /dev/null
+++ b/app/assets/javascripts/codepress/languages/generic.css
@@ -0,0 +1,9 @@
+/*
+ * CodePress color styles for generic syntax highlighting
+ */
+
+b {color:#7F0055;font-weight:bold;} /* reserved words */
+u {color:darkblue;font-weight:bold;} /* special words */
+i, i b, i s, i u, i em {color:green;font-weight:normal;} /* comments */
+s, s b, s em {color:#2A00FF;font-weight:normal;} /* strings */
+em {font-weight:bold;} /* special chars */
\ No newline at end of file
diff --git a/app/assets/javascripts/codepress/languages/generic.js b/app/assets/javascripts/codepress/languages/generic.js
new file mode 100644
index 0000000..8289da0
--- /dev/null
+++ b/app/assets/javascripts/codepress/languages/generic.js
@@ -0,0 +1,25 @@
+/*
+ * CodePress regular expressions for generic syntax highlighting
+ */
+
+// generic languages
+Language.syntax = [
+ { input : /\"(.*?)(\"| |<\/P>)/g, output : '"$1$2 ' }, // strings double quote
+ { input : /\'(.*?)(\'| |<\/P>)/g, output : '\'$1$2 ' }, // strings single quote
+ { input : /\b(abstract|continue|for|new|switch|default|goto|boolean|do|if|private|this|break|double|protected|throw|byte|else|import|public|throws|case|return|catch|extends|int|short|try|char|final|interface|static|void|class|finally|long|const|float|while|function|label)\b/g, output : '$1 ' }, // reserved words
+ { input : /([\(\){}])/g, output : '$1 ' }, // special chars;
+ { input : /([^:]|^)\/\/(.*?)( //$2$3' }, // comments //
+ { input : /\/\*(.*?)\*\//g, output : '/*$1*/ ' } // comments /* */
+]
+
+Language.snippets = []
+
+Language.complete = [
+ { input : '\'', output : '\'$0\'' },
+ { input : '"', output : '"$0"' },
+ { input : '(', output : '\($0\)' },
+ { input : '[', output : '\[$0\]' },
+ { input : '{', output : '{\n\t$0\n}' }
+]
+
+Language.shortcuts = []
diff --git a/app/assets/javascripts/codepress/languages/html.css b/app/assets/javascripts/codepress/languages/html.css
new file mode 100644
index 0000000..35617cb
--- /dev/null
+++ b/app/assets/javascripts/codepress/languages/html.css
@@ -0,0 +1,13 @@
+/*
+ * CodePress color styles for HTML syntax highlighting
+ */
+
+b {color:#000080;} /* tags */
+ins, ins b, ins s, ins em {color:gray;} /* comments */
+s, s b {color:#7777e4;} /* attribute values */
+a {color:green;} /* links */
+u {color:#E67300;} /* forms */
+big {color:#db0000;} /* images */
+em, em b {color:#800080;} /* style */
+strong {color:#800000;} /* script */
+tt i {color:darkblue;font-weight:bold;} /* script reserved words */
diff --git a/app/assets/javascripts/codepress/languages/html.js b/app/assets/javascripts/codepress/languages/html.js
new file mode 100644
index 0000000..94469b4
--- /dev/null
+++ b/app/assets/javascripts/codepress/languages/html.js
@@ -0,0 +1,59 @@
+/*
+ * CodePress regular expressions for HTML syntax highlighting
+ */
+
+// HTML
+Language.syntax = [
+ { input : /(<[^!]*?>)/g, output : '$1 ' }, // all tags
+ { input : /(<a .*?>|<\/a>)/g, output : '$1 ' }, // links
+ { input : /(<img .*?>)/g, output : '$1 ' }, // images
+ { input : /(<\/?(button|textarea|form|input|select|option|label).*?>)/g, output : '$1 ' }, // forms
+ { input : /(<style.*?>)(.*?)(<\/style>)/g, output : '$1 $2 $3 ' }, // style tags
+ { input : /(<script.*?>)(.*?)(<\/script>)/g, output : '$1 $2 $3 ' }, // script tags
+ { input : /=(".*?")/g, output : '=$1 ' }, // atributes double quote
+ { input : /=('.*?')/g, output : '=$1 ' }, // atributes single quote
+ { input : /(<!--.*?-->.)/g, output : '$1 ' }, // comments
+ { input : /\b(alert|window|document|break|continue|do|for|new|this|void|case|default|else|function|return|typeof|while|if|label|switch|var|with|catch|boolean|int|try|false|throws|null|true|goto)\b/g, output : '$1 ' } // script reserved words
+]
+
+Language.snippets = [
+ { input : 'aref', output : ' ' },
+ { input : 'h1', output : '$0 ' },
+ { input : 'h2', output : '$0 ' },
+ { input : 'h3', output : '$0 ' },
+ { input : 'h4', output : '$0 ' },
+ { input : 'h5', output : '$0 ' },
+ { input : 'h6', output : '$0 ' },
+ { input : 'html', output : '\n\t$0\n' },
+ { input : 'head', output : '\n\t \n\t$0 \n\t\n' },
+ { input : 'img', output : ' ' },
+ { input : 'input', output : ' ' },
+ { input : 'label', output : ' ' },
+ { input : 'legend', output : '\n\t$0\n ' },
+ { input : 'link', output : ' ' },
+ { input : 'base', output : ' ' },
+ { input : 'body', output : '\n\t$0\n' },
+ { input : 'css', output : ' ' },
+ { input : 'div', output : '\n\t$0\n
' },
+ { input : 'divid', output : '\n\t\n
' },
+ { input : 'dl', output : '\n\t\n\t\t$0\n\t \n\t \n ' },
+ { input : 'fieldset', output : '\n\t$0\n ' },
+ { input : 'form', output : '' },
+ { input : 'meta', output : ' ' },
+ { input : 'p', output : '$0
' },
+ { input : 'script', output : '' },
+ { input : 'scriptsrc', output : '' },
+ { input : 'span', output : '$0 ' },
+ { input : 'table', output : '' },
+ { input : 'style', output : '' }
+]
+
+Language.complete = [
+ { input : '\'',output : '\'$0\'' },
+ { input : '"', output : '"$0"' },
+ { input : '(', output : '\($0\)' },
+ { input : '[', output : '\[$0\]' },
+ { input : '{', output : '{\n\t$0\n}' }
+]
+
+Language.shortcuts = []
diff --git a/app/assets/javascripts/codepress/languages/java.css b/app/assets/javascripts/codepress/languages/java.css
new file mode 100644
index 0000000..2339ded
--- /dev/null
+++ b/app/assets/javascripts/codepress/languages/java.css
@@ -0,0 +1,7 @@
+/*
+ * CodePress color styles for Java syntax highlighting
+ */
+
+b {color:#7F0055;font-weight:bold;font-style:normal;} /* reserved words */
+i, i b, i s {color:#3F7F5F;font-weight:bold;} /* comments */
+s, s b {color:#2A00FF;font-weight:normal;} /* strings */
diff --git a/app/assets/javascripts/codepress/languages/java.js b/app/assets/javascripts/codepress/languages/java.js
new file mode 100644
index 0000000..61e9a06
--- /dev/null
+++ b/app/assets/javascripts/codepress/languages/java.js
@@ -0,0 +1,24 @@
+/*
+ * CodePress regular expressions for Java syntax highlighting
+ */
+
+// Java
+Language.syntax = [
+ { input : /\"(.*?)(\"| |<\/P>)/g, output : '"$1$2 '}, // strings double quote
+ { input : /\'(.*?)(\'| |<\/P>)/g, output : '\'$1$2 '}, // strings single quote
+ { input : /\b(abstract|continue|for|new|switch|assert|default|goto|package|synchronized|boolean|do|if|private|this|break|double|implements|protected|throw|byte|else|import|public|throws|case|enum|instanceof|return|transient|catch|extends|int|short|try|char|final|interface|static|void|class|finally|long|strictfp|volatile|const|float|native|super|while)\b/g, output : '$1 '}, // reserved words
+ { input : /([^:]|^)\/\/(.*?)( //$2$3'}, // comments //
+ { input : /\/\*(.*?)\*\//g, output : '/*$1*/ ' }// comments /* */
+]
+
+Language.snippets = []
+
+Language.complete = [
+ { input : '\'',output : '\'$0\'' },
+ { input : '"', output : '"$0"' },
+ { input : '(', output : '\($0\)' },
+ { input : '[', output : '\[$0\]' },
+ { input : '{', output : '{\n\t$0\n}' }
+]
+
+Language.shortcuts = []
diff --git a/app/assets/javascripts/codepress/languages/javascript.css b/app/assets/javascripts/codepress/languages/javascript.css
new file mode 100644
index 0000000..8cb9092
--- /dev/null
+++ b/app/assets/javascripts/codepress/languages/javascript.css
@@ -0,0 +1,8 @@
+/*
+ * CodePress color styles for JavaScript syntax highlighting
+ */
+
+b {color:#7F0055;font-weight:bold;} /* reserved words */
+u {color:darkblue;font-weight:bold;} /* special words */
+i, i b, i s, i u {color:green;font-weight:normal;} /* comments */
+s, s b, s u {color:#2A00FF;font-weight:normal;} /* strings */
diff --git a/app/assets/javascripts/codepress/languages/javascript.js b/app/assets/javascripts/codepress/languages/javascript.js
new file mode 100644
index 0000000..08cdea4
--- /dev/null
+++ b/app/assets/javascripts/codepress/languages/javascript.js
@@ -0,0 +1,30 @@
+/*
+ * CodePress regular expressions for JavaScript syntax highlighting
+ */
+
+// JavaScript
+Language.syntax = [
+ { input : /\"(.*?)(\"| |<\/P>)/g, output : '"$1$2 ' }, // strings double quote
+ { input : /\'(.*?)(\'| |<\/P>)/g, output : '\'$1$2 ' }, // strings single quote
+ { input : /\b(break|continue|do|for|new|this|void|case|default|else|function|return|typeof|while|if|label|switch|var|with|catch|boolean|int|try|false|throws|null|true|goto)\b/g, output : '$1 ' }, // reserved words
+ { input : /\b(alert|isNaN|parent|Array|parseFloat|parseInt|blur|clearTimeout|prompt|prototype|close|confirm|length|Date|location|Math|document|element|name|self|elements|setTimeout|navigator|status|String|escape|Number|submit|eval|Object|event|onblur|focus|onerror|onfocus|onclick|top|onload|toString|onunload|unescape|open|valueOf|window|onmouseover)\b/g, output : '$1 ' }, // special words
+ { input : /([^:]|^)\/\/(.*?)( //$2$3' }, // comments //
+ { input : /\/\*(.*?)\*\//g, output : '/*$1*/ ' } // comments /* */
+]
+
+Language.snippets = [
+ { input : 'dw', output : 'document.write(\'$0\');' },
+ { input : 'getid', output : 'document.getElementById(\'$0\')' },
+ { input : 'fun', output : 'function $0(){\n\t\n}' },
+ { input : 'func', output : 'function $0(){\n\t\n}' }
+]
+
+Language.complete = [
+ { input : '\'',output : '\'$0\'' },
+ { input : '"', output : '"$0"' },
+ { input : '(', output : '\($0\)' },
+ { input : '[', output : '\[$0\]' },
+ { input : '{', output : '{\n\t$0\n}' }
+]
+
+Language.shortcuts = []
diff --git a/app/assets/javascripts/codepress/languages/perl.css b/app/assets/javascripts/codepress/languages/perl.css
new file mode 100644
index 0000000..d9bce85
--- /dev/null
+++ b/app/assets/javascripts/codepress/languages/perl.css
@@ -0,0 +1,11 @@
+/*
+ * CodePress color styles for Perl syntax highlighting
+ * By J. Nick Koston
+ */
+
+b {color:#7F0055;font-weight:bold;} /* reserved words */
+i, i b, i s, i em, i a, i u {color:gray;font-weight:normal;} /* comments */
+s, s b, s a, s em, s u {color:#2A00FF;font-weight:normal;} /* strings */
+a {color:#006700;font-weight:bold;} /* variables */
+em {color:darkblue;font-weight:bold;} /* functions */
+u {font-weight:bold;} /* special chars */
\ No newline at end of file
diff --git a/app/assets/javascripts/codepress/languages/perl.js b/app/assets/javascripts/codepress/languages/perl.js
new file mode 100644
index 0000000..5026e5d
--- /dev/null
+++ b/app/assets/javascripts/codepress/languages/perl.js
@@ -0,0 +1,27 @@
+/*
+ * CodePress regular expressions for Perl syntax highlighting
+ * By J. Nick Koston
+ */
+
+// Perl
+Language.syntax = [
+ { input : /\"(.*?)(\"| |<\/P>)/g, output : '"$1$2 ' }, // strings double quote
+ { input : /\'(.*?)(\'| |<\/P>)/g, output : '\'$1$2 ' }, // strings single quote
+ { input : /([\$\@\%][\w\.]*)/g, output : '$1 ' }, // vars
+ { input : /(sub\s+)([\w\.]*)/g, output : '$1$2 ' }, // functions
+ { input : /\b(abs|accept|alarm|atan2|bind|binmode|bless|caller|chdir|chmod|chomp|chop|chown|chr|chroot|close|closedir|connect|continue|cos|crypt|dbmclose|dbmopen|defined|delete|die|do|dump|each|else|elsif|endgrent|endhostent|endnetent|endprotoent|endpwent|eof|eval|exec|exists|exit|fcntl|fileno|find|flock|for|foreach|fork|format|formlinegetc|getgrent|getgrgid|getgrnam|gethostbyaddr|gethostbyname|gethostent|getlogin|getnetbyaddr|getnetbyname|getnetent|getpeername|getpgrp|getppid|getpriority|getprotobyname|getprotobynumber|getprotoent|getpwent|getpwnam|getpwuid|getservbyaddr|getservbyname|getservbyport|getservent|getsockname|getsockopt|glob|gmtime|goto|grep|hex|hostname|if|import|index|int|ioctl|join|keys|kill|last|lc|lcfirst|length|link|listen|LoadExternals|local|localtime|log|lstat|map|mkdir|msgctl|msgget|msgrcv|msgsnd|my|next|no|oct|open|opendir|ordpack|package|pipe|pop|pos|print|printf|push|pwd|qq|quotemeta|qw|rand|read|readdir|readlink|recv|redo|ref|rename|require|reset|return|reverse|rewinddir|rindex|rmdir|scalar|seek|seekdir|select|semctl|semget|semop|send|setgrent|sethostent|setnetent|setpgrp|setpriority|setprotoent|setpwent|setservent|setsockopt|shift|shmctl|shmget|shmread|shmwrite|shutdown|sin|sleep|socket|socketpair|sort|splice|split|sprintf|sqrt|srand|stat|stty|study|sub|substr|symlink|syscall|sysopen|sysread|system|syswritetell|telldir|tie|tied|time|times|tr|truncate|uc|ucfirst|umask|undef|unless|unlink|until|unpack|unshift|untie|use|utime|values|vec|waitpid|wantarray|warn|while|write)\b/g, output : '$1 ' }, // reserved words
+ { input : /([\(\){}])/g, output : '$1 ' }, // special chars
+ { input : /#(.*?)( |<\/P>)/g, output : '#$1 $2' } // comments
+]
+
+Language.snippets = []
+
+Language.complete = [
+ { input : '\'',output : '\'$0\'' },
+ { input : '"', output : '"$0"' },
+ { input : '(', output : '\($0\)' },
+ { input : '[', output : '\[$0\]' },
+ { input : '{', output : '{\n\t$0\n}' }
+]
+
+Language.shortcuts = []
diff --git a/app/assets/javascripts/codepress/languages/php.css b/app/assets/javascripts/codepress/languages/php.css
new file mode 100644
index 0000000..b20a35c
--- /dev/null
+++ b/app/assets/javascripts/codepress/languages/php.css
@@ -0,0 +1,12 @@
+/*
+ * CodePress color styles for PHP syntax highlighting
+ */
+
+b {color:#000080;} /* tags */
+big, big b, big em, big ins, big s, strong i, strong i b, strong i s, strong i u, strong i a, strong i a u, strong i s u {color:gray;font-weight:normal;} /* comments */
+s, s b, strong s u, strong s cite {color:#5656fa;font-weight:normal;} /* attributes and strings */
+strong a, strong a u {color:#006700;font-weight:bold;} /* variables */
+em {color:#800080;font-style:normal;} /* style */
+ins {color:#800000;} /* script */
+strong u {color:#7F0055;font-weight:bold;} /* reserved words */
+cite, s cite {color:red;font-weight:bold;} /* */
diff --git a/app/assets/javascripts/codepress/languages/php.js b/app/assets/javascripts/codepress/languages/php.js
new file mode 100644
index 0000000..c7640ba
--- /dev/null
+++ b/app/assets/javascripts/codepress/languages/php.js
@@ -0,0 +1,61 @@
+/*
+ * CodePress regular expressions for PHP syntax highlighting
+ */
+
+// PHP
+Language.syntax = [
+ { input : /(<[^!\?]*?>)/g, output : '$1 ' }, // all tags
+ { input : /(<style.*?>)(.*?)(<\/style>)/g, output : '$1 $2 $3 ' }, // style tags
+ { input : /(<script.*?>)(.*?)(<\/script>)/g, output : '$1 $2 $3 ' }, // script tags
+ { input : /\"(.*?)(\"| |<\/P>)/g, output : '"$1$2 ' }, // strings double quote
+ { input : /\'(.*?)(\'| |<\/P>)/g, output : '\'$1$2 '}, // strings single quote
+ { input : /(<\?)/g, output : '$1' }, // .*
+ { input : /(\?>)/g, output : '$1 ' }, // .*?>
+ { input : /(<\?php|<\?=|<\?|\?>)/g, output : '$1 ' }, // php tags
+ { input : /(\$[\w\.]*)/g, output : '$1 ' }, // vars
+ { input : /\b(false|true|and|or|xor|__FILE__|exception|__LINE__|array|as|break|case|class|const|continue|declare|default|die|do|echo|else|elseif|empty|enddeclare|endfor|endforeach|endif|endswitch|endwhile|eval|exit|extends|for|foreach|function|global|if|include|include_once|isset|list|new|print|require|require_once|return|static|switch|unset|use|while|__FUNCTION__|__CLASS__|__METHOD__|final|php_user_filter|interface|implements|extends|public|private|protected|abstract|clone|try|catch|throw|this)\b/g, output : '$1 ' }, // reserved words
+ { input : /([^:])\/\/(.*?)( //$2$3' }, // php comments //
+ { input : /([^:])#(.*?)( #$2$3' }, // php comments #
+ { input : /\/\*(.*?)\*\//g, output : '/*$1*/ ' }, // php comments /* */
+ { input : /(<!--.*?-->.)/g, output : '$1 ' } // html comments
+]
+
+Language.snippets = [
+ { input : 'if', output : 'if($0){\n\t\n}' },
+ { input : 'ifelse', output : 'if($0){\n\t\n}\nelse{\n\t\n}' },
+ { input : 'else', output : '}\nelse {\n\t' },
+ { input : 'elseif', output : '}\nelseif($0) {\n\t' },
+ { input : 'do', output : 'do{\n\t$0\n}\nwhile();' },
+ { input : 'inc', output : 'include_once("$0");' },
+ { input : 'fun', output : 'function $0(){\n\t\n}' },
+ { input : 'func', output : 'function $0(){\n\t\n}' },
+ { input : 'while', output : 'while($0){\n\t\n}' },
+ { input : 'for', output : 'for($0,,){\n\t\n}' },
+ { input : 'fore', output : 'foreach($0 as ){\n\t\n}' },
+ { input : 'foreach', output : 'foreach($0 as ){\n\t\n}' },
+ { input : 'echo', output : 'echo \'$0\';' },
+ { input : 'switch', output : 'switch($0) {\n\tcase "": break;\n\tdefault: ;\n}' },
+ { input : 'case', output : 'case "$0" : break;' },
+ { input : 'ret0', output : 'return false;' },
+ { input : 'retf', output : 'return false;' },
+ { input : 'ret1', output : 'return true;' },
+ { input : 'rett', output : 'return true;' },
+ { input : 'ret', output : 'return $0;' },
+ { input : 'def', output : 'define(\'$0\',\'\');' },
+ { input : '', output : 'php\n$0\n?>' }
+]
+
+Language.complete = [
+ { input : '\'', output : '\'$0\'' },
+ { input : '"', output : '"$0"' },
+ { input : '(', output : '\($0\)' },
+ { input : '[', output : '\[$0\]' },
+ { input : '{', output : '{\n\t$0\n}' }
+]
+
+Language.shortcuts = [
+ { input : '[space]', output : ' ' },
+ { input : '[enter]', output : ' ' } ,
+ { input : '[j]', output : 'testing' },
+ { input : '[7]', output : '&' }
+]
\ No newline at end of file
diff --git a/app/assets/javascripts/codepress/languages/ruby.css b/app/assets/javascripts/codepress/languages/ruby.css
new file mode 100644
index 0000000..b23166b
--- /dev/null
+++ b/app/assets/javascripts/codepress/languages/ruby.css
@@ -0,0 +1,10 @@
+/*
+ * CodePress color styles for Ruby syntax highlighting
+ */
+
+b {color:#7F0055;font-weight:bold;} /* reserved words */
+i, i b, i s, i em, i a, i u {color:gray;font-weight:normal;} /* comments */
+s, s b, s a, s em, s u {color:#2A00FF;font-weight:normal;} /* strings */
+a {color:#006700;font-weight:bold;} /* variables */
+em {color:darkblue;font-weight:bold;} /* functions */
+u {font-weight:bold;} /* special chars */
\ No newline at end of file
diff --git a/app/assets/javascripts/codepress/languages/ruby.js b/app/assets/javascripts/codepress/languages/ruby.js
new file mode 100644
index 0000000..860f433
--- /dev/null
+++ b/app/assets/javascripts/codepress/languages/ruby.js
@@ -0,0 +1,26 @@
+/*
+ * CodePress regular expressions for Perl syntax highlighting
+ */
+
+// Ruby
+Language.syntax = [
+ { input : /\"(.*?)(\"| |<\/P>)/g, output : '"$1$2 ' }, // strings double quote
+ { input : /\'(.*?)(\'| |<\/P>)/g, output : '\'$1$2 ' }, // strings single quote
+ { input : /([\$\@\%]+)([\w\.]*)/g, output : '$1$2 ' }, // vars
+ { input : /(def\s+)([\w\.]*)/g, output : '$1$2 ' }, // functions
+ { input : /\b(alias|and|BEGIN|begin|break|case|class|def|defined|do|else|elsif|END|end|ensure|false|for|if|in|module|next|nil|not|or|redo|rescue|retry|return|self|super|then|true|undef|unless|until|when|while|yield)\b/g, output : '$1 ' }, // reserved words
+ { input : /([\(\){}])/g, output : '$1 ' }, // special chars
+ { input : /#(.*?)( |<\/P>)/g, output : '#$1 $2' } // comments
+];
+
+Language.snippets = []
+
+Language.complete = [
+ { input : '\'',output : '\'$0\'' },
+ { input : '"', output : '"$0"' },
+ { input : '(', output : '\($0\)' },
+ { input : '[', output : '\[$0\]' },
+ { input : '{', output : '{\n\t$0\n}' }
+]
+
+Language.shortcuts = []
diff --git a/app/assets/javascripts/codepress/languages/sql.css b/app/assets/javascripts/codepress/languages/sql.css
new file mode 100644
index 0000000..17458c5
--- /dev/null
+++ b/app/assets/javascripts/codepress/languages/sql.css
@@ -0,0 +1,10 @@
+/*
+ * CodePress color styles for SQL syntax highlighting
+ * By Merlin Moncure
+ */
+
+b {color:#0000FF;font-style:normal;font-weight:bold;} /* reserved words */
+u {color:#FF0000;font-style:normal;} /* types */
+a {color:#CD6600;font-style:normal;font-weight:bold;} /* commands */
+i, i b, i u, i a, i s {color:#A9A9A9;font-weight:normal;font-style:italic;} /* comments */
+s, s b, s u, s a, s i {color:#2A00FF;font-weight:normal;} /* strings */
diff --git a/app/assets/javascripts/codepress/languages/sql.js b/app/assets/javascripts/codepress/languages/sql.js
new file mode 100644
index 0000000..605c971
--- /dev/null
+++ b/app/assets/javascripts/codepress/languages/sql.js
@@ -0,0 +1,30 @@
+/*
+ * CodePress regular expressions for SQL syntax highlighting
+ * By Merlin Moncure
+ */
+
+// SQL
+Language.syntax = [
+ { input : /\'(.*?)(\')/g, output : '\'$1$2 ' }, // strings single quote
+ { input : /\b(add|after|aggregate|alias|all|and|as|authorization|between|by|cascade|cache|cache|called|case|check|column|comment|constraint|createdb|createuser|cycle|database|default|deferrable|deferred|diagnostics|distinct|domain|each|else|elseif|elsif|encrypted|except|exception|for|foreign|from|from|full|function|get|group|having|if|immediate|immutable|in|increment|initially|increment|index|inherits|inner|input|intersect|into|invoker|is|join|key|language|left|like|limit|local|loop|match|maxvalue|minvalue|natural|nextval|no|nocreatedb|nocreateuser|not|null|of|offset|oids|on|only|operator|or|order|outer|owner|partial|password|perform|plpgsql|primary|record|references|replace|restrict|return|returns|right|row|rule|schema|security|sequence|session|sql|stable|statistics|table|temp|temporary|then|time|to|transaction|trigger|type|unencrypted|union|unique|user|using|valid|value|values|view|volatile|when|where|with|without|zone)\b/gi, output : '$1 ' }, // reserved words
+ { input : /\b(bigint|bigserial|bit|boolean|box|bytea|char|character|cidr|circle|date|decimal|double|float4|float8|inet|int2|int4|int8|integer|interval|line|lseg|macaddr|money|numeric|oid|path|point|polygon|precision|real|refcursor|serial|serial4|serial8|smallint|text|timestamp|varbit|varchar)\b/gi, output : '$1 ' }, // types
+ { input : /\b(abort|alter|analyze|begin|checkpoint|close|cluster|comment|commit|copy|create|deallocate|declare|delete|drop|end|execute|explain|fetch|grant|insert|listen|load|lock|move|notify|prepare|reindex|reset|restart|revoke|rollback|select|set|show|start|truncate|unlisten|update)\b/gi, output : '$1 ' }, // commands
+ { input : /([^:]|^)\-\-(.*?)( --$2$3' } // comments //
+]
+
+Language.snippets = [
+ { input : 'select', output : 'select $0 from where ' }
+]
+
+Language.complete = [
+ { input : '\'', output : '\'$0\'' },
+ { input : '"', output : '"$0"' },
+ { input : '(', output : '\($0\)' },
+ { input : '[', output : '\[$0\]' },
+ { input : '{', output : '{\n\t$0\n}' }
+]
+
+Language.shortcuts = []
+
+
+
diff --git a/app/assets/javascripts/codepress/languages/text.css b/app/assets/javascripts/codepress/languages/text.css
new file mode 100644
index 0000000..8e5ba28
--- /dev/null
+++ b/app/assets/javascripts/codepress/languages/text.css
@@ -0,0 +1,5 @@
+/*
+ * CodePress color styles for Text syntax highlighting
+ */
+
+/* do nothing as expected */
diff --git a/app/assets/javascripts/codepress/languages/text.js b/app/assets/javascripts/codepress/languages/text.js
new file mode 100644
index 0000000..1895430
--- /dev/null
+++ b/app/assets/javascripts/codepress/languages/text.js
@@ -0,0 +1,9 @@
+/*
+ * CodePress regular expressions for Text syntax highlighting
+ */
+
+// plain text
+Language.syntax = []
+Language.snippets = []
+Language.complete = []
+Language.shortcuts = []
diff --git a/app/assets/javascripts/codepress/languages/vbscript.css b/app/assets/javascripts/codepress/languages/vbscript.css
new file mode 100644
index 0000000..d65663b
--- /dev/null
+++ b/app/assets/javascripts/codepress/languages/vbscript.css
@@ -0,0 +1,71 @@
+/*
+ * CodePress color styles for ASP-VB syntax highlighting
+ * By Martin D. Kirk
+ */
+
+/* tags */
+b {
+ color:#000080;
+}
+/* comments */
+big, big b, big em, big ins, big s, strong i, strong i b, strong i s, strong i u, strong i a, strong i a u, strong i s u {
+ color:gray;
+ font-weight:normal;
+}
+/* ASP comments */
+strong dfn, strong dfn a,strong dfn var, strong dfn a u, strong dfn u{
+ color:gray;
+ font-weight:normal;
+}
+ /* attributes */
+s, s b, span s u, span s cite, strong span s {
+ color:#5656fa ;
+ font-weight:normal;
+}
+ /* strings */
+strong s,strong s b, strong s u, strong s cite {
+ color:#009900;
+ font-weight:normal;
+}
+strong ins{
+ color:#000000;
+ font-weight:bold;
+}
+ /* Syntax */
+strong a, strong a u {
+ color:#0000FF;
+ font-weight:;
+}
+ /* Native Keywords */
+strong u {
+ color:#990099;
+ font-weight:bold;
+}
+/* Numbers */
+strong var{
+ color:#FF0000;
+}
+/* ASP Language */
+span{
+ color:#990000;
+ font-weight:bold;
+}
+strong i,strong a i, strong u i {
+ color:#009999;
+}
+/* style */
+em {
+ color:#800080;
+ font-style:normal;
+}
+ /* script */
+ins {
+ color:#800000;
+ font-weight:bold;
+}
+
+/* */
+cite, s cite {
+ color:red;
+ font-weight:bold;
+}
\ No newline at end of file
diff --git a/app/assets/javascripts/codepress/languages/vbscript.js b/app/assets/javascripts/codepress/languages/vbscript.js
new file mode 100644
index 0000000..7439539
--- /dev/null
+++ b/app/assets/javascripts/codepress/languages/vbscript.js
@@ -0,0 +1,117 @@
+/*
+ * CodePress regular expressions for ASP-vbscript syntax highlighting
+ */
+
+// ASP VBScript
+Language.syntax = [
+// all tags
+ { input : /(<[^!%|!%@]*?>)/g, output : '$1 ' },
+// style tags
+ { input : /(<style.*?>)(.*?)(<\/style>)/g, output : '$1 $2 $3 ' },
+// script tags
+ { input : /(<script.*?>)(.*?)(<\/script>)/g, output : '$1 $2 $3 ' },
+// strings "" and attributes
+ { input : /\"(.*?)(\"| |<\/P>)/g, output : '"$1$2 ' },
+// ASP Comment
+ { input : /\'(.*?)(\'| |<\/P>)/g, output : '\'$1$2 '},
+// <%.*
+ { input : /(<%)/g, output : '$1' },
+// .*%>
+ { input : /(%>)/g, output : '$1 ' },
+// <%@...%>
+ { input : /(<%@)(.+?)(%>)/gi, output : '$1$2 $3' },
+//Numbers
+ { input : /\b([\d]+)\b/g, output : '$1 ' },
+// Reserved Words 1 (Blue)
+ { input : /\b(And|As|ByRef|ByVal|Call|Case|Class|Const|Dim|Do|Each|Else|ElseIf|Empty|End|Eqv|Exit|False|For|Function)\b/gi, output : '$1 ' },
+ { input : /\b(Get|GoTo|If|Imp|In|Is|Let|Loop|Me|Mod|Enum|New|Next|Not|Nothing|Null|On|Option|Or|Private|Public|ReDim|Rem)\b/gi, output : '$1 ' },
+ { input : /\b(Resume|Select|Set|Stop|Sub|Then|To|True|Until|Wend|While|With|Xor|Execute|Randomize|Erase|ExecuteGlobal|Explicit|step)\b/gi, output : '$1 ' },
+// Reserved Words 2 (Purple)
+ { input : /\b(Abandon|Abs|AbsolutePage|AbsolutePosition|ActiveCommand|ActiveConnection|ActualSize|AddHeader|AddNew|AppendChunk)\b/gi, output : '$1 ' },
+ { input : /\b(AppendToLog|Application|Array|Asc|Atn|Attributes|BeginTrans|BinaryRead|BinaryWrite|BOF|Bookmark|Boolean|Buffer|Byte)\b/gi, output : '$1 ' },
+ { input : /\b(CacheControl|CacheSize|Cancel|CancelBatch|CancelUpdate|CBool|CByte|CCur|CDate|CDbl|Charset|Chr|CInt|Clear)\b/gi, output : '$1 ' },
+ { input : /\b(ClientCertificate|CLng|Clone|Close|CodePage|CommandText|CommandType|CommandTimeout|CommitTrans|CompareBookmarks|ConnectionString|ConnectionTimeout)\b/gi, output : '$1 ' },
+ { input : /\b(Contents|ContentType|Cookies|Cos|CreateObject|CreateParameter|CSng|CStr|CursorLocation|CursorType|DataMember|DataSource|Date|DateAdd|DateDiff)\b/gi, output : '$1 ' },
+ { input : /\b(DatePart|DateSerial|DateValue|Day|DefaultDatabase|DefinedSize|Delete|Description|Double|EditMode|Eof|EOF|err|Error)\b/gi, output : '$1 ' },
+ { input : /\b(Exp|Expires|ExpiresAbsolute|Filter|Find|Fix|Flush|Form|FormatCurrency|FormatDateTime|FormatNumber|FormatPercent)\b/gi, output : '$1 ' },
+ { input : /\b(GetChunk|GetLastError|GetRows|GetString|Global|HelpContext|HelpFile|Hex|Hour|HTMLEncode|IgnoreCase|Index|InStr|InStrRev)\b/gi, output : '$1 ' },
+ { input : /\b(Int|Integer|IsArray|IsClientConnected|IsDate|IsolationLevel|Join|LBound|LCase|LCID|Left|Len|Lock|LockType|Log|Long|LTrim)\b/gi, output : '$1 ' },
+ { input : /\b(MapPath|MarshalOptions|MaxRecords|Mid|Minute|Mode|Month|MonthName|Move|MoveFirst|MoveLast|MoveNext|MovePrevious|Name|NextRecordset)\b/gi, output : '$1 ' },
+ { input : /\b(Now|Number|NumericScale|ObjectContext|Oct|Open|OpenSchema|OriginalValue|PageCount|PageSize|Pattern|PICS|Precision|Prepared|Property)\b/gi, output : '$1 ' },
+ { input : /\b(Provider|QueryString|RecordCount|Redirect|RegExp|Remove|RemoveAll|Replace|Requery|Request|Response|Resync|Right|Rnd)\b/gi, output : '$1 ' },
+ { input : /\b(RollbackTrans|RTrim|Save|ScriptTimeout|Second|Seek|Server|ServerVariables|Session|SessionID|SetAbort|SetComplete|Sgn)\b/gi, output : '$1 ' },
+ { input : /\b(Sin|Size|Sort|Source|Space|Split|Sqr|State|StaticObjects|Status|StayInSync|StrComp|String|StrReverse|Supports|Tan|Time)\b/gi, output : '$1 ' },
+ { input : /\b(Timeout|Timer|TimeSerial|TimeValue|TotalBytes|Transfer|Trim|Type|Type|UBound|UCase|UnderlyingValue|UnLock|Update|UpdateBatch)\b/gi, output : '$1 ' },
+ { input : /\b(URLEncode|Value|Value|Version|Weekday|WeekdayName|Write|Year)\b/gi, output : '$1 ' },
+// Reserved Words 3 (Turquis)
+ { input : /\b(vbBlack|vbRed|vbGreen|vbYellow|vbBlue|vbMagenta|vbCyan|vbWhite|vbBinaryCompare|vbTextCompare)\b/gi, output : '$1 ' },
+ { input : /\b(vbSunday|vbMonday|vbTuesday|vbWednesday|vbThursday|vbFriday|vbSaturday|vbUseSystemDayOfWeek)\b/gi, output : '$1 ' },
+ { input : /\b(vbFirstJan1|vbFirstFourDays|vbFirstFullWeek|vbGeneralDate|vbLongDate|vbShortDate|vbLongTime|vbShortTime)\b/gi, output : '$1 ' },
+ { input : /\b(vbObjectError|vbCr|VbCrLf|vbFormFeed|vbLf|vbNewLine|vbNullChar|vbNullString|vbTab|vbVerticalTab|vbUseDefault|vbTrue)\b/gi, output : '$1 ' },
+ { input : /\b(vbFalse|vbEmpty|vbNull|vbInteger|vbLong|vbSingle|vbDouble|vbCurrency|vbDate|vbString|vbObject|vbError|vbBoolean|vbVariant)\b/gi, output : '$1 ' },
+ { input : /\b(vbDataObject|vbDecimal|vbByte|vbArray)\b/gi, output : '$1 ' },
+// html comments
+ { input : /(<!--.*?-->.)/g, output : '$1 ' }
+]
+
+Language.Functions = [
+ // Output at index 0, must be the desired tagname surrounding a $1
+ // Name is the index from the regex that marks the functionname
+ {input : /(function|sub)([ ]*?)(\w+)([ ]*?\()/gi , output : '$1 ', name : '$3'}
+]
+
+Language.snippets = [
+//Conditional
+ { input : 'if', output : 'If $0 Then\n\t\nEnd If' },
+ { input : 'ifelse', output : 'If $0 Then\n\t\n\nElse\n\t\nEnd If' },
+ { input : 'case', output : 'Select Case $0\n\tCase ?\n\tCase Else\nEnd Select'},
+//Response
+ { input : 'rw', output : 'Response.Write( $0 )' },
+ { input : 'resc', output : 'Response.Cookies( $0 )' },
+ { input : 'resb', output : 'Response.Buffer'},
+ { input : 'resflu', output : 'Response.Flush()'},
+ { input : 'resend', output : 'Response.End'},
+//Request
+ { input : 'reqc', output : 'Request.Cookies( $0 )' },
+ { input : 'rq', output : 'Request.Querystring("$0")' },
+ { input : 'rf', output : 'Request.Form("$0")' },
+//FSO
+ { input : 'fso', output : 'Set fso = Server.CreateObject("Scripting.FileSystemObject")\n$0' },
+ { input : 'setfo', output : 'Set fo = fso.getFolder($0)' },
+ { input : 'setfi', output : 'Set fi = fso.getFile($0)' },
+ { input : 'twr', output : 'Set f = fso.CreateTextFile($0,true)\'overwrite\nf.WriteLine()\nf.Close'},
+ { input : 'tre', output : 'Set f = fso.OpenTextFile($0, 1)\nf.ReadAll\nf.Close'},
+//Server
+ { input : 'mapp', output : 'Server.Mappath($0)' },
+//Loops
+ { input : 'foreach', output : 'For Each $0 in ?\n\t\nNext' },
+ { input : 'for', output : 'For $0 to ? step ?\n\t\nNext' },
+ { input : 'do', output : 'Do While($0)\n\t\nLoop' },
+ { input : 'untilrs', output : 'do until rs.eof\n\t\nrs.movenext\nloop' },
+//ADO
+ { input : 'adorec', output : 'Set rs = Server.CreateObject("ADODB.Recordset")' },
+ { input : 'adocon', output : 'Set Conn = Server.CreateObject("ADODB.Connection")' },
+ { input : 'adostr', output : 'Set oStr = Server.CreateObject("ADODB.Stream")' },
+//Http Request
+ { input : 'xmlhttp', output : 'Set xmlHttp = Server.CreateObject("Microsoft.XMLHTTP")\nxmlHttp.open("GET", $0, false)\nxmlHttp.send()\n?=xmlHttp.responseText' },
+ { input : 'xmldoc', output : 'Set xmldoc = Server.CreateObject("Microsoft.XMLDOM")\nxmldoc.async=false\nxmldoc.load(request)'},
+//Functions
+ { input : 'func', output : 'Function $0()\n\t\n\nEnd Function'},
+ { input : 'sub', output : 'Sub $0()\n\t\nEnd Sub'}
+
+]
+
+Language.complete = [
+ //{ input : '\'', output : '\'$0\'' },
+ { input : '"', output : '"$0"' },
+ { input : '(', output : '\($0\)' },
+ { input : '[', output : '\[$0\]' },
+ { input : '{', output : '{\n\t$0\n}' }
+]
+
+Language.shortcuts = [
+ { input : '[space]', output : ' ' },
+ { input : '[enter]', output : ' ' } ,
+ { input : '[j]', output : 'testing' },
+ { input : '[7]', output : '&' }
+]
\ No newline at end of file
diff --git a/app/assets/javascripts/codepress/languages/xsl.css b/app/assets/javascripts/codepress/languages/xsl.css
new file mode 100644
index 0000000..32634b6
--- /dev/null
+++ b/app/assets/javascripts/codepress/languages/xsl.css
@@ -0,0 +1,15 @@
+/*
+ * CodePress color styles for HTML syntax highlighting
+ * By RJ Bruneel
+ */
+
+b {color:#000080;} /* tags */
+ins, ins b, ins s, ins em {color:gray;} /* comments */
+s, s b {color:#7777e4;} /* attribute values */
+a {color:#E67300;} /* links */
+u {color:#CC66CC;} /* forms */
+big {color:#db0000;} /* images */
+em, em b {color:#800080;} /* style */
+strong {color:#800000;} /* script */
+tt i {color:darkblue;font-weight:bold;} /* script reserved words */
+xsl {color:green;} /* xsl */
diff --git a/app/assets/javascripts/codepress/languages/xsl.js b/app/assets/javascripts/codepress/languages/xsl.js
new file mode 100644
index 0000000..b23d359
--- /dev/null
+++ b/app/assets/javascripts/codepress/languages/xsl.js
@@ -0,0 +1,103 @@
+/*
+ * CodePress regular expressions for XSL syntax highlighting
+ * By RJ Bruneel
+ */
+
+Language.syntax = [ // XSL
+ {
+ input : /(<[^!]*?>)/g,
+ output : '$1 ' // all tags
+ },{
+ input : /(<a.*?>|<\/a>)/g,
+ output : '$1 ' // links
+ },{
+ input : /(<img .*?>)/g,
+ output : '$1 ' // images
+ },{
+ input : /(<\/?(button|textarea|form|input|select|option|label).*?>)/g,
+ output : '$1 ' // forms
+ },{
+ input : /(<style.*?>)(.*?)(<\/style>)/g,
+ output : '$1 $2 $3 ' // style tags
+ },{
+ input : /(<script.*?>)(.*?)(<\/script>)/g,
+ output : '$1 $2 $3 ' // script tags
+ },{
+ input : /(<xsl.*?>|<\/xsl.*?>)/g,
+ output : '$1 ' // xsl
+ },{
+ input : /=(".*?")/g,
+ output : '=$1 ' // atributes double quote
+ },{
+ input : /=('.*?')/g,
+ output : '=$1 ' // atributes single quote
+ },{
+ input : /(<!--.*?-->.)/g,
+ output : '$1 ' // comments
+ },{
+ input : /\b(alert|window|document|break|continue|do|for|new|this|void|case|default|else|function|return|typeof|while|if|label|switch|var|with|catch|boolean|int|try|false|throws|null|true|goto)\b/g,
+ output : '$1 ' // script reserved words
+ }
+];
+
+Language.snippets = [
+ {input : 'aref', output : ' ' },
+ {input : 'h1', output : '$0 ' },
+ {input : 'h2', output : '$0 ' },
+ {input : 'h3', output : '$0 ' },
+ {input : 'h4', output : '$0 ' },
+ {input : 'h5', output : '$0 ' },
+ {input : 'h6', output : '$0 ' },
+ {input : 'html', output : '\n\t$0\n' },
+ {input : 'head', output : '\n\t \n\t$0 \n\t\n' },
+ {input : 'img', output : ' ' },
+ {input : 'input', output : ' ' },
+ {input : 'label', output : ' ' },
+ {input : 'legend', output : '\n\t$0\n ' },
+ {input : 'link', output : ' ' },
+ {input : 'base', output : ' ' },
+ {input : 'body', output : '\n\t$0\n' },
+ {input : 'css', output : ' ' },
+ {input : 'div', output : '\n\t$0\n
' },
+ {input : 'divid', output : '\n\t\n
' },
+ {input : 'dl', output : '\n\t\n\t\t$0\n\t \n\t \n ' },
+ {input : 'fieldset', output : '\n\t$0\n ' },
+ {input : 'form', output : '' },
+ {input : 'meta', output : ' ' },
+ {input : 'p', output : '$0
' },
+ {input : 'b', output : '$0 ' },
+ {input : 'li', output : '$0 ' },
+ {input : 'ul', output : '' },
+ {input : 'ol', output : '$0 ' },
+ {input : 'strong', output : '$0 ' },
+ {input : 'br', output : ' ' },
+ {input : 'script', output : '' },
+ {input : 'scriptsrc', output : '' },
+ {input : 'span', output : '$0 ' },
+ {input : 'table', output : '' },
+ {input : 'style', output : '' },
+ {input : 'xsl:stylesheet', output : '' },
+ {input : 'xsl:template', output : '$0 ' },
+ {input : 'xsl:for-each', output : ' ' },
+ {input : 'xsl:choose', output : '$0<\xsl:choose>' },
+ {input : 'xsl:param', output : ' ' },
+ {input : 'xsl:variable', output : ' ' },
+ {input : 'xsl:if', output : ' ' },
+ {input : 'xsl:when', output : ' ' },
+ {input : 'xsl:otherwise', output : '$0 ' },
+ {input : 'xsl:attribute', output : ' ' },
+ {input : 'xsl:value-of', output : ' ' },
+ {input : 'xsl:with-param', output : ' ' },
+ {input : 'xsl:call-template', output : '' }
+
+];
+
+Language.complete = [ // Auto complete only for 1 character
+ {input : '\'',output : '\'$0\'' },
+ {input : '"', output : '"$0"' },
+ {input : '(', output : '\($0\)' },
+ {input : '[', output : '\[$0\]' },
+ {input : '{', output : '{\n\t$0\n}' }
+];
+
+Language.shortcuts = [];
\ No newline at end of file
diff --git a/app/assets/javascripts/codepress/license.txt b/app/assets/javascripts/codepress/license.txt
new file mode 100644
index 0000000..81b55d9
--- /dev/null
+++ b/app/assets/javascripts/codepress/license.txt
@@ -0,0 +1,458 @@
+ GNU LESSER GENERAL PUBLIC LICENSE
+ Version 2.1, February 1999
+
+ Copyright (C) 1991, 1999 Free Software Foundation, Inc.
+ 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+[This is the first released version of the Lesser GPL. It also counts
+ as the successor of the GNU Library Public License, version 2, hence
+ the version number 2.1.]
+
+ Preamble
+
+ The licenses for most software are designed to take away your
+freedom to share and change it. By contrast, the GNU General Public
+Licenses are intended to guarantee your freedom to share and change
+free software--to make sure the software is free for all its users.
+
+ This license, the Lesser General Public License, applies to some
+specially designated software packages--typically libraries--of the
+Free Software Foundation and other authors who decide to use it. You
+can use it too, but we suggest you first think carefully about whether
+this license or the ordinary General Public License is the better
+strategy to use in any particular case, based on the explanations below.
+
+ When we speak of free software, we are referring to freedom of use,
+not price. Our General Public Licenses are designed to make sure that
+you have the freedom to distribute copies of free software (and charge
+for this service if you wish); that you receive source code or can get
+it if you want it; that you can change the software and use pieces of
+it in new free programs; and that you are informed that you can do
+these things.
+
+ To protect your rights, we need to make restrictions that forbid
+distributors to deny you these rights or to ask you to surrender these
+rights. These restrictions translate to certain responsibilities for
+you if you distribute copies of the library or if you modify it.
+
+ For example, if you distribute copies of the library, whether gratis
+or for a fee, you must give the recipients all the rights that we gave
+you. You must make sure that they, too, receive or can get the source
+code. If you link other code with the library, you must provide
+complete object files to the recipients, so that they can relink them
+with the library after making changes to the library and recompiling
+it. And you must show them these terms so they know their rights.
+
+ We protect your rights with a two-step method: (1) we copyright the
+library, and (2) we offer you this license, which gives you legal
+permission to copy, distribute and/or modify the library.
+
+ To protect each distributor, we want to make it very clear that
+there is no warranty for the free library. Also, if the library is
+modified by someone else and passed on, the recipients should know
+that what they have is not the original version, so that the original
+author's reputation will not be affected by problems that might be
+introduced by others.
+
+ Finally, software patents pose a constant threat to the existence of
+any free program. We wish to make sure that a company cannot
+effectively restrict the users of a free program by obtaining a
+restrictive license from a patent holder. Therefore, we insist that
+any patent license obtained for a version of the library must be
+consistent with the full freedom of use specified in this license.
+
+ Most GNU software, including some libraries, is covered by the
+ordinary GNU General Public License. This license, the GNU Lesser
+General Public License, applies to certain designated libraries, and
+is quite different from the ordinary General Public License. We use
+this license for certain libraries in order to permit linking those
+libraries into non-free programs.
+
+ When a program is linked with a library, whether statically or using
+a shared library, the combination of the two is legally speaking a
+combined work, a derivative of the original library. The ordinary
+General Public License therefore permits such linking only if the
+entire combination fits its criteria of freedom. The Lesser General
+Public License permits more lax criteria for linking other code with
+the library.
+
+ We call this license the "Lesser" General Public License because it
+does Less to protect the user's freedom than the ordinary General
+Public License. It also provides other free software developers Less
+of an advantage over competing non-free programs. These disadvantages
+are the reason we use the ordinary General Public License for many
+libraries. However, the Lesser license provides advantages in certain
+special circumstances.
+
+ For example, on rare occasions, there may be a special need to
+encourage the widest possible use of a certain library, so that it becomes
+a de-facto standard. To achieve this, non-free programs must be
+allowed to use the library. A more frequent case is that a free
+library does the same job as widely used non-free libraries. In this
+case, there is little to gain by limiting the free library to free
+software only, so we use the Lesser General Public License.
+
+ In other cases, permission to use a particular library in non-free
+programs enables a greater number of people to use a large body of
+free software. For example, permission to use the GNU C Library in
+non-free programs enables many more people to use the whole GNU
+operating system, as well as its variant, the GNU/Linux operating
+system.
+
+ Although the Lesser General Public License is Less protective of the
+users' freedom, it does ensure that the user of a program that is
+linked with the Library has the freedom and the wherewithal to run
+that program using a modified version of the Library.
+
+ The precise terms and conditions for copying, distribution and
+modification follow. Pay close attention to the difference between a
+"work based on the library" and a "work that uses the library". The
+former contains code derived from the library, whereas the latter must
+be combined with the library in order to run.
+
+ GNU LESSER GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. This License Agreement applies to any software library or other
+program which contains a notice placed by the copyright holder or
+other authorized party saying it may be distributed under the terms of
+this Lesser General Public License (also called "this License").
+Each licensee is addressed as "you".
+
+ A "library" means a collection of software functions and/or data
+prepared so as to be conveniently linked with application programs
+(which use some of those functions and data) to form executables.
+
+ The "Library", below, refers to any such software library or work
+which has been distributed under these terms. A "work based on the
+Library" means either the Library or any derivative work under
+copyright law: that is to say, a work containing the Library or a
+portion of it, either verbatim or with modifications and/or translated
+straightforwardly into another language. (Hereinafter, translation is
+included without limitation in the term "modification".)
+
+ "Source code" for a work means the preferred form of the work for
+making modifications to it. For a library, complete source code means
+all the source code for all modules it contains, plus any associated
+interface definition files, plus the scripts used to control compilation
+and installation of the library.
+
+ Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope. The act of
+running a program using the Library is not restricted, and output from
+such a program is covered only if its contents constitute a work based
+on the Library (independent of the use of the Library in a tool for
+writing it). Whether that is true depends on what the Library does
+and what the program that uses the Library does.
+
+ 1. You may copy and distribute verbatim copies of the Library's
+complete source code as you receive it, in any medium, provided that
+you conspicuously and appropriately publish on each copy an
+appropriate copyright notice and disclaimer of warranty; keep intact
+all the notices that refer to this License and to the absence of any
+warranty; and distribute a copy of this License along with the
+Library.
+
+ You may charge a fee for the physical act of transferring a copy,
+and you may at your option offer warranty protection in exchange for a
+fee.
+
+ 2. You may modify your copy or copies of the Library or any portion
+of it, thus forming a work based on the Library, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+ a) The modified work must itself be a software library.
+
+ b) You must cause the files modified to carry prominent notices
+ stating that you changed the files and the date of any change.
+
+ c) You must cause the whole of the work to be licensed at no
+ charge to all third parties under the terms of this License.
+
+ d) If a facility in the modified Library refers to a function or a
+ table of data to be supplied by an application program that uses
+ the facility, other than as an argument passed when the facility
+ is invoked, then you must make a good faith effort to ensure that,
+ in the event an application does not supply such function or
+ table, the facility still operates, and performs whatever part of
+ its purpose remains meaningful.
+
+ (For example, a function in a library to compute square roots has
+ a purpose that is entirely well-defined independent of the
+ application. Therefore, Subsection 2d requires that any
+ application-supplied function or table used by this function must
+ be optional: if the application does not supply it, the square
+ root function must still compute square roots.)
+
+These requirements apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the Library,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works. But when you
+distribute the same sections as part of a whole which is a work based
+on the Library, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote
+it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Library.
+
+In addition, mere aggregation of another work not based on the Library
+with the Library (or with a work based on the Library) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+ 3. You may opt to apply the terms of the ordinary GNU General Public
+License instead of this License to a given copy of the Library. To do
+this, you must alter all the notices that refer to this License, so
+that they refer to the ordinary GNU General Public License, version 2,
+instead of to this License. (If a newer version than version 2 of the
+ordinary GNU General Public License has appeared, then you can specify
+that version instead if you wish.) Do not make any other change in
+these notices.
+
+ Once this change is made in a given copy, it is irreversible for
+that copy, so the ordinary GNU General Public License applies to all
+subsequent copies and derivative works made from that copy.
+
+ This option is useful when you wish to copy part of the code of
+the Library into a program that is not a library.
+
+ 4. You may copy and distribute the Library (or a portion or
+derivative of it, under Section 2) in object code or executable form
+under the terms of Sections 1 and 2 above provided that you accompany
+it with the complete corresponding machine-readable source code, which
+must be distributed under the terms of Sections 1 and 2 above on a
+medium customarily used for software interchange.
+
+ If distribution of object code is made by offering access to copy
+from a designated place, then offering equivalent access to copy the
+source code from the same place satisfies the requirement to
+distribute the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+ 5. A program that contains no derivative of any portion of the
+Library, but is designed to work with the Library by being compiled or
+linked with it, is called a "work that uses the Library". Such a
+work, in isolation, is not a derivative work of the Library, and
+therefore falls outside the scope of this License.
+
+ However, linking a "work that uses the Library" with the Library
+creates an executable that is a derivative of the Library (because it
+contains portions of the Library), rather than a "work that uses the
+library". The executable is therefore covered by this License.
+Section 6 states terms for distribution of such executables.
+
+ When a "work that uses the Library" uses material from a header file
+that is part of the Library, the object code for the work may be a
+derivative work of the Library even though the source code is not.
+Whether this is true is especially significant if the work can be
+linked without the Library, or if the work is itself a library. The
+threshold for this to be true is not precisely defined by law.
+
+ If such an object file uses only numerical parameters, data
+structure layouts and accessors, and small macros and small inline
+functions (ten lines or less in length), then the use of the object
+file is unrestricted, regardless of whether it is legally a derivative
+work. (Executables containing this object code plus portions of the
+Library will still fall under Section 6.)
+
+ Otherwise, if the work is a derivative of the Library, you may
+distribute the object code for the work under the terms of Section 6.
+Any executables containing that work also fall under Section 6,
+whether or not they are linked directly with the Library itself.
+
+ 6. As an exception to the Sections above, you may also combine or
+link a "work that uses the Library" with the Library to produce a
+work containing portions of the Library, and distribute that work
+under terms of your choice, provided that the terms permit
+modification of the work for the customer's own use and reverse
+engineering for debugging such modifications.
+
+ You must give prominent notice with each copy of the work that the
+Library is used in it and that the Library and its use are covered by
+this License. You must supply a copy of this License. If the work
+during execution displays copyright notices, you must include the
+copyright notice for the Library among them, as well as a reference
+directing the user to the copy of this License. Also, you must do one
+of these things:
+
+ a) Accompany the work with the complete corresponding
+ machine-readable source code for the Library including whatever
+ changes were used in the work (which must be distributed under
+ Sections 1 and 2 above); and, if the work is an executable linked
+ with the Library, with the complete machine-readable "work that
+ uses the Library", as object code and/or source code, so that the
+ user can modify the Library and then relink to produce a modified
+ executable containing the modified Library. (It is understood
+ that the user who changes the contents of definitions files in the
+ Library will not necessarily be able to recompile the application
+ to use the modified definitions.)
+
+ b) Use a suitable shared library mechanism for linking with the
+ Library. A suitable mechanism is one that (1) uses at run time a
+ copy of the library already present on the user's computer system,
+ rather than copying library functions into the executable, and (2)
+ will operate properly with a modified version of the library, if
+ the user installs one, as long as the modified version is
+ interface-compatible with the version that the work was made with.
+
+ c) Accompany the work with a written offer, valid for at
+ least three years, to give the same user the materials
+ specified in Subsection 6a, above, for a charge no more
+ than the cost of performing this distribution.
+
+ d) If distribution of the work is made by offering access to copy
+ from a designated place, offer equivalent access to copy the above
+ specified materials from the same place.
+
+ e) Verify that the user has already received a copy of these
+ materials or that you have already sent this user a copy.
+
+ For an executable, the required form of the "work that uses the
+Library" must include any data and utility programs needed for
+reproducing the executable from it. However, as a special exception,
+the materials to be distributed need not include anything that is
+normally distributed (in either source or binary form) with the major
+components (compiler, kernel, and so on) of the operating system on
+which the executable runs, unless that component itself accompanies
+the executable.
+
+ It may happen that this requirement contradicts the license
+restrictions of other proprietary libraries that do not normally
+accompany the operating system. Such a contradiction means you cannot
+use both them and the Library together in an executable that you
+distribute.
+
+ 7. You may place library facilities that are a work based on the
+Library side-by-side in a single library together with other library
+facilities not covered by this License, and distribute such a combined
+library, provided that the separate distribution of the work based on
+the Library and of the other library facilities is otherwise
+permitted, and provided that you do these two things:
+
+ a) Accompany the combined library with a copy of the same work
+ based on the Library, uncombined with any other library
+ facilities. This must be distributed under the terms of the
+ Sections above.
+
+ b) Give prominent notice with the combined library of the fact
+ that part of it is a work based on the Library, and explaining
+ where to find the accompanying uncombined form of the same work.
+
+ 8. You may not copy, modify, sublicense, link with, or distribute
+the Library except as expressly provided under this License. Any
+attempt otherwise to copy, modify, sublicense, link with, or
+distribute the Library is void, and will automatically terminate your
+rights under this License. However, parties who have received copies,
+or rights, from you under this License will not have their licenses
+terminated so long as such parties remain in full compliance.
+
+ 9. You are not required to accept this License, since you have not
+signed it. However, nothing else grants you permission to modify or
+distribute the Library or its derivative works. These actions are
+prohibited by law if you do not accept this License. Therefore, by
+modifying or distributing the Library (or any work based on the
+Library), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Library or works based on it.
+
+ 10. Each time you redistribute the Library (or any work based on the
+Library), the recipient automatically receives a license from the
+original licensor to copy, distribute, link with or modify the Library
+subject to these terms and conditions. You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties with
+this License.
+
+ 11. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Library at all. For example, if a patent
+license would not permit royalty-free redistribution of the Library by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Library.
+
+If any portion of this section is held invalid or unenforceable under any
+particular circumstance, the balance of the section is intended to apply,
+and the section as a whole is intended to apply in other circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system which is
+implemented by public license practices. Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+ 12. If the distribution and/or use of the Library is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Library under this License may add
+an explicit geographical distribution limitation excluding those countries,
+so that distribution is permitted only in or among countries not thus
+excluded. In such case, this License incorporates the limitation as if
+written in the body of this License.
+
+ 13. The Free Software Foundation may publish revised and/or new
+versions of the Lesser General Public License from time to time.
+Such new versions will be similar in spirit to the present version,
+but may differ in detail to address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Library
+specifies a version number of this License which applies to it and
+"any later version", you have the option of following the terms and
+conditions either of that version or of any later version published by
+the Free Software Foundation. If the Library does not specify a
+license version number, you may choose any version ever published by
+the Free Software Foundation.
+
+ 14. If you wish to incorporate parts of the Library into other free
+programs whose distribution conditions are incompatible with these,
+write to the author to ask for permission. For software which is
+copyrighted by the Free Software Foundation, write to the Free
+Software Foundation; we sometimes make exceptions for this. Our
+decision will be guided by the two goals of preserving the free status
+of all derivatives of our free software and of promoting the sharing
+and reuse of software generally.
+
+ NO WARRANTY
+
+ 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
+WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
+EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
+OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
+KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
+LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
+THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+ 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
+WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
+AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
+FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
+CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
+LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
+RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
+FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
+SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGES.
+
+ END OF TERMS AND CONDITIONS
diff --git a/app/assets/javascripts/colorbox.js b/app/assets/javascripts/colorbox.js
new file mode 100644
index 0000000..51ad367
--- /dev/null
+++ b/app/assets/javascripts/colorbox.js
@@ -0,0 +1,814 @@
+// ColorBox v1.3.16 - a full featured, light-weight, customizable lightbox based on jQuery 1.3+
+// Copyright (c) 2011 Jack Moore - jack@colorpowered.com
+// Licensed under the MIT license: http://www.opensource.org/licenses/mit-license.php
+(function ($, document, window) {
+ var
+ // ColorBox Default Settings.
+ // See http://colorpowered.com/colorbox for details.
+ defaults = {
+ transition: "elastic",
+ speed: 300,
+ width: false,
+ initialWidth: "600",
+ innerWidth: false,
+ maxWidth: false,
+ height: false,
+ initialHeight: "450",
+ innerHeight: false,
+ maxHeight: false,
+ scalePhotos: true,
+ scrolling: true,
+ inline: false,
+ html: false,
+ iframe: false,
+ fastIframe: true,
+ photo: false,
+ href: false,
+ title: false,
+ rel: false,
+ opacity: 0.9,
+ preloading: true,
+ current: "image {current} of {total}",
+ previous: "previous",
+ next: "next",
+ close: "close",
+ open: false,
+ returnFocus: true,
+ loop: true,
+ slideshow: false,
+ slideshowAuto: true,
+ slideshowSpeed: 2500,
+ slideshowStart: "start slideshow",
+ slideshowStop: "stop slideshow",
+ onOpen: false,
+ onLoad: false,
+ onComplete: false,
+ onCleanup: false,
+ onClosed: false,
+ overlayClose: true,
+ escKey: true,
+ arrowKey: true
+ },
+
+ // Abstracting the HTML and event identifiers for easy rebranding
+ colorbox = 'colorbox',
+ prefix = 'cbox',
+
+ // Events
+ event_open = prefix + '_open',
+ event_load = prefix + '_load',
+ event_complete = prefix + '_complete',
+ event_cleanup = prefix + '_cleanup',
+ event_closed = prefix + '_closed',
+ event_purge = prefix + '_purge',
+
+ // Special Handling for IE
+ isIE = $.browser.msie && !$.support.opacity, // feature detection alone gave a false positive on at least one phone browser and on some development versions of Chrome.
+ isIE6 = isIE && $.browser.version < 7,
+ event_ie6 = prefix + '_IE6',
+
+ // Cached jQuery Object Variables
+ $overlay,
+ $box,
+ $wrap,
+ $content,
+ $topBorder,
+ $leftBorder,
+ $rightBorder,
+ $bottomBorder,
+ $related,
+ $window,
+ $loaded,
+ $loadingBay,
+ $loadingOverlay,
+ $title,
+ $current,
+ $slideshow,
+ $next,
+ $prev,
+ $close,
+ $groupControls,
+
+ // Variables for cached values or use across multiple functions
+ settings = {},
+ interfaceHeight,
+ interfaceWidth,
+ loadedHeight,
+ loadedWidth,
+ element,
+ index,
+ photo,
+ open,
+ active,
+ closing = false,
+
+ publicMethod,
+ boxElement = prefix + 'Element';
+
+ // ****************
+ // HELPER FUNCTIONS
+ // ****************
+
+ // jQuery object generator to reduce code size
+ function $div(id, cssText) {
+ var div = document.createElement('div');
+ if (id) {
+ div.id = prefix + id;
+ }
+ div.style.cssText = cssText || false;
+ return $(div);
+ }
+
+ // Convert % values to pixels
+ function setSize(size, dimension) {
+ dimension = dimension === 'x' ? $window.width() : $window.height();
+ return (typeof size === 'string') ? Math.round((/%/.test(size) ? (dimension / 100) * parseInt(size, 10) : parseInt(size, 10))) : size;
+ }
+
+ // Checks an href to see if it is a photo.
+ // There is a force photo option (photo: true) for hrefs that cannot be matched by this regex.
+ function isImage(url) {
+ return settings.photo || /\.(gif|png|jpg|jpeg|bmp)(?:\?([^#]*))?(?:#(\.*))?$/i.test(url);
+ }
+
+ // Assigns function results to their respective settings. This allows functions to be used as values.
+ function process(settings) {
+ for (var i in settings) {
+ if ($.isFunction(settings[i]) && i.substring(0, 2) !== 'on') { // checks to make sure the function isn't one of the callbacks, they will be handled at the appropriate time.
+ settings[i] = settings[i].call(element);
+ }
+ }
+ settings.rel = settings.rel || element.rel || 'nofollow';
+ settings.href = $.trim(settings.href || $(element).attr('href'));
+ settings.title = settings.title || element.title;
+ }
+
+ function trigger(event, callback) {
+ if (callback) {
+ callback.call(element);
+ }
+ $.event.trigger(event);
+ }
+
+ // Slideshow functionality
+ function slideshow() {
+ var
+ timeOut,
+ className = prefix + "Slideshow_",
+ click = "click." + prefix,
+ start,
+ stop,
+ clear;
+
+ if (settings.slideshow && $related[1]) {
+ start = function () {
+ $slideshow
+ .text(settings.slideshowStop)
+ .unbind(click)
+ .bind(event_complete, function () {
+ if (index < $related.length - 1 || settings.loop) {
+ timeOut = setTimeout(publicMethod.next, settings.slideshowSpeed);
+ }
+ })
+ .bind(event_load, function () {
+ clearTimeout(timeOut);
+ })
+ .one(click + ' ' + event_cleanup, stop);
+ $box.removeClass(className + "off").addClass(className + "on");
+ timeOut = setTimeout(publicMethod.next, settings.slideshowSpeed);
+ };
+
+ stop = function () {
+ clearTimeout(timeOut);
+ $slideshow
+ .text(settings.slideshowStart)
+ .unbind([event_complete, event_load, event_cleanup, click].join(' '))
+ .one(click, start);
+ $box.removeClass(className + "on").addClass(className + "off");
+ };
+
+ if (settings.slideshowAuto) {
+ start();
+ } else {
+ stop();
+ }
+ }
+ }
+
+ function launch(elem) {
+ if (!closing) {
+
+ element = elem;
+
+ process($.extend(settings, $.data(element, colorbox)));
+
+ $related = $(element);
+
+ index = 0;
+
+ if (settings.rel !== 'nofollow') {
+ $related = $('.' + boxElement).filter(function () {
+ var relRelated = $.data(this, colorbox).rel || this.rel;
+ return (relRelated === settings.rel);
+ });
+ index = $related.index(element);
+
+ // Check direct calls to ColorBox.
+ if (index === -1) {
+ $related = $related.add(element);
+ index = $related.length - 1;
+ }
+ }
+
+ if (!open) {
+ open = active = true; // Prevents the page-change action from queuing up if the visitor holds down the left or right keys.
+
+ $box.show();
+
+ if (settings.returnFocus) {
+ try {
+ element.blur();
+ $(element).one(event_closed, function () {
+ try {
+ this.focus();
+ } catch (e) {
+ // do nothing
+ }
+ });
+ } catch (e) {
+ // do nothing
+ }
+ }
+
+ // +settings.opacity avoids a problem in IE when using non-zero-prefixed-string-values, like '.5'
+ $overlay.css({"opacity": +settings.opacity, "cursor": settings.overlayClose ? "pointer" : "auto"}).show();
+
+ // Opens inital empty ColorBox prior to content being loaded.
+ settings.w = setSize(settings.initialWidth, 'x');
+ settings.h = setSize(settings.initialHeight, 'y');
+ publicMethod.position(0);
+
+ if (isIE6) {
+ $window.bind('resize.' + event_ie6 + ' scroll.' + event_ie6, function () {
+ $overlay.css({width: $window.width(), height: $window.height(), top: $window.scrollTop(), left: $window.scrollLeft()});
+ }).trigger('resize.' + event_ie6);
+ }
+
+ trigger(event_open, settings.onOpen);
+
+ $groupControls.add($title).hide();
+
+ $close.html(settings.close).show();
+ }
+
+ publicMethod.load(true);
+ }
+ }
+
+ // ****************
+ // PUBLIC FUNCTIONS
+ // Usage format: $.fn.colorbox.close();
+ // Usage from within an iframe: parent.$.fn.colorbox.close();
+ // ****************
+
+ publicMethod = $.fn[colorbox] = $[colorbox] = function (options, callback) {
+ var $this = this, autoOpen;
+
+ if (!$this[0] && $this.selector) { // if a selector was given and it didn't match any elements, go ahead and exit.
+ return $this;
+ }
+
+ options = options || {};
+
+ if (callback) {
+ options.onComplete = callback;
+ }
+
+ if (!$this[0] || $this.selector === undefined) { // detects $.colorbox() and $.fn.colorbox()
+ $this = $(' ');
+ options.open = true; // assume an immediate open
+ }
+
+ $this.each(function () {
+ $.data(this, colorbox, $.extend({}, $.data(this, colorbox) || defaults, options));
+ $(this).addClass(boxElement);
+ });
+
+ autoOpen = options.open;
+
+ if ($.isFunction(autoOpen)) {
+ autoOpen = autoOpen.call($this);
+ }
+
+ if (autoOpen) {
+ launch($this[0]);
+ }
+
+ return $this;
+ };
+
+ // Initialize ColorBox: store common calculations, preload the interface graphics, append the html.
+ // This preps colorbox for a speedy open when clicked, and lightens the burdon on the browser by only
+ // having to run once, instead of each time colorbox is opened.
+ publicMethod.init = function () {
+ // Create & Append jQuery Objects
+ $window = $(window);
+ $box = $div().attr({id: colorbox, 'class': isIE ? prefix + (isIE6 ? 'IE6' : 'IE') : ''});
+ $overlay = $div("Overlay", isIE6 ? 'position:absolute' : '').hide();
+
+ $wrap = $div("Wrapper");
+ $content = $div("Content").append(
+ $loaded = $div("LoadedContent", 'width:0; height:0; overflow:hidden'),
+ $loadingOverlay = $div("LoadingOverlay").add($div("LoadingGraphic")),
+ $title = $div("Title"),
+ $current = $div("Current"),
+ $next = $div("Next"),
+ $prev = $div("Previous"),
+ $slideshow = $div("Slideshow").bind(event_open, slideshow),
+ $close = $div("Close")
+ );
+ $wrap.append( // The 3x3 Grid that makes up ColorBox
+ $div().append(
+ $div("TopLeft"),
+ $topBorder = $div("TopCenter"),
+ $div("TopRight")
+ ),
+ $div(false, 'clear:left').append(
+ $leftBorder = $div("MiddleLeft"),
+ $content,
+ $rightBorder = $div("MiddleRight")
+ ),
+ $div(false, 'clear:left').append(
+ $div("BottomLeft"),
+ $bottomBorder = $div("BottomCenter"),
+ $div("BottomRight")
+ )
+ ).children().children().css({'float': 'left'});
+
+ $loadingBay = $div(false, 'position:absolute; width:9999px; visibility:hidden; display:none');
+
+ $('body').prepend($overlay, $box.append($wrap, $loadingBay));
+
+ $content.children()
+ .hover(function () {
+ $(this).addClass('hover');
+ }, function () {
+ $(this).removeClass('hover');
+ }).addClass('hover');
+
+ // Cache values needed for size calculations
+ interfaceHeight = $topBorder.height() + $bottomBorder.height() + $content.outerHeight(true) - $content.height();//Subtraction needed for IE6
+ interfaceWidth = $leftBorder.width() + $rightBorder.width() + $content.outerWidth(true) - $content.width();
+ loadedHeight = $loaded.outerHeight(true);
+ loadedWidth = $loaded.outerWidth(true);
+
+ // Setting padding to remove the need to do size conversions during the animation step.
+ $box.css({"padding-bottom": interfaceHeight, "padding-right": interfaceWidth}).hide();
+
+ // Setup button events.
+ $next.click(function () {
+ publicMethod.next();
+ });
+ $prev.click(function () {
+ publicMethod.prev();
+ });
+ $close.click(function () {
+ publicMethod.close();
+ });
+
+ $groupControls = $next.add($prev).add($current).add($slideshow);
+
+ // Adding the 'hover' class allowed the browser to load the hover-state
+ // background graphics. The class can now can be removed.
+ $content.children().removeClass('hover');
+
+ $('.' + boxElement).live('click', function (e) {
+ // checks to see if it was a non-left mouse-click and for clicks modified with ctrl, shift, or alt.
+ if (!((e.button !== 0 && typeof e.button !== 'undefined') || e.ctrlKey || e.shiftKey || e.altKey)) {
+ e.preventDefault();
+ launch(this);
+ }
+ });
+
+ $overlay.click(function () {
+ if (settings.overlayClose) {
+ publicMethod.close();
+ }
+ });
+
+ // Set Navigation Key Bindings
+ $(document).bind('keydown.' + prefix, function (e) {
+ var key = e.keyCode;
+ if (open && settings.escKey && key === 27) {
+ e.preventDefault();
+ publicMethod.close();
+ }
+ if (open && settings.arrowKey && $related[1]) {
+ if (key === 37) {
+ e.preventDefault();
+ $prev.click();
+ } else if (key === 39) {
+ e.preventDefault();
+ $next.click();
+ }
+ }
+ });
+ };
+
+ publicMethod.remove = function () {
+ $box.add($overlay).remove();
+ $('.' + boxElement).die('click').removeData(colorbox).removeClass(boxElement);
+ };
+
+ publicMethod.position = function (speed, loadedCallback) {
+ var
+ animate_speed,
+ // keeps the top and left positions within the browser's viewport.
+ posTop = Math.max(document.documentElement.clientHeight - settings.h - loadedHeight - interfaceHeight, 0) / 2 + $window.scrollTop(),
+ posLeft = Math.max($window.width() - settings.w - loadedWidth - interfaceWidth, 0) / 2 + $window.scrollLeft();
+
+ // setting the speed to 0 to reduce the delay between same-sized content.
+ animate_speed = ($box.width() === settings.w + loadedWidth && $box.height() === settings.h + loadedHeight) ? 0 : speed;
+
+ // this gives the wrapper plenty of breathing room so it's floated contents can move around smoothly,
+ // but it has to be shrank down around the size of div#colorbox when it's done. If not,
+ // it can invoke an obscure IE bug when using iframes.
+ $wrap[0].style.width = $wrap[0].style.height = "9999px";
+
+ function modalDimensions(that) {
+ // loading overlay height has to be explicitly set for IE6.
+ $topBorder[0].style.width = $bottomBorder[0].style.width = $content[0].style.width = that.style.width;
+ $loadingOverlay[0].style.height = $loadingOverlay[1].style.height = $content[0].style.height = $leftBorder[0].style.height = $rightBorder[0].style.height = that.style.height;
+ }
+
+ $box.dequeue().animate({width: settings.w + loadedWidth, height: settings.h + loadedHeight, top: posTop, left: posLeft}, {
+ duration: animate_speed,
+ complete: function () {
+ modalDimensions(this);
+
+ active = false;
+
+ // shrink the wrapper down to exactly the size of colorbox to avoid a bug in IE's iframe implementation.
+ $wrap[0].style.width = (settings.w + loadedWidth + interfaceWidth) + "px";
+ $wrap[0].style.height = (settings.h + loadedHeight + interfaceHeight) + "px";
+
+ if (loadedCallback) {
+ loadedCallback();
+ }
+ },
+ step: function () {
+ modalDimensions(this);
+ }
+ });
+ };
+
+ publicMethod.resize = function (options) {
+ if (open) {
+ options = options || {};
+
+ if (options.width) {
+ settings.w = setSize(options.width, 'x') - loadedWidth - interfaceWidth;
+ }
+ if (options.innerWidth) {
+ settings.w = setSize(options.innerWidth, 'x');
+ }
+ $loaded.css({width: settings.w});
+
+ if (options.height) {
+ settings.h = setSize(options.height, 'y') - loadedHeight - interfaceHeight;
+ }
+ if (options.innerHeight) {
+ settings.h = setSize(options.innerHeight, 'y');
+ }
+ if (!options.innerHeight && !options.height) {
+ var $child = $loaded.wrapInner("
").children(); // temporary wrapper to get an accurate estimate of just how high the total content should be.
+ settings.h = $child.height();
+ $child.replaceWith($child.children()); // ditch the temporary wrapper div used in height calculation
+ }
+ $loaded.css({height: settings.h});
+
+ publicMethod.position(settings.transition === "none" ? 0 : settings.speed);
+ }
+ };
+
+ publicMethod.prep = function (object) {
+ if (!open) {
+ return;
+ }
+
+ var speed = settings.transition === "none" ? 0 : settings.speed;
+
+ $window.unbind('resize.' + prefix);
+ $loaded.remove();
+ $loaded = $div('LoadedContent').html(object);
+
+ function getWidth() {
+ settings.w = settings.w || $loaded.width();
+ settings.w = settings.mw && settings.mw < settings.w ? settings.mw : settings.w;
+ return settings.w;
+ }
+ function getHeight() {
+ settings.h = settings.h || $loaded.height();
+ settings.h = settings.mh && settings.mh < settings.h ? settings.mh : settings.h;
+ return settings.h;
+ }
+
+ $loaded.hide()
+ .appendTo($loadingBay.show())// content has to be appended to the DOM for accurate size calculations.
+ .css({width: getWidth(), overflow: settings.scrolling ? 'auto' : 'hidden'})
+ .css({height: getHeight()})// sets the height independently from the width in case the new width influences the value of height.
+ .prependTo($content);
+
+ $loadingBay.hide();
+
+ // floating the IMG removes the bottom line-height and fixed a problem where IE miscalculates the width of the parent element as 100% of the document width.
+ //$(photo).css({'float': 'none', marginLeft: 'auto', marginRight: 'auto'});
+
+ $(photo).css({'float': 'none'});
+
+ // Hides SELECT elements in IE6 because they would otherwise sit on top of the overlay.
+ if (isIE6) {
+ $('select').not($box.find('select')).filter(function () {
+ return this.style.visibility !== 'hidden';
+ }).css({'visibility': 'hidden'}).one(event_cleanup, function () {
+ this.style.visibility = 'inherit';
+ });
+ }
+
+ function setPosition(s) {
+ publicMethod.position(s, function () {
+ var prev, prevSrc, next, nextSrc, total = $related.length, iframe, complete;
+
+ if (!open) {
+ return;
+ }
+
+ complete = function () {
+ $loadingOverlay.hide();
+ trigger(event_complete, settings.onComplete);
+ };
+
+ if (isIE) {
+ //This fadeIn helps the bicubic resampling to kick-in.
+ if (photo) {
+ $loaded.fadeIn(100);
+ }
+ }
+
+ $title.html(settings.title).add($loaded).show();
+
+ if (total > 1) { // handle grouping
+ if (typeof settings.current === "string") {
+ $current.html(settings.current.replace(/\{current\}/, index + 1).replace(/\{total\}/, total)).show();
+ }
+
+ $next[(settings.loop || index < total - 1) ? "show" : "hide"]().html(settings.next);
+ $prev[(settings.loop || index) ? "show" : "hide"]().html(settings.previous);
+
+ prev = index ? $related[index - 1] : $related[total - 1];
+ next = index < total - 1 ? $related[index + 1] : $related[0];
+
+ if (settings.slideshow) {
+ $slideshow.show();
+ }
+
+ // Preloads images within a rel group
+ if (settings.preloading) {
+ nextSrc = $.data(next, colorbox).href || next.href;
+ prevSrc = $.data(prev, colorbox).href || prev.href;
+
+ nextSrc = $.isFunction(nextSrc) ? nextSrc.call(next) : nextSrc;
+ prevSrc = $.isFunction(prevSrc) ? prevSrc.call(prev) : prevSrc;
+
+ if (isImage(nextSrc)) {
+ $(' ')[0].src = nextSrc;
+ }
+
+ if (isImage(prevSrc)) {
+ $(' ')[0].src = prevSrc;
+ }
+ }
+ } else {
+ $groupControls.hide();
+ }
+
+ if (settings.iframe) {
+ iframe = $('').addClass(prefix + 'Iframe')[0];
+
+ if (settings.fastIframe) {
+ complete();
+ } else {
+ $(iframe).load(complete);
+ }
+ iframe.name = prefix + (+new Date());
+ iframe.src = settings.href;
+
+ if (!settings.scrolling) {
+ iframe.scrolling = "no";
+ }
+
+ if (isIE) {
+ iframe.frameBorder=0;
+ iframe.allowTransparency = "true";
+ }
+
+ $(iframe).appendTo($loaded).one(event_purge, function () {
+ iframe.src = "//about:blank";
+ });
+ } else {
+ complete();
+ }
+
+ if (settings.transition === 'fade') {
+ $box.fadeTo(speed, 1, function () {
+ $box[0].style.filter = "";
+ });
+ } else {
+ $box[0].style.filter = "";
+ }
+
+ $window.bind('resize.' + prefix, function () {
+ publicMethod.position(0);
+ });
+ });
+ }
+
+ if (settings.transition === 'fade') {
+ $box.fadeTo(speed, 0, function () {
+ setPosition(0);
+ });
+ } else {
+ setPosition(speed);
+ }
+ };
+
+ publicMethod.load = function (launched) {
+ var href, setResize, prep = publicMethod.prep;
+
+ active = true;
+
+ photo = false;
+
+ element = $related[index];
+
+ if (!launched) {
+ process($.extend(settings, $.data(element, colorbox)));
+ }
+
+ trigger(event_purge);
+
+ trigger(event_load, settings.onLoad);
+
+ settings.h = settings.height ?
+ setSize(settings.height, 'y') - loadedHeight - interfaceHeight :
+ settings.innerHeight && setSize(settings.innerHeight, 'y');
+
+ settings.w = settings.width ?
+ setSize(settings.width, 'x') - loadedWidth - interfaceWidth :
+ settings.innerWidth && setSize(settings.innerWidth, 'x');
+
+ // Sets the minimum dimensions for use in image scaling
+ settings.mw = settings.w;
+ settings.mh = settings.h;
+
+ // Re-evaluate the minimum width and height based on maxWidth and maxHeight values.
+ // If the width or height exceed the maxWidth or maxHeight, use the maximum values instead.
+ if (settings.maxWidth) {
+ settings.mw = setSize(settings.maxWidth, 'x') - loadedWidth - interfaceWidth;
+ settings.mw = settings.w && settings.w < settings.mw ? settings.w : settings.mw;
+ }
+ if (settings.maxHeight) {
+ settings.mh = setSize(settings.maxHeight, 'y') - loadedHeight - interfaceHeight;
+ settings.mh = settings.h && settings.h < settings.mh ? settings.h : settings.mh;
+ }
+
+ href = settings.href;
+
+ $loadingOverlay.show();
+
+ if (settings.inline) {
+ // Inserts an empty placeholder where inline content is being pulled from.
+ // An event is bound to put inline content back when ColorBox closes or loads new content.
+ $div().hide().insertBefore($(href)[0]).one(event_purge, function () {
+ $(this).replaceWith($loaded.children());
+ });
+ prep($(href));
+ } else if (settings.iframe) {
+ // IFrame element won't be added to the DOM until it is ready to be displayed,
+ // to avoid problems with DOM-ready JS that might be trying to run in that iframe.
+ prep(" ");
+ } else if (settings.html) {
+ prep(settings.html);
+ } else if (isImage(href)) {
+ $(photo = new Image())
+ .addClass(prefix + 'Photo')
+ .error(function () {
+ settings.title = false;
+ prep($div('Error').text('This image could not be loaded'));
+ })
+ .load(function () {
+ var percent;
+ photo.onload = null; //stops animated gifs from firing the onload repeatedly.
+
+ if (settings.scalePhotos) {
+ setResize = function () {
+ photo.height -= photo.height * percent;
+ photo.width -= photo.width * percent;
+ };
+ if (settings.mw && photo.width > settings.mw) {
+ percent = (photo.width - settings.mw) / photo.width;
+ setResize();
+ }
+ if (settings.mh && photo.height > settings.mh) {
+ percent = (photo.height - settings.mh) / photo.height;
+ setResize();
+ }
+ }
+
+ if (settings.h) {
+ photo.style.marginTop = Math.max(settings.h - photo.height, 0) / 2 + 'px';
+ }
+
+ if ($related[1] && (index < $related.length - 1 || settings.loop)) {
+ photo.style.cursor = 'pointer';
+ photo.onclick = function () {
+ publicMethod.next();
+ };
+ }
+
+ if (isIE) {
+ photo.style.msInterpolationMode = 'bicubic';
+ }
+
+ setTimeout(function () { // A pause because Chrome will sometimes report a 0 by 0 size otherwise.
+ prep(photo);
+ }, 1);
+ });
+
+ setTimeout(function () { // A pause because Opera 10.6+ will sometimes not run the onload function otherwise.
+ photo.src = href;
+ }, 1);
+ } else if (href) {
+ $loadingBay.load(href, function (data, status, xhr) {
+ prep(status === 'error' ? $div('Error').text('Request unsuccessful: ' + xhr.statusText) : $(this).contents());
+ });
+ }
+ };
+
+ // Navigates to the next page/image in a set.
+ publicMethod.next = function () {
+ if (!active && $related[1] && (index < $related.length - 1 || settings.loop)) {
+ index = index < $related.length - 1 ? index + 1 : 0;
+ publicMethod.load();
+ }
+ };
+
+ publicMethod.prev = function () {
+ if (!active && $related[1] && (index || settings.loop)) {
+ index = index ? index - 1 : $related.length - 1;
+ publicMethod.load();
+ }
+ };
+
+ // Note: to use this within an iframe use the following format: parent.$.fn.colorbox.close();
+ publicMethod.close = function () {
+ if (open && !closing) {
+
+ closing = true;
+
+ open = false;
+
+ trigger(event_cleanup, settings.onCleanup);
+
+ $window.unbind('.' + prefix + ' .' + event_ie6);
+
+ $overlay.fadeTo(200, 0);
+
+ $box.stop().fadeTo(300, 0, function () {
+
+ $box.add($overlay).css({'opacity': 1, cursor: 'auto'}).hide();
+
+ trigger(event_purge);
+
+ $loaded.remove();
+
+ setTimeout(function () {
+ closing = false;
+ trigger(event_closed, settings.onClosed);
+ }, 1);
+ });
+ }
+ };
+
+ // A method for fetching the current element ColorBox is referencing.
+ // returns a jQuery object.
+ publicMethod.element = function () {
+ return $(element);
+ };
+
+ publicMethod.settings = defaults;
+
+ // Initializes ColorBox when the DOM has loaded
+ $(publicMethod.init);
+
+}(jQuery, document, this));
\ No newline at end of file
diff --git a/app/assets/javascripts/colorpicker-noosfero.js b/app/assets/javascripts/colorpicker-noosfero.js
new file mode 100644
index 0000000..6dbb8ae
--- /dev/null
+++ b/app/assets/javascripts/colorpicker-noosfero.js
@@ -0,0 +1,19 @@
+(function($) {
+
+ $('.colorpicker_field').live('click focus', function() {
+ $(this).ColorPicker({
+ livePreview: true,
+ onSubmit: function(hsb, hex, rgb, el) {
+ $(el).val(hex);
+ $(el).ColorPickerHide();
+ },
+ onBeforeShow: function () {
+ $(this).ColorPickerSetColor(this.value);
+ }
+ })
+ .bind('keyup', function(){
+ $(this).ColorPickerSetColor(this.value);
+ });
+ });
+
+})(jQuery);
diff --git a/app/assets/javascripts/colorpicker.js b/app/assets/javascripts/colorpicker.js
new file mode 100644
index 0000000..0c86bdd
--- /dev/null
+++ b/app/assets/javascripts/colorpicker.js
@@ -0,0 +1,484 @@
+/**
+ *
+ * Color picker
+ * Author: Stefan Petre www.eyecon.ro
+ *
+ * Dual licensed under the MIT and GPL licenses
+ *
+ */
+(function ($) {
+ var ColorPicker = function () {
+ var
+ ids = {},
+ inAction,
+ charMin = 65,
+ visible,
+ tpl = '',
+ defaults = {
+ eventName: 'click',
+ onShow: function () {},
+ onBeforeShow: function(){},
+ onHide: function () {},
+ onChange: function () {},
+ onSubmit: function () {},
+ color: 'ff0000',
+ livePreview: true,
+ flat: false
+ },
+ fillRGBFields = function (hsb, cal) {
+ var rgb = HSBToRGB(hsb);
+ $(cal).data('colorpicker').fields
+ .eq(1).val(rgb.r).end()
+ .eq(2).val(rgb.g).end()
+ .eq(3).val(rgb.b).end();
+ },
+ fillHSBFields = function (hsb, cal) {
+ $(cal).data('colorpicker').fields
+ .eq(4).val(hsb.h).end()
+ .eq(5).val(hsb.s).end()
+ .eq(6).val(hsb.b).end();
+ },
+ fillHexFields = function (hsb, cal) {
+ $(cal).data('colorpicker').fields
+ .eq(0).val(HSBToHex(hsb)).end();
+ },
+ setSelector = function (hsb, cal) {
+ $(cal).data('colorpicker').selector.css('backgroundColor', '#' + HSBToHex({h: hsb.h, s: 100, b: 100}));
+ $(cal).data('colorpicker').selectorIndic.css({
+ left: parseInt(150 * hsb.s/100, 10),
+ top: parseInt(150 * (100-hsb.b)/100, 10)
+ });
+ },
+ setHue = function (hsb, cal) {
+ $(cal).data('colorpicker').hue.css('top', parseInt(150 - 150 * hsb.h/360, 10));
+ },
+ setCurrentColor = function (hsb, cal) {
+ $(cal).data('colorpicker').currentColor.css('backgroundColor', '#' + HSBToHex(hsb));
+ },
+ setNewColor = function (hsb, cal) {
+ $(cal).data('colorpicker').newColor.css('backgroundColor', '#' + HSBToHex(hsb));
+ },
+ keyDown = function (ev) {
+ var pressedKey = ev.charCode || ev.keyCode || -1;
+ if ((pressedKey > charMin && pressedKey <= 90) || pressedKey == 32) {
+ return false;
+ }
+ var cal = $(this).parent().parent();
+ if (cal.data('colorpicker').livePreview === true) {
+ change.apply(this);
+ }
+ },
+ change = function (ev) {
+ var cal = $(this).parent().parent(), col;
+ if (this.parentNode.className.indexOf('_hex') > 0) {
+ cal.data('colorpicker').color = col = HexToHSB(fixHex(this.value));
+ } else if (this.parentNode.className.indexOf('_hsb') > 0) {
+ cal.data('colorpicker').color = col = fixHSB({
+ h: parseInt(cal.data('colorpicker').fields.eq(4).val(), 10),
+ s: parseInt(cal.data('colorpicker').fields.eq(5).val(), 10),
+ b: parseInt(cal.data('colorpicker').fields.eq(6).val(), 10)
+ });
+ } else {
+ cal.data('colorpicker').color = col = RGBToHSB(fixRGB({
+ r: parseInt(cal.data('colorpicker').fields.eq(1).val(), 10),
+ g: parseInt(cal.data('colorpicker').fields.eq(2).val(), 10),
+ b: parseInt(cal.data('colorpicker').fields.eq(3).val(), 10)
+ }));
+ }
+ if (ev) {
+ fillRGBFields(col, cal.get(0));
+ fillHexFields(col, cal.get(0));
+ fillHSBFields(col, cal.get(0));
+ }
+ setSelector(col, cal.get(0));
+ setHue(col, cal.get(0));
+ setNewColor(col, cal.get(0));
+ cal.data('colorpicker').onChange.apply(cal, [col, HSBToHex(col), HSBToRGB(col)]);
+ },
+ blur = function (ev) {
+ var cal = $(this).parent().parent();
+ cal.data('colorpicker').fields.parent().removeClass('colorpicker_focus');
+ },
+ focus = function () {
+ charMin = this.parentNode.className.indexOf('_hex') > 0 ? 70 : 65;
+ $(this).parent().parent().data('colorpicker').fields.parent().removeClass('colorpicker_focus');
+ $(this).parent().addClass('colorpicker_focus');
+ },
+ downIncrement = function (ev) {
+ var field = $(this).parent().find('input').focus();
+ var current = {
+ el: $(this).parent().addClass('colorpicker_slider'),
+ max: this.parentNode.className.indexOf('_hsb_h') > 0 ? 360 : (this.parentNode.className.indexOf('_hsb') > 0 ? 100 : 255),
+ y: ev.pageY,
+ field: field,
+ val: parseInt(field.val(), 10),
+ preview: $(this).parent().parent().data('colorpicker').livePreview
+ };
+ $(document).bind('mouseup', current, upIncrement);
+ $(document).bind('mousemove', current, moveIncrement);
+ },
+ moveIncrement = function (ev) {
+ ev.data.field.val(Math.max(0, Math.min(ev.data.max, parseInt(ev.data.val + ev.pageY - ev.data.y, 10))));
+ if (ev.data.preview) {
+ change.apply(ev.data.field.get(0), [true]);
+ }
+ return false;
+ },
+ upIncrement = function (ev) {
+ change.apply(ev.data.field.get(0), [true]);
+ ev.data.el.removeClass('colorpicker_slider').find('input').focus();
+ $(document).unbind('mouseup', upIncrement);
+ $(document).unbind('mousemove', moveIncrement);
+ return false;
+ },
+ downHue = function (ev) {
+ var current = {
+ cal: $(this).parent(),
+ y: $(this).offset().top
+ };
+ current.preview = current.cal.data('colorpicker').livePreview;
+ $(document).bind('mouseup', current, upHue);
+ $(document).bind('mousemove', current, moveHue);
+ },
+ moveHue = function (ev) {
+ change.apply(
+ ev.data.cal.data('colorpicker')
+ .fields
+ .eq(4)
+ .val(parseInt(360*(150 - Math.max(0,Math.min(150,(ev.pageY - ev.data.y))))/150, 10))
+ .get(0),
+ [ev.data.preview]
+ );
+ return false;
+ },
+ upHue = function (ev) {
+ fillRGBFields(ev.data.cal.data('colorpicker').color, ev.data.cal.get(0));
+ fillHexFields(ev.data.cal.data('colorpicker').color, ev.data.cal.get(0));
+ $(document).unbind('mouseup', upHue);
+ $(document).unbind('mousemove', moveHue);
+ return false;
+ },
+ downSelector = function (ev) {
+ var current = {
+ cal: $(this).parent(),
+ pos: $(this).offset()
+ };
+ current.preview = current.cal.data('colorpicker').livePreview;
+ $(document).bind('mouseup', current, upSelector);
+ $(document).bind('mousemove', current, moveSelector);
+ },
+ moveSelector = function (ev) {
+ change.apply(
+ ev.data.cal.data('colorpicker')
+ .fields
+ .eq(6)
+ .val(parseInt(100*(150 - Math.max(0,Math.min(150,(ev.pageY - ev.data.pos.top))))/150, 10))
+ .end()
+ .eq(5)
+ .val(parseInt(100*(Math.max(0,Math.min(150,(ev.pageX - ev.data.pos.left))))/150, 10))
+ .get(0),
+ [ev.data.preview]
+ );
+ return false;
+ },
+ upSelector = function (ev) {
+ fillRGBFields(ev.data.cal.data('colorpicker').color, ev.data.cal.get(0));
+ fillHexFields(ev.data.cal.data('colorpicker').color, ev.data.cal.get(0));
+ $(document).unbind('mouseup', upSelector);
+ $(document).unbind('mousemove', moveSelector);
+ return false;
+ },
+ enterSubmit = function (ev) {
+ $(this).addClass('colorpicker_focus');
+ },
+ leaveSubmit = function (ev) {
+ $(this).removeClass('colorpicker_focus');
+ },
+ clickSubmit = function (ev) {
+ var cal = $(this).parent();
+ var col = cal.data('colorpicker').color;
+ cal.data('colorpicker').origColor = col;
+ setCurrentColor(col, cal.get(0));
+ cal.data('colorpicker').onSubmit(col, HSBToHex(col), HSBToRGB(col), cal.data('colorpicker').el);
+ },
+ show = function (ev) {
+ var cal = $('#' + $(this).data('colorpickerId'));
+ cal.data('colorpicker').onBeforeShow.apply(this, [cal.get(0)]);
+ var pos = $(this).offset();
+ var viewPort = getViewport();
+ var top = pos.top + this.offsetHeight;
+ var left = pos.left;
+ if (top + 176 > viewPort.t + viewPort.h) {
+ top -= this.offsetHeight + 176;
+ }
+ if (left + 356 > viewPort.l + viewPort.w) {
+ left -= 356;
+ }
+ cal.css({left: left + 'px', top: top + 'px'});
+ if (cal.data('colorpicker').onShow.apply(this, [cal.get(0)]) != false) {
+ cal.show();
+ }
+ $(document).bind('mousedown', {cal: cal}, hide);
+ return false;
+ },
+ hide = function (ev) {
+ if (!isChildOf(ev.data.cal.get(0), ev.target, ev.data.cal.get(0))) {
+ if (ev.data.cal.data('colorpicker').onHide.apply(this, [ev.data.cal.get(0)]) != false) {
+ ev.data.cal.hide();
+ }
+ $(document).unbind('mousedown', hide);
+ }
+ },
+ isChildOf = function(parentEl, el, container) {
+ if (parentEl == el) {
+ return true;
+ }
+ if (parentEl.contains) {
+ return parentEl.contains(el);
+ }
+ if ( parentEl.compareDocumentPosition ) {
+ return !!(parentEl.compareDocumentPosition(el) & 16);
+ }
+ var prEl = el.parentNode;
+ while(prEl && prEl != container) {
+ if (prEl == parentEl)
+ return true;
+ prEl = prEl.parentNode;
+ }
+ return false;
+ },
+ getViewport = function () {
+ var m = document.compatMode == 'CSS1Compat';
+ return {
+ l : window.pageXOffset || (m ? document.documentElement.scrollLeft : document.body.scrollLeft),
+ t : window.pageYOffset || (m ? document.documentElement.scrollTop : document.body.scrollTop),
+ w : window.innerWidth || (m ? document.documentElement.clientWidth : document.body.clientWidth),
+ h : window.innerHeight || (m ? document.documentElement.clientHeight : document.body.clientHeight)
+ };
+ },
+ fixHSB = function (hsb) {
+ return {
+ h: Math.min(360, Math.max(0, hsb.h)),
+ s: Math.min(100, Math.max(0, hsb.s)),
+ b: Math.min(100, Math.max(0, hsb.b))
+ };
+ },
+ fixRGB = function (rgb) {
+ return {
+ r: Math.min(255, Math.max(0, rgb.r)),
+ g: Math.min(255, Math.max(0, rgb.g)),
+ b: Math.min(255, Math.max(0, rgb.b))
+ };
+ },
+ fixHex = function (hex) {
+ var len = 6 - hex.length;
+ if (len > 0) {
+ var o = [];
+ for (var i=0; i -1) ? hex.substring(1) : hex), 16);
+ return {r: hex >> 16, g: (hex & 0x00FF00) >> 8, b: (hex & 0x0000FF)};
+ },
+ HexToHSB = function (hex) {
+ return RGBToHSB(HexToRGB(hex));
+ },
+ RGBToHSB = function (rgb) {
+ var hsb = {
+ h: 0,
+ s: 0,
+ b: 0
+ };
+ var min = Math.min(rgb.r, rgb.g, rgb.b);
+ var max = Math.max(rgb.r, rgb.g, rgb.b);
+ var delta = max - min;
+ hsb.b = max;
+ if (max != 0) {
+
+ }
+ hsb.s = max != 0 ? 255 * delta / max : 0;
+ if (hsb.s != 0) {
+ if (rgb.r == max) {
+ hsb.h = (rgb.g - rgb.b) / delta;
+ } else if (rgb.g == max) {
+ hsb.h = 2 + (rgb.b - rgb.r) / delta;
+ } else {
+ hsb.h = 4 + (rgb.r - rgb.g) / delta;
+ }
+ } else {
+ hsb.h = -1;
+ }
+ hsb.h *= 60;
+ if (hsb.h < 0) {
+ hsb.h += 360;
+ }
+ hsb.s *= 100/255;
+ hsb.b *= 100/255;
+ return hsb;
+ },
+ HSBToRGB = function (hsb) {
+ var rgb = {};
+ var h = Math.round(hsb.h);
+ var s = Math.round(hsb.s*255/100);
+ var v = Math.round(hsb.b*255/100);
+ if(s == 0) {
+ rgb.r = rgb.g = rgb.b = v;
+ } else {
+ var t1 = v;
+ var t2 = (255-s)*v/255;
+ var t3 = (t1-t2)*(h%60)/60;
+ if(h==360) h = 0;
+ if(h<60) {rgb.r=t1; rgb.b=t2; rgb.g=t2+t3}
+ else if(h<120) {rgb.g=t1; rgb.b=t2; rgb.r=t1-t3}
+ else if(h<180) {rgb.g=t1; rgb.r=t2; rgb.b=t2+t3}
+ else if(h<240) {rgb.b=t1; rgb.r=t2; rgb.g=t1-t3}
+ else if(h<300) {rgb.b=t1; rgb.g=t2; rgb.r=t2+t3}
+ else if(h<360) {rgb.r=t1; rgb.g=t2; rgb.b=t1-t3}
+ else {rgb.r=0; rgb.g=0; rgb.b=0}
+ }
+ return {r:Math.round(rgb.r), g:Math.round(rgb.g), b:Math.round(rgb.b)};
+ },
+ RGBToHex = function (rgb) {
+ var hex = [
+ rgb.r.toString(16),
+ rgb.g.toString(16),
+ rgb.b.toString(16)
+ ];
+ $.each(hex, function (nr, val) {
+ if (val.length == 1) {
+ hex[nr] = '0' + val;
+ }
+ });
+ return hex.join('');
+ },
+ HSBToHex = function (hsb) {
+ return RGBToHex(HSBToRGB(hsb));
+ },
+ restoreOriginal = function () {
+ var cal = $(this).parent();
+ var col = cal.data('colorpicker').origColor;
+ cal.data('colorpicker').color = col;
+ fillRGBFields(col, cal.get(0));
+ fillHexFields(col, cal.get(0));
+ fillHSBFields(col, cal.get(0));
+ setSelector(col, cal.get(0));
+ setHue(col, cal.get(0));
+ setNewColor(col, cal.get(0));
+ };
+ return {
+ init: function (opt) {
+ opt = $.extend({}, defaults, opt||{});
+ if (typeof opt.color == 'string') {
+ opt.color = HexToHSB(opt.color);
+ } else if (opt.color.r != undefined && opt.color.g != undefined && opt.color.b != undefined) {
+ opt.color = RGBToHSB(opt.color);
+ } else if (opt.color.h != undefined && opt.color.s != undefined && opt.color.b != undefined) {
+ opt.color = fixHSB(opt.color);
+ } else {
+ return this;
+ }
+ return this.each(function () {
+ if (!$(this).data('colorpickerId')) {
+ var options = $.extend({}, opt);
+ options.origColor = opt.color;
+ var id = 'collorpicker_' + parseInt(Math.random() * 1000);
+ $(this).data('colorpickerId', id);
+ var cal = $(tpl).attr('id', id);
+ if (options.flat) {
+ cal.appendTo(this).show();
+ } else {
+ cal.appendTo(document.body);
+ }
+ options.fields = cal
+ .find('input')
+ .bind('keyup', keyDown)
+ .bind('change', change)
+ .bind('blur', blur)
+ .bind('focus', focus);
+ cal
+ .find('span').bind('mousedown', downIncrement).end()
+ .find('>div.colorpicker_current_color').bind('click', restoreOriginal);
+ options.selector = cal.find('div.colorpicker_color').bind('mousedown', downSelector);
+ options.selectorIndic = options.selector.find('div div');
+ options.el = this;
+ options.hue = cal.find('div.colorpicker_hue div');
+ cal.find('div.colorpicker_hue').bind('mousedown', downHue);
+ options.newColor = cal.find('div.colorpicker_new_color');
+ options.currentColor = cal.find('div.colorpicker_current_color');
+ cal.data('colorpicker', options);
+ cal.find('div.colorpicker_submit')
+ .bind('mouseenter', enterSubmit)
+ .bind('mouseleave', leaveSubmit)
+ .bind('click', clickSubmit);
+ fillRGBFields(options.color, cal.get(0));
+ fillHSBFields(options.color, cal.get(0));
+ fillHexFields(options.color, cal.get(0));
+ setHue(options.color, cal.get(0));
+ setSelector(options.color, cal.get(0));
+ setCurrentColor(options.color, cal.get(0));
+ setNewColor(options.color, cal.get(0));
+ if (options.flat) {
+ cal.css({
+ position: 'relative',
+ display: 'block'
+ });
+ } else {
+ $(this).bind(options.eventName, show);
+ }
+ }
+ });
+ },
+ showPicker: function() {
+ return this.each( function () {
+ if ($(this).data('colorpickerId')) {
+ show.apply(this);
+ }
+ });
+ },
+ hidePicker: function() {
+ return this.each( function () {
+ if ($(this).data('colorpickerId')) {
+ $('#' + $(this).data('colorpickerId')).hide();
+ }
+ });
+ },
+ setColor: function(col) {
+ if (typeof col == 'string') {
+ col = HexToHSB(col);
+ } else if (col.r != undefined && col.g != undefined && col.b != undefined) {
+ col = RGBToHSB(col);
+ } else if (col.h != undefined && col.s != undefined && col.b != undefined) {
+ col = fixHSB(col);
+ } else {
+ return this;
+ }
+ return this.each(function(){
+ if ($(this).data('colorpickerId')) {
+ var cal = $('#' + $(this).data('colorpickerId'));
+ cal.data('colorpicker').color = col;
+ cal.data('colorpicker').origColor = col;
+ fillRGBFields(col, cal.get(0));
+ fillHSBFields(col, cal.get(0));
+ fillHexFields(col, cal.get(0));
+ setHue(col, cal.get(0));
+ setSelector(col, cal.get(0));
+ setCurrentColor(col, cal.get(0));
+ setNewColor(col, cal.get(0));
+ }
+ });
+ }
+ };
+ }();
+ $.fn.extend({
+ ColorPicker: ColorPicker.init,
+ ColorPickerHide: ColorPicker.hidePicker,
+ ColorPickerShow: ColorPicker.showPicker,
+ ColorPickerSetColor: ColorPicker.setColor
+ });
+})(jQuery)
diff --git a/app/assets/javascripts/controls.js b/app/assets/javascripts/controls.js
new file mode 100644
index 0000000..5aaf0bb
--- /dev/null
+++ b/app/assets/javascripts/controls.js
@@ -0,0 +1,963 @@
+// Copyright (c) 2005-2008 Thomas Fuchs (http://script.aculo.us, http://mir.aculo.us)
+// (c) 2005-2007 Ivan Krstic (http://blogs.law.harvard.edu/ivan)
+// (c) 2005-2007 Jon Tirsen (http://www.tirsen.com)
+// Contributors:
+// Richard Livsey
+// Rahul Bhargava
+// Rob Wills
+//
+// script.aculo.us is freely distributable under the terms of an MIT-style license.
+// For details, see the script.aculo.us web site: http://script.aculo.us/
+
+// Autocompleter.Base handles all the autocompletion functionality
+// that's independent of the data source for autocompletion. This
+// includes drawing the autocompletion menu, observing keyboard
+// and mouse events, and similar.
+//
+// Specific autocompleters need to provide, at the very least,
+// a getUpdatedChoices function that will be invoked every time
+// the text inside the monitored textbox changes. This method
+// should get the text for which to provide autocompletion by
+// invoking this.getToken(), NOT by directly accessing
+// this.element.value. This is to allow incremental tokenized
+// autocompletion. Specific auto-completion logic (AJAX, etc)
+// belongs in getUpdatedChoices.
+//
+// Tokenized incremental autocompletion is enabled automatically
+// when an autocompleter is instantiated with the 'tokens' option
+// in the options parameter, e.g.:
+// new Ajax.Autocompleter('id','upd', '/url/', { tokens: ',' });
+// will incrementally autocomplete with a comma as the token.
+// Additionally, ',' in the above example can be replaced with
+// a token array, e.g. { tokens: [',', '\n'] } which
+// enables autocompletion on multiple tokens. This is most
+// useful when one of the tokens is \n (a newline), as it
+// allows smart autocompletion after linebreaks.
+
+if(typeof Effect == 'undefined')
+ throw("controls.js requires including script.aculo.us' effects.js library");
+
+var Autocompleter = { }
+Autocompleter.Base = Class.create({
+ baseInitialize: function(element, update, options) {
+ element = $(element)
+ this.element = element;
+ this.update = $(update);
+ this.hasFocus = false;
+ this.changed = false;
+ this.active = false;
+ this.index = 0;
+ this.entryCount = 0;
+ this.oldElementValue = this.element.value;
+
+ if(this.setOptions)
+ this.setOptions(options);
+ else
+ this.options = options || { };
+
+ this.options.paramName = this.options.paramName || this.element.name;
+ this.options.tokens = this.options.tokens || [];
+ this.options.frequency = this.options.frequency || 0.4;
+ this.options.minChars = this.options.minChars || 1;
+ this.options.onShow = this.options.onShow ||
+ function(element, update){
+ if(!update.style.position || update.style.position=='absolute') {
+ update.style.position = 'absolute';
+ Position.clone(element, update, {
+ setHeight: false,
+ offsetTop: element.offsetHeight
+ });
+ }
+ Effect.Appear(update,{duration:0.15});
+ };
+ this.options.onHide = this.options.onHide ||
+ function(element, update){ new Effect.Fade(update,{duration:0.15}) };
+
+ if(typeof(this.options.tokens) == 'string')
+ this.options.tokens = new Array(this.options.tokens);
+ // Force carriage returns as token delimiters anyway
+ if (!this.options.tokens.include('\n'))
+ this.options.tokens.push('\n');
+
+ this.observer = null;
+
+ this.element.setAttribute('autocomplete','off');
+
+ Element.hide(this.update);
+
+ Event.observe(this.element, 'blur', this.onBlur.bindAsEventListener(this));
+ Event.observe(this.element, 'keydown', this.onKeyPress.bindAsEventListener(this));
+ },
+
+ show: function() {
+ if(Element.getStyle(this.update, 'display')=='none') this.options.onShow(this.element, this.update);
+ if(!this.iefix &&
+ (Prototype.Browser.IE) &&
+ (Element.getStyle(this.update, 'position')=='absolute')) {
+ new Insertion.After(this.update,
+ '');
+ this.iefix = $(this.update.id+'_iefix');
+ }
+ if(this.iefix) setTimeout(this.fixIEOverlapping.bind(this), 50);
+ },
+
+ fixIEOverlapping: function() {
+ Position.clone(this.update, this.iefix, {setTop:(!this.update.style.height)});
+ this.iefix.style.zIndex = 1;
+ this.update.style.zIndex = 2;
+ Element.show(this.iefix);
+ },
+
+ hide: function() {
+ this.stopIndicator();
+ if(Element.getStyle(this.update, 'display')!='none') this.options.onHide(this.element, this.update);
+ if(this.iefix) Element.hide(this.iefix);
+ },
+
+ startIndicator: function() {
+ if(this.options.indicator) Element.show(this.options.indicator);
+ },
+
+ stopIndicator: function() {
+ if(this.options.indicator) Element.hide(this.options.indicator);
+ },
+
+ onKeyPress: function(event) {
+ if(this.active)
+ switch(event.keyCode) {
+ case Event.KEY_TAB:
+ case Event.KEY_RETURN:
+ this.selectEntry();
+ Event.stop(event);
+ case Event.KEY_ESC:
+ this.hide();
+ this.active = false;
+ Event.stop(event);
+ return;
+ case Event.KEY_LEFT:
+ case Event.KEY_RIGHT:
+ return;
+ case Event.KEY_UP:
+ this.markPrevious();
+ this.render();
+ Event.stop(event);
+ return;
+ case Event.KEY_DOWN:
+ this.markNext();
+ this.render();
+ Event.stop(event);
+ return;
+ }
+ else
+ if(event.keyCode==Event.KEY_TAB || event.keyCode==Event.KEY_RETURN ||
+ (Prototype.Browser.WebKit > 0 && event.keyCode == 0)) return;
+
+ this.changed = true;
+ this.hasFocus = true;
+
+ if(this.observer) clearTimeout(this.observer);
+ this.observer =
+ setTimeout(this.onObserverEvent.bind(this), this.options.frequency*1000);
+ },
+
+ activate: function() {
+ this.changed = false;
+ this.hasFocus = true;
+ this.getUpdatedChoices();
+ },
+
+ onHover: function(event) {
+ var element = Event.findElement(event, 'LI');
+ if(this.index != element.autocompleteIndex)
+ {
+ this.index = element.autocompleteIndex;
+ this.render();
+ }
+ Event.stop(event);
+ },
+
+ onClick: function(event) {
+ var element = Event.findElement(event, 'LI');
+ this.index = element.autocompleteIndex;
+ this.selectEntry();
+ this.hide();
+ },
+
+ onBlur: function(event) {
+ // needed to make click events working
+ setTimeout(this.hide.bind(this), 250);
+ this.hasFocus = false;
+ this.active = false;
+ },
+
+ render: function() {
+ if(this.entryCount > 0) {
+ for (var i = 0; i < this.entryCount; i++)
+ this.index==i ?
+ Element.addClassName(this.getEntry(i),"selected") :
+ Element.removeClassName(this.getEntry(i),"selected");
+ if(this.hasFocus) {
+ this.show();
+ this.active = true;
+ }
+ } else {
+ this.active = false;
+ this.hide();
+ }
+ },
+
+ markPrevious: function() {
+ if(this.index > 0) this.index--
+ else this.index = this.entryCount-1;
+ this.getEntry(this.index).scrollIntoView(true);
+ },
+
+ markNext: function() {
+ if(this.index < this.entryCount-1) this.index++
+ else this.index = 0;
+ this.getEntry(this.index).scrollIntoView(false);
+ },
+
+ getEntry: function(index) {
+ return this.update.firstChild.childNodes[index];
+ },
+
+ getCurrentEntry: function() {
+ return this.getEntry(this.index);
+ },
+
+ selectEntry: function() {
+ this.active = false;
+ this.updateElement(this.getCurrentEntry());
+ },
+
+ updateElement: function(selectedElement) {
+ if (this.options.updateElement) {
+ this.options.updateElement(selectedElement);
+ return;
+ }
+ var value = '';
+ if (this.options.select) {
+ var nodes = $(selectedElement).select('.' + this.options.select) || [];
+ if(nodes.length>0) value = Element.collectTextNodes(nodes[0], this.options.select);
+ } else
+ value = Element.collectTextNodesIgnoreClass(selectedElement, 'informal');
+
+ var bounds = this.getTokenBounds();
+ if (bounds[0] != -1) {
+ var newValue = this.element.value.substr(0, bounds[0]);
+ var whitespace = this.element.value.substr(bounds[0]).match(/^\s+/);
+ if (whitespace)
+ newValue += whitespace[0];
+ this.element.value = newValue + value + this.element.value.substr(bounds[1]);
+ } else {
+ this.element.value = value;
+ }
+ this.oldElementValue = this.element.value;
+ this.element.focus();
+
+ if (this.options.afterUpdateElement)
+ this.options.afterUpdateElement(this.element, selectedElement);
+ },
+
+ updateChoices: function(choices) {
+ if(!this.changed && this.hasFocus) {
+ this.update.innerHTML = choices;
+ Element.cleanWhitespace(this.update);
+ Element.cleanWhitespace(this.update.down());
+
+ if(this.update.firstChild && this.update.down().childNodes) {
+ this.entryCount =
+ this.update.down().childNodes.length;
+ for (var i = 0; i < this.entryCount; i++) {
+ var entry = this.getEntry(i);
+ entry.autocompleteIndex = i;
+ this.addObservers(entry);
+ }
+ } else {
+ this.entryCount = 0;
+ }
+
+ this.stopIndicator();
+ this.index = 0;
+
+ if(this.entryCount==1 && this.options.autoSelect) {
+ this.selectEntry();
+ this.hide();
+ } else {
+ this.render();
+ }
+ }
+ },
+
+ addObservers: function(element) {
+ Event.observe(element, "mouseover", this.onHover.bindAsEventListener(this));
+ Event.observe(element, "click", this.onClick.bindAsEventListener(this));
+ },
+
+ onObserverEvent: function() {
+ this.changed = false;
+ this.tokenBounds = null;
+ if(this.getToken().length>=this.options.minChars) {
+ this.getUpdatedChoices();
+ } else {
+ this.active = false;
+ this.hide();
+ }
+ this.oldElementValue = this.element.value;
+ },
+
+ getToken: function() {
+ var bounds = this.getTokenBounds();
+ return this.element.value.substring(bounds[0], bounds[1]).strip();
+ },
+
+ getTokenBounds: function() {
+ if (null != this.tokenBounds) return this.tokenBounds;
+ var value = this.element.value;
+ if (value.strip().empty()) return [-1, 0];
+ var diff = arguments.callee.getFirstDifferencePos(value, this.oldElementValue);
+ var offset = (diff == this.oldElementValue.length ? 1 : 0);
+ var prevTokenPos = -1, nextTokenPos = value.length;
+ var tp;
+ for (var index = 0, l = this.options.tokens.length; index < l; ++index) {
+ tp = value.lastIndexOf(this.options.tokens[index], diff + offset - 1);
+ if (tp > prevTokenPos) prevTokenPos = tp;
+ tp = value.indexOf(this.options.tokens[index], diff + offset);
+ if (-1 != tp && tp < nextTokenPos) nextTokenPos = tp;
+ }
+ return (this.tokenBounds = [prevTokenPos + 1, nextTokenPos]);
+ }
+});
+
+Autocompleter.Base.prototype.getTokenBounds.getFirstDifferencePos = function(newS, oldS) {
+ var boundary = Math.min(newS.length, oldS.length);
+ for (var index = 0; index < boundary; ++index)
+ if (newS[index] != oldS[index])
+ return index;
+ return boundary;
+};
+
+Ajax.Autocompleter = Class.create(Autocompleter.Base, {
+ initialize: function(element, update, url, options) {
+ this.baseInitialize(element, update, options);
+ this.options.asynchronous = true;
+ this.options.onComplete = this.onComplete.bind(this);
+ this.options.defaultParams = this.options.parameters || null;
+ this.url = url;
+ },
+
+ getUpdatedChoices: function() {
+ this.startIndicator();
+
+ var entry = encodeURIComponent(this.options.paramName) + '=' +
+ encodeURIComponent(this.getToken());
+
+ this.options.parameters = this.options.callback ?
+ this.options.callback(this.element, entry) : entry;
+
+ if(this.options.defaultParams)
+ this.options.parameters += '&' + this.options.defaultParams;
+
+ new Ajax.Request(this.url, this.options);
+ },
+
+ onComplete: function(request) {
+ this.updateChoices(request.responseText);
+ }
+});
+
+// The local array autocompleter. Used when you'd prefer to
+// inject an array of autocompletion options into the page, rather
+// than sending out Ajax queries, which can be quite slow sometimes.
+//
+// The constructor takes four parameters. The first two are, as usual,
+// the id of the monitored textbox, and id of the autocompletion menu.
+// The third is the array you want to autocomplete from, and the fourth
+// is the options block.
+//
+// Extra local autocompletion options:
+// - choices - How many autocompletion choices to offer
+//
+// - partialSearch - If false, the autocompleter will match entered
+// text only at the beginning of strings in the
+// autocomplete array. Defaults to true, which will
+// match text at the beginning of any *word* in the
+// strings in the autocomplete array. If you want to
+// search anywhere in the string, additionally set
+// the option fullSearch to true (default: off).
+//
+// - fullSsearch - Search anywhere in autocomplete array strings.
+//
+// - partialChars - How many characters to enter before triggering
+// a partial match (unlike minChars, which defines
+// how many characters are required to do any match
+// at all). Defaults to 2.
+//
+// - ignoreCase - Whether to ignore case when autocompleting.
+// Defaults to true.
+//
+// It's possible to pass in a custom function as the 'selector'
+// option, if you prefer to write your own autocompletion logic.
+// In that case, the other options above will not apply unless
+// you support them.
+
+Autocompleter.Local = Class.create(Autocompleter.Base, {
+ initialize: function(element, update, array, options) {
+ this.baseInitialize(element, update, options);
+ this.options.array = array;
+ },
+
+ getUpdatedChoices: function() {
+ this.updateChoices(this.options.selector(this));
+ },
+
+ setOptions: function(options) {
+ this.options = Object.extend({
+ choices: 10,
+ partialSearch: true,
+ partialChars: 2,
+ ignoreCase: true,
+ fullSearch: false,
+ selector: function(instance) {
+ var ret = []; // Beginning matches
+ var partial = []; // Inside matches
+ var entry = instance.getToken();
+ var count = 0;
+
+ for (var i = 0; i < instance.options.array.length &&
+ ret.length < instance.options.choices ; i++) {
+
+ var elem = instance.options.array[i];
+ var foundPos = instance.options.ignoreCase ?
+ elem.toLowerCase().indexOf(entry.toLowerCase()) :
+ elem.indexOf(entry);
+
+ while (foundPos != -1) {
+ if (foundPos == 0 && elem.length != entry.length) {
+ ret.push("" + elem.substr(0, entry.length) + " " +
+ elem.substr(entry.length) + " ");
+ break;
+ } else if (entry.length >= instance.options.partialChars &&
+ instance.options.partialSearch && foundPos != -1) {
+ if (instance.options.fullSearch || /\s/.test(elem.substr(foundPos-1,1))) {
+ partial.push("" + elem.substr(0, foundPos) + "" +
+ elem.substr(foundPos, entry.length) + " " + elem.substr(
+ foundPos + entry.length) + " ");
+ break;
+ }
+ }
+
+ foundPos = instance.options.ignoreCase ?
+ elem.toLowerCase().indexOf(entry.toLowerCase(), foundPos + 1) :
+ elem.indexOf(entry, foundPos + 1);
+
+ }
+ }
+ if (partial.length)
+ ret = ret.concat(partial.slice(0, instance.options.choices - ret.length))
+ return "";
+ }
+ }, options || { });
+ }
+});
+
+// AJAX in-place editor and collection editor
+// Full rewrite by Christophe Porteneuve (April 2007).
+
+// Use this if you notice weird scrolling problems on some browsers,
+// the DOM might be a bit confused when this gets called so do this
+// waits 1 ms (with setTimeout) until it does the activation
+Field.scrollFreeActivate = function(field) {
+ setTimeout(function() {
+ Field.activate(field);
+ }, 1);
+}
+
+Ajax.InPlaceEditor = Class.create({
+ initialize: function(element, url, options) {
+ this.url = url;
+ this.element = element = $(element);
+ this.prepareOptions();
+ this._controls = { };
+ arguments.callee.dealWithDeprecatedOptions(options); // DEPRECATION LAYER!!!
+ Object.extend(this.options, options || { });
+ if (!this.options.formId && this.element.id) {
+ this.options.formId = this.element.id + '-inplaceeditor';
+ if ($(this.options.formId))
+ this.options.formId = '';
+ }
+ if (this.options.externalControl)
+ this.options.externalControl = $(this.options.externalControl);
+ if (!this.options.externalControl)
+ this.options.externalControlOnly = false;
+ this._originalBackground = this.element.getStyle('background-color') || 'transparent';
+ this.element.title = this.options.clickToEditText;
+ this._boundCancelHandler = this.handleFormCancellation.bind(this);
+ this._boundComplete = (this.options.onComplete || Prototype.emptyFunction).bind(this);
+ this._boundFailureHandler = this.handleAJAXFailure.bind(this);
+ this._boundSubmitHandler = this.handleFormSubmission.bind(this);
+ this._boundWrapperHandler = this.wrapUp.bind(this);
+ this.registerListeners();
+ },
+ checkForEscapeOrReturn: function(e) {
+ if (!this._editing || e.ctrlKey || e.altKey || e.shiftKey) return;
+ if (Event.KEY_ESC == e.keyCode)
+ this.handleFormCancellation(e);
+ else if (Event.KEY_RETURN == e.keyCode)
+ this.handleFormSubmission(e);
+ },
+ createControl: function(mode, handler, extraClasses) {
+ var control = this.options[mode + 'Control'];
+ var text = this.options[mode + 'Text'];
+ if ('button' == control) {
+ var btn = document.createElement('input');
+ btn.type = 'submit';
+ btn.value = text;
+ btn.className = 'editor_' + mode + '_button';
+ if ('cancel' == mode)
+ btn.onclick = this._boundCancelHandler;
+ this._form.appendChild(btn);
+ this._controls[mode] = btn;
+ } else if ('link' == control) {
+ var link = document.createElement('a');
+ link.href = '#';
+ link.appendChild(document.createTextNode(text));
+ link.onclick = 'cancel' == mode ? this._boundCancelHandler : this._boundSubmitHandler;
+ link.className = 'editor_' + mode + '_link';
+ if (extraClasses)
+ link.className += ' ' + extraClasses;
+ this._form.appendChild(link);
+ this._controls[mode] = link;
+ }
+ },
+ createEditField: function() {
+ var text = (this.options.loadTextURL ? this.options.loadingText : this.getText());
+ var fld;
+ if (1 >= this.options.rows && !/\r|\n/.test(this.getText())) {
+ fld = document.createElement('input');
+ fld.type = 'text';
+ var size = this.options.size || this.options.cols || 0;
+ if (0 < size) fld.size = size;
+ } else {
+ fld = document.createElement('textarea');
+ fld.rows = (1 >= this.options.rows ? this.options.autoRows : this.options.rows);
+ fld.cols = this.options.cols || 40;
+ }
+ fld.name = this.options.paramName;
+ fld.value = text; // No HTML breaks conversion anymore
+ fld.className = 'editor_field';
+ if (this.options.submitOnBlur)
+ fld.onblur = this._boundSubmitHandler;
+ this._controls.editor = fld;
+ if (this.options.loadTextURL)
+ this.loadExternalText();
+ this._form.appendChild(this._controls.editor);
+ },
+ createForm: function() {
+ var ipe = this;
+ function addText(mode, condition) {
+ var text = ipe.options['text' + mode + 'Controls'];
+ if (!text || condition === false) return;
+ ipe._form.appendChild(document.createTextNode(text));
+ };
+ this._form = $(document.createElement('form'));
+ this._form.id = this.options.formId;
+ this._form.addClassName(this.options.formClassName);
+ this._form.onsubmit = this._boundSubmitHandler;
+ this.createEditField();
+ if ('textarea' == this._controls.editor.tagName.toLowerCase())
+ this._form.appendChild(document.createElement('br'));
+ if (this.options.onFormCustomization)
+ this.options.onFormCustomization(this, this._form);
+ addText('Before', this.options.okControl || this.options.cancelControl);
+ this.createControl('ok', this._boundSubmitHandler);
+ addText('Between', this.options.okControl && this.options.cancelControl);
+ this.createControl('cancel', this._boundCancelHandler, 'editor_cancel');
+ addText('After', this.options.okControl || this.options.cancelControl);
+ },
+ destroy: function() {
+ if (this._oldInnerHTML)
+ this.element.innerHTML = this._oldInnerHTML;
+ this.leaveEditMode();
+ this.unregisterListeners();
+ },
+ enterEditMode: function(e) {
+ if (this._saving || this._editing) return;
+ this._editing = true;
+ this.triggerCallback('onEnterEditMode');
+ if (this.options.externalControl)
+ this.options.externalControl.hide();
+ this.element.hide();
+ this.createForm();
+ this.element.parentNode.insertBefore(this._form, this.element);
+ if (!this.options.loadTextURL)
+ this.postProcessEditField();
+ if (e) Event.stop(e);
+ },
+ enterHover: function(e) {
+ if (this.options.hoverClassName)
+ this.element.addClassName(this.options.hoverClassName);
+ if (this._saving) return;
+ this.triggerCallback('onEnterHover');
+ },
+ getText: function() {
+ return this.element.innerHTML;
+ },
+ handleAJAXFailure: function(transport) {
+ this.triggerCallback('onFailure', transport);
+ if (this._oldInnerHTML) {
+ this.element.innerHTML = this._oldInnerHTML;
+ this._oldInnerHTML = null;
+ }
+ },
+ handleFormCancellation: function(e) {
+ this.wrapUp();
+ if (e) Event.stop(e);
+ },
+ handleFormSubmission: function(e) {
+ var form = this._form;
+ var value = $F(this._controls.editor);
+ this.prepareSubmission();
+ var params = this.options.callback(form, value) || '';
+ if (Object.isString(params))
+ params = params.toQueryParams();
+ params.editorId = this.element.id;
+ if (this.options.htmlResponse) {
+ var options = Object.extend({ evalScripts: true }, this.options.ajaxOptions);
+ Object.extend(options, {
+ parameters: params,
+ onComplete: this._boundWrapperHandler,
+ onFailure: this._boundFailureHandler
+ });
+ new Ajax.Updater({ success: this.element }, this.url, options);
+ } else {
+ var options = Object.extend({ method: 'get' }, this.options.ajaxOptions);
+ Object.extend(options, {
+ parameters: params,
+ onComplete: this._boundWrapperHandler,
+ onFailure: this._boundFailureHandler
+ });
+ new Ajax.Request(this.url, options);
+ }
+ if (e) Event.stop(e);
+ },
+ leaveEditMode: function() {
+ this.element.removeClassName(this.options.savingClassName);
+ this.removeForm();
+ this.leaveHover();
+ this.element.style.backgroundColor = this._originalBackground;
+ this.element.show();
+ if (this.options.externalControl)
+ this.options.externalControl.show();
+ this._saving = false;
+ this._editing = false;
+ this._oldInnerHTML = null;
+ this.triggerCallback('onLeaveEditMode');
+ },
+ leaveHover: function(e) {
+ if (this.options.hoverClassName)
+ this.element.removeClassName(this.options.hoverClassName);
+ if (this._saving) return;
+ this.triggerCallback('onLeaveHover');
+ },
+ loadExternalText: function() {
+ this._form.addClassName(this.options.loadingClassName);
+ this._controls.editor.disabled = true;
+ var options = Object.extend({ method: 'get' }, this.options.ajaxOptions);
+ Object.extend(options, {
+ parameters: 'editorId=' + encodeURIComponent(this.element.id),
+ onComplete: Prototype.emptyFunction,
+ onSuccess: function(transport) {
+ this._form.removeClassName(this.options.loadingClassName);
+ var text = transport.responseText;
+ if (this.options.stripLoadedTextTags)
+ text = text.stripTags();
+ this._controls.editor.value = text;
+ this._controls.editor.disabled = false;
+ this.postProcessEditField();
+ }.bind(this),
+ onFailure: this._boundFailureHandler
+ });
+ new Ajax.Request(this.options.loadTextURL, options);
+ },
+ postProcessEditField: function() {
+ var fpc = this.options.fieldPostCreation;
+ if (fpc)
+ $(this._controls.editor)['focus' == fpc ? 'focus' : 'activate']();
+ },
+ prepareOptions: function() {
+ this.options = Object.clone(Ajax.InPlaceEditor.DefaultOptions);
+ Object.extend(this.options, Ajax.InPlaceEditor.DefaultCallbacks);
+ [this._extraDefaultOptions].flatten().compact().each(function(defs) {
+ Object.extend(this.options, defs);
+ }.bind(this));
+ },
+ prepareSubmission: function() {
+ this._saving = true;
+ this.removeForm();
+ this.leaveHover();
+ this.showSaving();
+ },
+ registerListeners: function() {
+ this._listeners = { };
+ var listener;
+ $H(Ajax.InPlaceEditor.Listeners).each(function(pair) {
+ listener = this[pair.value].bind(this);
+ this._listeners[pair.key] = listener;
+ if (!this.options.externalControlOnly)
+ this.element.observe(pair.key, listener);
+ if (this.options.externalControl)
+ this.options.externalControl.observe(pair.key, listener);
+ }.bind(this));
+ },
+ removeForm: function() {
+ if (!this._form) return;
+ this._form.remove();
+ this._form = null;
+ this._controls = { };
+ },
+ showSaving: function() {
+ this._oldInnerHTML = this.element.innerHTML;
+ this.element.innerHTML = this.options.savingText;
+ this.element.addClassName(this.options.savingClassName);
+ this.element.style.backgroundColor = this._originalBackground;
+ this.element.show();
+ },
+ triggerCallback: function(cbName, arg) {
+ if ('function' == typeof this.options[cbName]) {
+ this.options[cbName](this, arg);
+ }
+ },
+ unregisterListeners: function() {
+ $H(this._listeners).each(function(pair) {
+ if (!this.options.externalControlOnly)
+ this.element.stopObserving(pair.key, pair.value);
+ if (this.options.externalControl)
+ this.options.externalControl.stopObserving(pair.key, pair.value);
+ }.bind(this));
+ },
+ wrapUp: function(transport) {
+ this.leaveEditMode();
+ // Can't use triggerCallback due to backward compatibility: requires
+ // binding + direct element
+ this._boundComplete(transport, this.element);
+ }
+});
+
+Object.extend(Ajax.InPlaceEditor.prototype, {
+ dispose: Ajax.InPlaceEditor.prototype.destroy
+});
+
+Ajax.InPlaceCollectionEditor = Class.create(Ajax.InPlaceEditor, {
+ initialize: function($super, element, url, options) {
+ this._extraDefaultOptions = Ajax.InPlaceCollectionEditor.DefaultOptions;
+ $super(element, url, options);
+ },
+
+ createEditField: function() {
+ var list = document.createElement('select');
+ list.name = this.options.paramName;
+ list.size = 1;
+ this._controls.editor = list;
+ this._collection = this.options.collection || [];
+ if (this.options.loadCollectionURL)
+ this.loadCollection();
+ else
+ this.checkForExternalText();
+ this._form.appendChild(this._controls.editor);
+ },
+
+ loadCollection: function() {
+ this._form.addClassName(this.options.loadingClassName);
+ this.showLoadingText(this.options.loadingCollectionText);
+ var options = Object.extend({ method: 'get' }, this.options.ajaxOptions);
+ Object.extend(options, {
+ parameters: 'editorId=' + encodeURIComponent(this.element.id),
+ onComplete: Prototype.emptyFunction,
+ onSuccess: function(transport) {
+ var js = transport.responseText.strip();
+ if (!/^\[.*\]$/.test(js)) // TODO: improve sanity check
+ throw 'Server returned an invalid collection representation.';
+ this._collection = eval(js);
+ this.checkForExternalText();
+ }.bind(this),
+ onFailure: this.onFailure
+ });
+ new Ajax.Request(this.options.loadCollectionURL, options);
+ },
+
+ showLoadingText: function(text) {
+ this._controls.editor.disabled = true;
+ var tempOption = this._controls.editor.firstChild;
+ if (!tempOption) {
+ tempOption = document.createElement('option');
+ tempOption.value = '';
+ this._controls.editor.appendChild(tempOption);
+ tempOption.selected = true;
+ }
+ tempOption.update((text || '').stripScripts().stripTags());
+ },
+
+ checkForExternalText: function() {
+ this._text = this.getText();
+ if (this.options.loadTextURL)
+ this.loadExternalText();
+ else
+ this.buildOptionList();
+ },
+
+ loadExternalText: function() {
+ this.showLoadingText(this.options.loadingText);
+ var options = Object.extend({ method: 'get' }, this.options.ajaxOptions);
+ Object.extend(options, {
+ parameters: 'editorId=' + encodeURIComponent(this.element.id),
+ onComplete: Prototype.emptyFunction,
+ onSuccess: function(transport) {
+ this._text = transport.responseText.strip();
+ this.buildOptionList();
+ }.bind(this),
+ onFailure: this.onFailure
+ });
+ new Ajax.Request(this.options.loadTextURL, options);
+ },
+
+ buildOptionList: function() {
+ this._form.removeClassName(this.options.loadingClassName);
+ this._collection = this._collection.map(function(entry) {
+ return 2 === entry.length ? entry : [entry, entry].flatten();
+ });
+ var marker = ('value' in this.options) ? this.options.value : this._text;
+ var textFound = this._collection.any(function(entry) {
+ return entry[0] == marker;
+ }.bind(this));
+ this._controls.editor.update('');
+ var option;
+ this._collection.each(function(entry, index) {
+ option = document.createElement('option');
+ option.value = entry[0];
+ option.selected = textFound ? entry[0] == marker : 0 == index;
+ option.appendChild(document.createTextNode(entry[1]));
+ this._controls.editor.appendChild(option);
+ }.bind(this));
+ this._controls.editor.disabled = false;
+ Field.scrollFreeActivate(this._controls.editor);
+ }
+});
+
+//**** DEPRECATION LAYER FOR InPlace[Collection]Editor! ****
+//**** This only exists for a while, in order to let ****
+//**** users adapt to the new API. Read up on the new ****
+//**** API and convert your code to it ASAP! ****
+
+Ajax.InPlaceEditor.prototype.initialize.dealWithDeprecatedOptions = function(options) {
+ if (!options) return;
+ function fallback(name, expr) {
+ if (name in options || expr === undefined) return;
+ options[name] = expr;
+ };
+ fallback('cancelControl', (options.cancelLink ? 'link' : (options.cancelButton ? 'button' :
+ options.cancelLink == options.cancelButton == false ? false : undefined)));
+ fallback('okControl', (options.okLink ? 'link' : (options.okButton ? 'button' :
+ options.okLink == options.okButton == false ? false : undefined)));
+ fallback('highlightColor', options.highlightcolor);
+ fallback('highlightEndColor', options.highlightendcolor);
+};
+
+Object.extend(Ajax.InPlaceEditor, {
+ DefaultOptions: {
+ ajaxOptions: { },
+ autoRows: 3, // Use when multi-line w/ rows == 1
+ cancelControl: 'link', // 'link'|'button'|false
+ cancelText: 'cancel',
+ clickToEditText: 'Click to edit',
+ externalControl: null, // id|elt
+ externalControlOnly: false,
+ fieldPostCreation: 'activate', // 'activate'|'focus'|false
+ formClassName: 'inplaceeditor-form',
+ formId: null, // id|elt
+ highlightColor: '#ffff99',
+ highlightEndColor: '#ffffff',
+ hoverClassName: '',
+ htmlResponse: true,
+ loadingClassName: 'inplaceeditor-loading',
+ loadingText: 'Loading...',
+ okControl: 'button', // 'link'|'button'|false
+ okText: 'ok',
+ paramName: 'value',
+ rows: 1, // If 1 and multi-line, uses autoRows
+ savingClassName: 'inplaceeditor-saving',
+ savingText: 'Saving...',
+ size: 0,
+ stripLoadedTextTags: false,
+ submitOnBlur: false,
+ textAfterControls: '',
+ textBeforeControls: '',
+ textBetweenControls: ''
+ },
+ DefaultCallbacks: {
+ callback: function(form) {
+ return Form.serialize(form);
+ },
+ onComplete: function(transport, element) {
+ // For backward compatibility, this one is bound to the IPE, and passes
+ // the element directly. It was too often customized, so we don't break it.
+ new Effect.Highlight(element, {
+ startcolor: this.options.highlightColor, keepBackgroundImage: true });
+ },
+ onEnterEditMode: null,
+ onEnterHover: function(ipe) {
+ ipe.element.style.backgroundColor = ipe.options.highlightColor;
+ if (ipe._effect)
+ ipe._effect.cancel();
+ },
+ onFailure: function(transport, ipe) {
+ alert('Error communication with the server: ' + transport.responseText.stripTags());
+ },
+ onFormCustomization: null, // Takes the IPE and its generated form, after editor, before controls.
+ onLeaveEditMode: null,
+ onLeaveHover: function(ipe) {
+ ipe._effect = new Effect.Highlight(ipe.element, {
+ startcolor: ipe.options.highlightColor, endcolor: ipe.options.highlightEndColor,
+ restorecolor: ipe._originalBackground, keepBackgroundImage: true
+ });
+ }
+ },
+ Listeners: {
+ click: 'enterEditMode',
+ keydown: 'checkForEscapeOrReturn',
+ mouseover: 'enterHover',
+ mouseout: 'leaveHover'
+ }
+});
+
+Ajax.InPlaceCollectionEditor.DefaultOptions = {
+ loadingCollectionText: 'Loading options...'
+};
+
+// Delayed observer, like Form.Element.Observer,
+// but waits for delay after last key input
+// Ideal for live-search fields
+
+Form.Element.DelayedObserver = Class.create({
+ initialize: function(element, delay, callback) {
+ this.delay = delay || 0.5;
+ this.element = $(element);
+ this.callback = callback;
+ this.timer = null;
+ this.lastValue = $F(this.element);
+ Event.observe(this.element,'keyup',this.delayedListener.bindAsEventListener(this));
+ },
+ delayedListener: function(event) {
+ if(this.lastValue == $F(this.element)) return;
+ if(this.timer) clearTimeout(this.timer);
+ this.timer = setTimeout(this.onTimerEvent.bind(this), this.delay * 1000);
+ this.lastValue = $F(this.element);
+ },
+ onTimerEvent: function() {
+ this.timer = null;
+ this.callback(this.element, $F(this.element));
+ }
+});
diff --git a/app/assets/javascripts/dragdrop.js b/app/assets/javascripts/dragdrop.js
new file mode 100644
index 0000000..bf5cfea
--- /dev/null
+++ b/app/assets/javascripts/dragdrop.js
@@ -0,0 +1,972 @@
+// Copyright (c) 2005-2008 Thomas Fuchs (http://script.aculo.us, http://mir.aculo.us)
+// (c) 2005-2007 Sammi Williams (http://www.oriontransfer.co.nz, sammi@oriontransfer.co.nz)
+//
+// script.aculo.us is freely distributable under the terms of an MIT-style license.
+// For details, see the script.aculo.us web site: http://script.aculo.us/
+
+if(Object.isUndefined(Effect))
+ throw("dragdrop.js requires including script.aculo.us' effects.js library");
+
+var Droppables = {
+ drops: [],
+
+ remove: function(element) {
+ this.drops = this.drops.reject(function(d) { return d.element==$(element) });
+ },
+
+ add: function(element) {
+ element = $(element);
+ var options = Object.extend({
+ greedy: true,
+ hoverclass: null,
+ tree: false
+ }, arguments[1] || { });
+
+ // cache containers
+ if(options.containment) {
+ options._containers = [];
+ var containment = options.containment;
+ if(Object.isArray(containment)) {
+ containment.each( function(c) { options._containers.push($(c)) });
+ } else {
+ options._containers.push($(containment));
+ }
+ }
+
+ if(options.accept) options.accept = [options.accept].flatten();
+
+ Element.makePositioned(element); // fix IE
+ options.element = element;
+
+ this.drops.push(options);
+ },
+
+ findDeepestChild: function(drops) {
+ deepest = drops[0];
+
+ for (i = 1; i < drops.length; ++i)
+ if (Element.isParent(drops[i].element, deepest.element))
+ deepest = drops[i];
+
+ return deepest;
+ },
+
+ isContained: function(element, drop) {
+ var containmentNode;
+ if(drop.tree) {
+ containmentNode = element.treeNode;
+ } else {
+ containmentNode = element.parentNode;
+ }
+ return drop._containers.detect(function(c) { return containmentNode == c });
+ },
+
+ isAffected: function(point, element, drop) {
+ return (
+ (drop.element!=element) &&
+ ((!drop._containers) ||
+ this.isContained(element, drop)) &&
+ ((!drop.accept) ||
+ (Element.classNames(element).detect(
+ function(v) { return drop.accept.include(v) } ) )) &&
+ Position.within(drop.element, point[0], point[1]) );
+ },
+
+ deactivate: function(drop) {
+ if(drop.hoverclass)
+ Element.removeClassName(drop.element, drop.hoverclass);
+ this.last_active = null;
+ },
+
+ activate: function(drop) {
+ if(drop.hoverclass)
+ Element.addClassName(drop.element, drop.hoverclass);
+ this.last_active = drop;
+ },
+
+ show: function(point, element) {
+ if(!this.drops.length) return;
+ var drop, affected = [];
+
+ this.drops.each( function(drop) {
+ if(Droppables.isAffected(point, element, drop))
+ affected.push(drop);
+ });
+
+ if(affected.length>0)
+ drop = Droppables.findDeepestChild(affected);
+
+ if(this.last_active && this.last_active != drop) this.deactivate(this.last_active);
+ if (drop) {
+ Position.within(drop.element, point[0], point[1]);
+ if(drop.onHover)
+ drop.onHover(element, drop.element, Position.overlap(drop.overlap, drop.element));
+
+ if (drop != this.last_active) Droppables.activate(drop);
+ }
+ },
+
+ fire: function(event, element) {
+ if(!this.last_active) return;
+ Position.prepare();
+
+ if (this.isAffected([Event.pointerX(event), Event.pointerY(event)], element, this.last_active))
+ if (this.last_active.onDrop) {
+ this.last_active.onDrop(element, this.last_active.element, event);
+ return true;
+ }
+ },
+
+ reset: function() {
+ if(this.last_active)
+ this.deactivate(this.last_active);
+ }
+}
+
+var Draggables = {
+ drags: [],
+ observers: [],
+
+ register: function(draggable) {
+ if(this.drags.length == 0) {
+ this.eventMouseUp = this.endDrag.bindAsEventListener(this);
+ this.eventMouseMove = this.updateDrag.bindAsEventListener(this);
+ this.eventKeypress = this.keyPress.bindAsEventListener(this);
+
+ Event.observe(document, "mouseup", this.eventMouseUp);
+ Event.observe(document, "mousemove", this.eventMouseMove);
+ Event.observe(document, "keypress", this.eventKeypress);
+ }
+ this.drags.push(draggable);
+ },
+
+ unregister: function(draggable) {
+ this.drags = this.drags.reject(function(d) { return d==draggable });
+ if(this.drags.length == 0) {
+ Event.stopObserving(document, "mouseup", this.eventMouseUp);
+ Event.stopObserving(document, "mousemove", this.eventMouseMove);
+ Event.stopObserving(document, "keypress", this.eventKeypress);
+ }
+ },
+
+ activate: function(draggable) {
+ if(draggable.options.delay) {
+ this._timeout = setTimeout(function() {
+ Draggables._timeout = null;
+ window.focus();
+ Draggables.activeDraggable = draggable;
+ }.bind(this), draggable.options.delay);
+ } else {
+ window.focus(); // allows keypress events if window isn't currently focused, fails for Safari
+ this.activeDraggable = draggable;
+ }
+ },
+
+ deactivate: function() {
+ this.activeDraggable = null;
+ },
+
+ updateDrag: function(event) {
+ if(!this.activeDraggable) return;
+ var pointer = [Event.pointerX(event), Event.pointerY(event)];
+ // Mozilla-based browsers fire successive mousemove events with
+ // the same coordinates, prevent needless redrawing (moz bug?)
+ if(this._lastPointer && (this._lastPointer.inspect() == pointer.inspect())) return;
+ this._lastPointer = pointer;
+
+ this.activeDraggable.updateDrag(event, pointer);
+ },
+
+ endDrag: function(event) {
+ if(this._timeout) {
+ clearTimeout(this._timeout);
+ this._timeout = null;
+ }
+ if(!this.activeDraggable) return;
+ this._lastPointer = null;
+ this.activeDraggable.endDrag(event);
+ this.activeDraggable = null;
+ },
+
+ keyPress: function(event) {
+ if(this.activeDraggable)
+ this.activeDraggable.keyPress(event);
+ },
+
+ addObserver: function(observer) {
+ this.observers.push(observer);
+ this._cacheObserverCallbacks();
+ },
+
+ removeObserver: function(element) { // element instead of observer fixes mem leaks
+ this.observers = this.observers.reject( function(o) { return o.element==element });
+ this._cacheObserverCallbacks();
+ },
+
+ notify: function(eventName, draggable, event) { // 'onStart', 'onEnd', 'onDrag'
+ if(this[eventName+'Count'] > 0)
+ this.observers.each( function(o) {
+ if(o[eventName]) o[eventName](eventName, draggable, event);
+ });
+ if(draggable.options[eventName]) draggable.options[eventName](draggable, event);
+ },
+
+ _cacheObserverCallbacks: function() {
+ ['onStart','onEnd','onDrag'].each( function(eventName) {
+ Draggables[eventName+'Count'] = Draggables.observers.select(
+ function(o) { return o[eventName]; }
+ ).length;
+ });
+ }
+}
+
+/*--------------------------------------------------------------------------*/
+
+var Draggable = Class.create({
+ initialize: function(element) {
+ var defaults = {
+ handle: false,
+ reverteffect: function(element, top_offset, left_offset) {
+ var dur = Math.sqrt(Math.abs(top_offset^2)+Math.abs(left_offset^2))*0.02;
+ new Effect.Move(element, { x: -left_offset, y: -top_offset, duration: dur,
+ queue: {scope:'_draggable', position:'end'}
+ });
+ },
+ endeffect: function(element) {
+ var toOpacity = Object.isNumber(element._opacity) ? element._opacity : 1.0;
+ new Effect.Opacity(element, {duration:0.2, from:0.7, to:toOpacity,
+ queue: {scope:'_draggable', position:'end'},
+ afterFinish: function(){
+ Draggable._dragging[element] = false
+ }
+ });
+ },
+ zindex: 1000,
+ revert: false,
+ quiet: false,
+ scroll: false,
+ scrollSensitivity: 20,
+ scrollSpeed: 15,
+ snap: false, // false, or xy or [x,y] or function(x,y){ return [x,y] }
+ delay: 0
+ };
+
+ if(!arguments[1] || Object.isUndefined(arguments[1].endeffect))
+ Object.extend(defaults, {
+ starteffect: function(element) {
+ element._opacity = Element.getOpacity(element);
+ Draggable._dragging[element] = true;
+ new Effect.Opacity(element, {duration:0.2, from:element._opacity, to:0.7});
+ }
+ });
+
+ var options = Object.extend(defaults, arguments[1] || { });
+
+ this.element = $(element);
+
+ if(options.handle && Object.isString(options.handle))
+ this.handle = this.element.down('.'+options.handle, 0);
+
+ if(!this.handle) this.handle = $(options.handle);
+ if(!this.handle) this.handle = this.element;
+
+ if(options.scroll && !options.scroll.scrollTo && !options.scroll.outerHTML) {
+ options.scroll = $(options.scroll);
+ this._isScrollChild = Element.childOf(this.element, options.scroll);
+ }
+
+ Element.makePositioned(this.element); // fix IE
+
+ this.options = options;
+ this.dragging = false;
+
+ this.eventMouseDown = this.initDrag.bindAsEventListener(this);
+ Event.observe(this.handle, "mousedown", this.eventMouseDown);
+
+ Draggables.register(this);
+ },
+
+ destroy: function() {
+ Event.stopObserving(this.handle, "mousedown", this.eventMouseDown);
+ Draggables.unregister(this);
+ },
+
+ currentDelta: function() {
+ return([
+ parseInt(Element.getStyle(this.element,'left') || '0'),
+ parseInt(Element.getStyle(this.element,'top') || '0')]);
+ },
+
+ initDrag: function(event) {
+ if(!Object.isUndefined(Draggable._dragging[this.element]) &&
+ Draggable._dragging[this.element]) return;
+ if(Event.isLeftClick(event)) {
+ // abort on form elements, fixes a Firefox issue
+ var src = Event.element(event);
+ if((tag_name = src.tagName.toUpperCase()) && (
+ tag_name=='INPUT' ||
+ tag_name=='SELECT' ||
+ tag_name=='OPTION' ||
+ tag_name=='BUTTON' ||
+ tag_name=='TEXTAREA')) return;
+
+ var pointer = [Event.pointerX(event), Event.pointerY(event)];
+ var pos = Position.cumulativeOffset(this.element);
+ this.offset = [0,1].map( function(i) { return (pointer[i] - pos[i]) });
+
+ Draggables.activate(this);
+ Event.stop(event);
+ }
+ },
+
+ startDrag: function(event) {
+ this.dragging = true;
+ if(!this.delta)
+ this.delta = this.currentDelta();
+
+ if(this.options.zindex) {
+ this.originalZ = parseInt(Element.getStyle(this.element,'z-index') || 0);
+ this.element.style.zIndex = this.options.zindex;
+ }
+
+ if(this.options.ghosting) {
+ this._clone = this.element.cloneNode(true);
+ this.element._originallyAbsolute = (this.element.getStyle('position') == 'absolute');
+ if (!this.element._originallyAbsolute)
+ Position.absolutize(this.element);
+ this.element.parentNode.insertBefore(this._clone, this.element);
+ }
+
+ if(this.options.scroll) {
+ if (this.options.scroll == window) {
+ var where = this._getWindowScroll(this.options.scroll);
+ this.originalScrollLeft = where.left;
+ this.originalScrollTop = where.top;
+ } else {
+ this.originalScrollLeft = this.options.scroll.scrollLeft;
+ this.originalScrollTop = this.options.scroll.scrollTop;
+ }
+ }
+
+ Draggables.notify('onStart', this, event);
+
+ if(this.options.starteffect) this.options.starteffect(this.element);
+ },
+
+ updateDrag: function(event, pointer) {
+ if(!this.dragging) this.startDrag(event);
+
+ if(!this.options.quiet){
+ Position.prepare();
+ Droppables.show(pointer, this.element);
+ }
+
+ Draggables.notify('onDrag', this, event);
+
+ this.draw(pointer);
+ if(this.options.change) this.options.change(this);
+
+ if(this.options.scroll) {
+ this.stopScrolling();
+
+ var p;
+ if (this.options.scroll == window) {
+ with(this._getWindowScroll(this.options.scroll)) { p = [ left, top, left+width, top+height ]; }
+ } else {
+ p = Position.page(this.options.scroll);
+ p[0] += this.options.scroll.scrollLeft + Position.deltaX;
+ p[1] += this.options.scroll.scrollTop + Position.deltaY;
+ p.push(p[0]+this.options.scroll.offsetWidth);
+ p.push(p[1]+this.options.scroll.offsetHeight);
+ }
+ var speed = [0,0];
+ if(pointer[0] < (p[0]+this.options.scrollSensitivity)) speed[0] = pointer[0]-(p[0]+this.options.scrollSensitivity);
+ if(pointer[1] < (p[1]+this.options.scrollSensitivity)) speed[1] = pointer[1]-(p[1]+this.options.scrollSensitivity);
+ if(pointer[0] > (p[2]-this.options.scrollSensitivity)) speed[0] = pointer[0]-(p[2]-this.options.scrollSensitivity);
+ if(pointer[1] > (p[3]-this.options.scrollSensitivity)) speed[1] = pointer[1]-(p[3]-this.options.scrollSensitivity);
+ this.startScrolling(speed);
+ }
+
+ // fix AppleWebKit rendering
+ if(Prototype.Browser.WebKit) window.scrollBy(0,0);
+
+ Event.stop(event);
+ },
+
+ finishDrag: function(event, success) {
+ this.dragging = false;
+
+ if(this.options.quiet){
+ Position.prepare();
+ var pointer = [Event.pointerX(event), Event.pointerY(event)];
+ Droppables.show(pointer, this.element);
+ }
+
+ if(this.options.ghosting) {
+ if (!this.element._originallyAbsolute)
+ Position.relativize(this.element);
+ delete this.element._originallyAbsolute;
+ Element.remove(this._clone);
+ this._clone = null;
+ }
+
+ var dropped = false;
+ if(success) {
+ dropped = Droppables.fire(event, this.element);
+ if (!dropped) dropped = false;
+ }
+ if(dropped && this.options.onDropped) this.options.onDropped(this.element);
+ Draggables.notify('onEnd', this, event);
+
+ var revert = this.options.revert;
+ if(revert && Object.isFunction(revert)) revert = revert(this.element);
+
+ var d = this.currentDelta();
+ if(revert && this.options.reverteffect) {
+ if (dropped == 0 || revert != 'failure')
+ this.options.reverteffect(this.element,
+ d[1]-this.delta[1], d[0]-this.delta[0]);
+ } else {
+ this.delta = d;
+ }
+
+ if(this.options.zindex)
+ this.element.style.zIndex = this.originalZ;
+
+ if(this.options.endeffect)
+ this.options.endeffect(this.element);
+
+ Draggables.deactivate(this);
+ Droppables.reset();
+ },
+
+ keyPress: function(event) {
+ if(event.keyCode!=Event.KEY_ESC) return;
+ this.finishDrag(event, false);
+ Event.stop(event);
+ },
+
+ endDrag: function(event) {
+ if(!this.dragging) return;
+ this.stopScrolling();
+ this.finishDrag(event, true);
+ Event.stop(event);
+ },
+
+ draw: function(point) {
+ var pos = Position.cumulativeOffset(this.element);
+ if(this.options.ghosting) {
+ var r = Position.realOffset(this.element);
+ pos[0] += r[0] - Position.deltaX; pos[1] += r[1] - Position.deltaY;
+ }
+
+ var d = this.currentDelta();
+ pos[0] -= d[0]; pos[1] -= d[1];
+
+ if(this.options.scroll && (this.options.scroll != window && this._isScrollChild)) {
+ pos[0] -= this.options.scroll.scrollLeft-this.originalScrollLeft;
+ pos[1] -= this.options.scroll.scrollTop-this.originalScrollTop;
+ }
+
+ var p = [0,1].map(function(i){
+ return (point[i]-pos[i]-this.offset[i])
+ }.bind(this));
+
+ if(this.options.snap) {
+ if(Object.isFunction(this.options.snap)) {
+ p = this.options.snap(p[0],p[1],this);
+ } else {
+ if(Object.isArray(this.options.snap)) {
+ p = p.map( function(v, i) {
+ return (v/this.options.snap[i]).round()*this.options.snap[i] }.bind(this))
+ } else {
+ p = p.map( function(v) {
+ return (v/this.options.snap).round()*this.options.snap }.bind(this))
+ }
+ }}
+
+ var style = this.element.style;
+ if((!this.options.constraint) || (this.options.constraint=='horizontal'))
+ style.left = p[0] + "px";
+ if((!this.options.constraint) || (this.options.constraint=='vertical'))
+ style.top = p[1] + "px";
+
+ if(style.visibility=="hidden") style.visibility = ""; // fix gecko rendering
+ },
+
+ stopScrolling: function() {
+ if(this.scrollInterval) {
+ clearInterval(this.scrollInterval);
+ this.scrollInterval = null;
+ Draggables._lastScrollPointer = null;
+ }
+ },
+
+ startScrolling: function(speed) {
+ if(!(speed[0] || speed[1])) return;
+ this.scrollSpeed = [speed[0]*this.options.scrollSpeed,speed[1]*this.options.scrollSpeed];
+ this.lastScrolled = new Date();
+ this.scrollInterval = setInterval(this.scroll.bind(this), 10);
+ },
+
+ scroll: function() {
+ var current = new Date();
+ var delta = current - this.lastScrolled;
+ this.lastScrolled = current;
+ if(this.options.scroll == window) {
+ with (this._getWindowScroll(this.options.scroll)) {
+ if (this.scrollSpeed[0] || this.scrollSpeed[1]) {
+ var d = delta / 1000;
+ this.options.scroll.scrollTo( left + d*this.scrollSpeed[0], top + d*this.scrollSpeed[1] );
+ }
+ }
+ } else {
+ this.options.scroll.scrollLeft += this.scrollSpeed[0] * delta / 1000;
+ this.options.scroll.scrollTop += this.scrollSpeed[1] * delta / 1000;
+ }
+
+ Position.prepare();
+ Droppables.show(Draggables._lastPointer, this.element);
+ Draggables.notify('onDrag', this);
+ if (this._isScrollChild) {
+ Draggables._lastScrollPointer = Draggables._lastScrollPointer || $A(Draggables._lastPointer);
+ Draggables._lastScrollPointer[0] += this.scrollSpeed[0] * delta / 1000;
+ Draggables._lastScrollPointer[1] += this.scrollSpeed[1] * delta / 1000;
+ if (Draggables._lastScrollPointer[0] < 0)
+ Draggables._lastScrollPointer[0] = 0;
+ if (Draggables._lastScrollPointer[1] < 0)
+ Draggables._lastScrollPointer[1] = 0;
+ this.draw(Draggables._lastScrollPointer);
+ }
+
+ if(this.options.change) this.options.change(this);
+ },
+
+ _getWindowScroll: function(w) {
+ var T, L, W, H;
+ with (w.document) {
+ if (w.document.documentElement && documentElement.scrollTop) {
+ T = documentElement.scrollTop;
+ L = documentElement.scrollLeft;
+ } else if (w.document.body) {
+ T = body.scrollTop;
+ L = body.scrollLeft;
+ }
+ if (w.innerWidth) {
+ W = w.innerWidth;
+ H = w.innerHeight;
+ } else if (w.document.documentElement && documentElement.clientWidth) {
+ W = documentElement.clientWidth;
+ H = documentElement.clientHeight;
+ } else {
+ W = body.offsetWidth;
+ H = body.offsetHeight
+ }
+ }
+ return { top: T, left: L, width: W, height: H };
+ }
+});
+
+Draggable._dragging = { };
+
+/*--------------------------------------------------------------------------*/
+
+var SortableObserver = Class.create({
+ initialize: function(element, observer) {
+ this.element = $(element);
+ this.observer = observer;
+ this.lastValue = Sortable.serialize(this.element);
+ },
+
+ onStart: function() {
+ this.lastValue = Sortable.serialize(this.element);
+ },
+
+ onEnd: function() {
+ Sortable.unmark();
+ if(this.lastValue != Sortable.serialize(this.element))
+ this.observer(this.element)
+ }
+});
+
+var Sortable = {
+ SERIALIZE_RULE: /^[^_\-](?:[A-Za-z0-9\-\_]*)[_](.*)$/,
+
+ sortables: { },
+
+ _findRootElement: function(element) {
+ while (element.tagName.toUpperCase() != "BODY") {
+ if(element.id && Sortable.sortables[element.id]) return element;
+ element = element.parentNode;
+ }
+ },
+
+ options: function(element) {
+ element = Sortable._findRootElement($(element));
+ if(!element) return;
+ return Sortable.sortables[element.id];
+ },
+
+ destroy: function(element){
+ var s = Sortable.options(element);
+
+ if(s) {
+ Draggables.removeObserver(s.element);
+ s.droppables.each(function(d){ Droppables.remove(d) });
+ s.draggables.invoke('destroy');
+
+ delete Sortable.sortables[s.element.id];
+ }
+ },
+
+ create: function(element) {
+ element = $(element);
+ var options = Object.extend({
+ element: element,
+ tag: 'li', // assumes li children, override with tag: 'tagname'
+ dropOnEmpty: false,
+ tree: false,
+ treeTag: 'ul',
+ overlap: 'vertical', // one of 'vertical', 'horizontal'
+ constraint: 'vertical', // one of 'vertical', 'horizontal', false
+ containment: element, // also takes array of elements (or id's); or false
+ handle: false, // or a CSS class
+ only: false,
+ delay: 0,
+ hoverclass: null,
+ ghosting: false,
+ quiet: false,
+ scroll: false,
+ scrollSensitivity: 20,
+ scrollSpeed: 15,
+ format: this.SERIALIZE_RULE,
+
+ // these take arrays of elements or ids and can be
+ // used for better initialization performance
+ elements: false,
+ handles: false,
+
+ onChange: Prototype.emptyFunction,
+ onUpdate: Prototype.emptyFunction
+ }, arguments[1] || { });
+
+ // clear any old sortable with same element
+ this.destroy(element);
+
+ // build options for the draggables
+ var options_for_draggable = {
+ revert: true,
+ quiet: options.quiet,
+ scroll: options.scroll,
+ scrollSpeed: options.scrollSpeed,
+ scrollSensitivity: options.scrollSensitivity,
+ delay: options.delay,
+ ghosting: options.ghosting,
+ constraint: options.constraint,
+ handle: options.handle };
+
+ if(options.starteffect)
+ options_for_draggable.starteffect = options.starteffect;
+
+ if(options.reverteffect)
+ options_for_draggable.reverteffect = options.reverteffect;
+ else
+ if(options.ghosting) options_for_draggable.reverteffect = function(element) {
+ element.style.top = 0;
+ element.style.left = 0;
+ };
+
+ if(options.endeffect)
+ options_for_draggable.endeffect = options.endeffect;
+
+ if(options.zindex)
+ options_for_draggable.zindex = options.zindex;
+
+ // build options for the droppables
+ var options_for_droppable = {
+ overlap: options.overlap,
+ containment: options.containment,
+ tree: options.tree,
+ hoverclass: options.hoverclass,
+ onHover: Sortable.onHover
+ }
+
+ var options_for_tree = {
+ onHover: Sortable.onEmptyHover,
+ overlap: options.overlap,
+ containment: options.containment,
+ hoverclass: options.hoverclass
+ }
+
+ // fix for gecko engine
+ Element.cleanWhitespace(element);
+
+ options.draggables = [];
+ options.droppables = [];
+
+ // drop on empty handling
+ if(options.dropOnEmpty || options.tree) {
+ Droppables.add(element, options_for_tree);
+ options.droppables.push(element);
+ }
+
+ (options.elements || this.findElements(element, options) || []).each( function(e,i) {
+ var handle = options.handles ? $(options.handles[i]) :
+ (options.handle ? $(e).select('.' + options.handle)[0] : e);
+ options.draggables.push(
+ new Draggable(e, Object.extend(options_for_draggable, { handle: handle })));
+ Droppables.add(e, options_for_droppable);
+ if(options.tree) e.treeNode = element;
+ options.droppables.push(e);
+ });
+
+ if(options.tree) {
+ (Sortable.findTreeElements(element, options) || []).each( function(e) {
+ Droppables.add(e, options_for_tree);
+ e.treeNode = element;
+ options.droppables.push(e);
+ });
+ }
+
+ // keep reference
+ this.sortables[element.id] = options;
+
+ // for onupdate
+ Draggables.addObserver(new SortableObserver(element, options.onUpdate));
+
+ },
+
+ // return all suitable-for-sortable elements in a guaranteed order
+ findElements: function(element, options) {
+ return Element.findChildren(
+ element, options.only, options.tree ? true : false, options.tag);
+ },
+
+ findTreeElements: function(element, options) {
+ return Element.findChildren(
+ element, options.only, options.tree ? true : false, options.treeTag);
+ },
+
+ onHover: function(element, dropon, overlap) {
+ if(Element.isParent(dropon, element)) return;
+
+ if(overlap > .33 && overlap < .66 && Sortable.options(dropon).tree) {
+ return;
+ } else if(overlap>0.5) {
+ Sortable.mark(dropon, 'before');
+ if(dropon.previousSibling != element) {
+ var oldParentNode = element.parentNode;
+ element.style.visibility = "hidden"; // fix gecko rendering
+ dropon.parentNode.insertBefore(element, dropon);
+ if(dropon.parentNode!=oldParentNode)
+ Sortable.options(oldParentNode).onChange(element);
+ Sortable.options(dropon.parentNode).onChange(element);
+ }
+ } else {
+ Sortable.mark(dropon, 'after');
+ var nextElement = dropon.nextSibling || null;
+ if(nextElement != element) {
+ var oldParentNode = element.parentNode;
+ element.style.visibility = "hidden"; // fix gecko rendering
+ dropon.parentNode.insertBefore(element, nextElement);
+ if(dropon.parentNode!=oldParentNode)
+ Sortable.options(oldParentNode).onChange(element);
+ Sortable.options(dropon.parentNode).onChange(element);
+ }
+ }
+ },
+
+ onEmptyHover: function(element, dropon, overlap) {
+ var oldParentNode = element.parentNode;
+ var droponOptions = Sortable.options(dropon);
+
+ if(!Element.isParent(dropon, element)) {
+ var index;
+
+ var children = Sortable.findElements(dropon, {tag: droponOptions.tag, only: droponOptions.only});
+ var child = null;
+
+ if(children) {
+ var offset = Element.offsetSize(dropon, droponOptions.overlap) * (1.0 - overlap);
+
+ for (index = 0; index < children.length; index += 1) {
+ if (offset - Element.offsetSize (children[index], droponOptions.overlap) >= 0) {
+ offset -= Element.offsetSize (children[index], droponOptions.overlap);
+ } else if (offset - (Element.offsetSize (children[index], droponOptions.overlap) / 2) >= 0) {
+ child = index + 1 < children.length ? children[index + 1] : null;
+ break;
+ } else {
+ child = children[index];
+ break;
+ }
+ }
+ }
+
+ dropon.insertBefore(element, child);
+
+ Sortable.options(oldParentNode).onChange(element);
+ droponOptions.onChange(element);
+ }
+ },
+
+ unmark: function() {
+ if(Sortable._marker) Sortable._marker.hide();
+ },
+
+ mark: function(dropon, position) {
+ // mark on ghosting only
+ var sortable = Sortable.options(dropon.parentNode);
+ if(sortable && !sortable.ghosting) return;
+
+ if(!Sortable._marker) {
+ Sortable._marker =
+ ($('dropmarker') || Element.extend(document.createElement('DIV'))).
+ hide().addClassName('dropmarker').setStyle({position:'absolute'});
+ document.getElementsByTagName("body").item(0).appendChild(Sortable._marker);
+ }
+ var offsets = Position.cumulativeOffset(dropon);
+ Sortable._marker.setStyle({left: offsets[0]+'px', top: offsets[1] + 'px'});
+
+ if(position=='after')
+ if(sortable.overlap == 'horizontal')
+ Sortable._marker.setStyle({left: (offsets[0]+dropon.clientWidth) + 'px'});
+ else
+ Sortable._marker.setStyle({top: (offsets[1]+dropon.clientHeight) + 'px'});
+
+ Sortable._marker.show();
+ },
+
+ _tree: function(element, options, parent) {
+ var children = Sortable.findElements(element, options) || [];
+
+ for (var i = 0; i < children.length; ++i) {
+ var match = children[i].id.match(options.format);
+
+ if (!match) continue;
+
+ var child = {
+ id: encodeURIComponent(match ? match[1] : null),
+ element: element,
+ parent: parent,
+ children: [],
+ position: parent.children.length,
+ container: $(children[i]).down(options.treeTag)
+ }
+
+ /* Get the element containing the children and recurse over it */
+ if (child.container)
+ this._tree(child.container, options, child)
+
+ parent.children.push (child);
+ }
+
+ return parent;
+ },
+
+ tree: function(element) {
+ element = $(element);
+ var sortableOptions = this.options(element);
+ var options = Object.extend({
+ tag: sortableOptions.tag,
+ treeTag: sortableOptions.treeTag,
+ only: sortableOptions.only,
+ name: element.id,
+ format: sortableOptions.format
+ }, arguments[1] || { });
+
+ var root = {
+ id: null,
+ parent: null,
+ children: [],
+ container: element,
+ position: 0
+ }
+
+ return Sortable._tree(element, options, root);
+ },
+
+ /* Construct a [i] index for a particular node */
+ _constructIndex: function(node) {
+ var index = '';
+ do {
+ if (node.id) index = '[' + node.position + ']' + index;
+ } while ((node = node.parent) != null);
+ return index;
+ },
+
+ sequence: function(element) {
+ element = $(element);
+ var options = Object.extend(this.options(element), arguments[1] || { });
+
+ return $(this.findElements(element, options) || []).map( function(item) {
+ return item.id.match(options.format) ? item.id.match(options.format)[1] : '';
+ });
+ },
+
+ setSequence: function(element, new_sequence) {
+ element = $(element);
+ var options = Object.extend(this.options(element), arguments[2] || { });
+
+ var nodeMap = { };
+ this.findElements(element, options).each( function(n) {
+ if (n.id.match(options.format))
+ nodeMap[n.id.match(options.format)[1]] = [n, n.parentNode];
+ n.parentNode.removeChild(n);
+ });
+
+ new_sequence.each(function(ident) {
+ var n = nodeMap[ident];
+ if (n) {
+ n[1].appendChild(n[0]);
+ delete nodeMap[ident];
+ }
+ });
+ },
+
+ serialize: function(element) {
+ element = $(element);
+ var options = Object.extend(Sortable.options(element), arguments[1] || { });
+ var name = encodeURIComponent(
+ (arguments[1] && arguments[1].name) ? arguments[1].name : element.id);
+
+ if (options.tree) {
+ return Sortable.tree(element, arguments[1]).children.map( function (item) {
+ return [name + Sortable._constructIndex(item) + "[id]=" +
+ encodeURIComponent(item.id)].concat(item.children.map(arguments.callee));
+ }).flatten().join('&');
+ } else {
+ return Sortable.sequence(element, arguments[1]).map( function(item) {
+ return name + "[]=" + encodeURIComponent(item);
+ }).join('&');
+ }
+ }
+}
+
+// Returns true if child is contained within element
+Element.isParent = function(child, element) {
+ if (!child.parentNode || child == element) return false;
+ if (child.parentNode == element) return true;
+ return Element.isParent(child.parentNode, element);
+}
+
+Element.findChildren = function(element, only, recursive, tagName) {
+ if(!element.hasChildNodes()) return null;
+ tagName = tagName.toUpperCase();
+ if(only) only = [only].flatten();
+ var elements = [];
+ $A(element.childNodes).each( function(e) {
+ if(e.tagName && e.tagName.toUpperCase()==tagName &&
+ (!only || (Element.classNames(e).detect(function(v) { return only.include(v) }))))
+ elements.push(e);
+ if(recursive) {
+ var grandchildren = Element.findChildren(e, only, recursive, tagName);
+ if(grandchildren) elements.push(grandchildren);
+ }
+ });
+
+ return (elements.length>0 ? elements.flatten() : []);
+}
+
+Element.offsetSize = function (element, type) {
+ return element['offset' + ((type=='vertical' || type=='height') ? 'Height' : 'Width')];
+}
diff --git a/app/assets/javascripts/effects.js b/app/assets/javascripts/effects.js
new file mode 100644
index 0000000..f030b5d
--- /dev/null
+++ b/app/assets/javascripts/effects.js
@@ -0,0 +1,1120 @@
+// Copyright (c) 2005-2008 Thomas Fuchs (http://script.aculo.us, http://mir.aculo.us)
+// Contributors:
+// Justin Palmer (http://encytemedia.com/)
+// Mark Pilgrim (http://diveintomark.org/)
+// Martin Bialasinki
+//
+// script.aculo.us is freely distributable under the terms of an MIT-style license.
+// For details, see the script.aculo.us web site: http://script.aculo.us/
+
+// converts rgb() and #xxx to #xxxxxx format,
+// returns self (or first argument) if not convertable
+String.prototype.parseColor = function() {
+ var color = '#';
+ if (this.slice(0,4) == 'rgb(') {
+ var cols = this.slice(4,this.length-1).split(',');
+ var i=0; do { color += parseInt(cols[i]).toColorPart() } while (++i<3);
+ } else {
+ if (this.slice(0,1) == '#') {
+ if (this.length==4) for(var i=1;i<4;i++) color += (this.charAt(i) + this.charAt(i)).toLowerCase();
+ if (this.length==7) color = this.toLowerCase();
+ }
+ }
+ return (color.length==7 ? color : (arguments[0] || this));
+};
+
+/*--------------------------------------------------------------------------*/
+
+Element.collectTextNodes = function(element) {
+ return $A($(element).childNodes).collect( function(node) {
+ return (node.nodeType==3 ? node.nodeValue :
+ (node.hasChildNodes() ? Element.collectTextNodes(node) : ''));
+ }).flatten().join('');
+};
+
+Element.collectTextNodesIgnoreClass = function(element, className) {
+ return $A($(element).childNodes).collect( function(node) {
+ return (node.nodeType==3 ? node.nodeValue :
+ ((node.hasChildNodes() && !Element.hasClassName(node,className)) ?
+ Element.collectTextNodesIgnoreClass(node, className) : ''));
+ }).flatten().join('');
+};
+
+Element.setContentZoom = function(element, percent) {
+ element = $(element);
+ element.setStyle({fontSize: (percent/100) + 'em'});
+ if (Prototype.Browser.WebKit) window.scrollBy(0,0);
+ return element;
+};
+
+Element.getInlineOpacity = function(element){
+ return $(element).style.opacity || '';
+};
+
+Element.forceRerendering = function(element) {
+ try {
+ element = $(element);
+ var n = document.createTextNode(' ');
+ element.appendChild(n);
+ element.removeChild(n);
+ } catch(e) { }
+};
+
+/*--------------------------------------------------------------------------*/
+
+var Effect = {
+ _elementDoesNotExistError: {
+ name: 'ElementDoesNotExistError',
+ message: 'The specified DOM element does not exist, but is required for this effect to operate'
+ },
+ Transitions: {
+ linear: Prototype.K,
+ sinoidal: function(pos) {
+ return (-Math.cos(pos*Math.PI)/2) + 0.5;
+ },
+ reverse: function(pos) {
+ return 1-pos;
+ },
+ flicker: function(pos) {
+ var pos = ((-Math.cos(pos*Math.PI)/4) + 0.75) + Math.random()/4;
+ return pos > 1 ? 1 : pos;
+ },
+ wobble: function(pos) {
+ return (-Math.cos(pos*Math.PI*(9*pos))/2) + 0.5;
+ },
+ pulse: function(pos, pulses) {
+ pulses = pulses || 5;
+ return (
+ ((pos % (1/pulses)) * pulses).round() == 0 ?
+ ((pos * pulses * 2) - (pos * pulses * 2).floor()) :
+ 1 - ((pos * pulses * 2) - (pos * pulses * 2).floor())
+ );
+ },
+ spring: function(pos) {
+ return 1 - (Math.cos(pos * 4.5 * Math.PI) * Math.exp(-pos * 6));
+ },
+ none: function(pos) {
+ return 0;
+ },
+ full: function(pos) {
+ return 1;
+ }
+ },
+ DefaultOptions: {
+ duration: 1.0, // seconds
+ fps: 100, // 100= assume 66fps max.
+ sync: false, // true for combining
+ from: 0.0,
+ to: 1.0,
+ delay: 0.0,
+ queue: 'parallel'
+ },
+ tagifyText: function(element) {
+ var tagifyStyle = 'position:relative';
+ if (Prototype.Browser.IE) tagifyStyle += ';zoom:1';
+
+ element = $(element);
+ $A(element.childNodes).each( function(child) {
+ if (child.nodeType==3) {
+ child.nodeValue.toArray().each( function(character) {
+ element.insertBefore(
+ new Element('span', {style: tagifyStyle}).update(
+ character == ' ' ? String.fromCharCode(160) : character),
+ child);
+ });
+ Element.remove(child);
+ }
+ });
+ },
+ multiple: function(element, effect) {
+ var elements;
+ if (((typeof element == 'object') ||
+ Object.isFunction(element)) &&
+ (element.length))
+ elements = element;
+ else
+ elements = $(element).childNodes;
+
+ var options = Object.extend({
+ speed: 0.1,
+ delay: 0.0
+ }, arguments[2] || { });
+ var masterDelay = options.delay;
+
+ $A(elements).each( function(element, index) {
+ new effect(element, Object.extend(options, { delay: index * options.speed + masterDelay }));
+ });
+ },
+ PAIRS: {
+ 'slide': ['SlideDown','SlideUp'],
+ 'blind': ['BlindDown','BlindUp'],
+ 'appear': ['Appear','Fade']
+ },
+ toggle: function(element, effect) {
+ element = $(element);
+ effect = (effect || 'appear').toLowerCase();
+ var options = Object.extend({
+ queue: { position:'end', scope:(element.id || 'global'), limit: 1 }
+ }, arguments[2] || { });
+ Effect[element.visible() ?
+ Effect.PAIRS[effect][1] : Effect.PAIRS[effect][0]](element, options);
+ }
+};
+
+Effect.DefaultOptions.transition = Effect.Transitions.sinoidal;
+
+/* ------------- core effects ------------- */
+
+Effect.ScopedQueue = Class.create(Enumerable, {
+ initialize: function() {
+ this.effects = [];
+ this.interval = null;
+ },
+ _each: function(iterator) {
+ this.effects._each(iterator);
+ },
+ add: function(effect) {
+ var timestamp = new Date().getTime();
+
+ var position = Object.isString(effect.options.queue) ?
+ effect.options.queue : effect.options.queue.position;
+
+ switch(position) {
+ case 'front':
+ // move unstarted effects after this effect
+ this.effects.findAll(function(e){ return e.state=='idle' }).each( function(e) {
+ e.startOn += effect.finishOn;
+ e.finishOn += effect.finishOn;
+ });
+ break;
+ case 'with-last':
+ timestamp = this.effects.pluck('startOn').max() || timestamp;
+ break;
+ case 'end':
+ // start effect after last queued effect has finished
+ timestamp = this.effects.pluck('finishOn').max() || timestamp;
+ break;
+ }
+
+ effect.startOn += timestamp;
+ effect.finishOn += timestamp;
+
+ if (!effect.options.queue.limit || (this.effects.length < effect.options.queue.limit))
+ this.effects.push(effect);
+
+ if (!this.interval)
+ this.interval = setInterval(this.loop.bind(this), 15);
+ },
+ remove: function(effect) {
+ this.effects = this.effects.reject(function(e) { return e==effect });
+ if (this.effects.length == 0) {
+ clearInterval(this.interval);
+ this.interval = null;
+ }
+ },
+ loop: function() {
+ var timePos = new Date().getTime();
+ for(var i=0, len=this.effects.length;i= this.startOn) {
+ if (timePos >= this.finishOn) {
+ this.render(1.0);
+ this.cancel();
+ this.event('beforeFinish');
+ if (this.finish) this.finish();
+ this.event('afterFinish');
+ return;
+ }
+ var pos = (timePos - this.startOn) / this.totalTime,
+ frame = (pos * this.totalFrames).round();
+ if (frame > this.currentFrame) {
+ this.render(pos);
+ this.currentFrame = frame;
+ }
+ }
+ },
+ cancel: function() {
+ if (!this.options.sync)
+ Effect.Queues.get(Object.isString(this.options.queue) ?
+ 'global' : this.options.queue.scope).remove(this);
+ this.state = 'finished';
+ },
+ event: function(eventName) {
+ if (this.options[eventName + 'Internal']) this.options[eventName + 'Internal'](this);
+ if (this.options[eventName]) this.options[eventName](this);
+ },
+ inspect: function() {
+ var data = $H();
+ for(property in this)
+ if (!Object.isFunction(this[property])) data.set(property, this[property]);
+ return '#';
+ }
+});
+
+Effect.Parallel = Class.create(Effect.Base, {
+ initialize: function(effects) {
+ this.effects = effects || [];
+ this.start(arguments[1]);
+ },
+ update: function(position) {
+ this.effects.invoke('render', position);
+ },
+ finish: function(position) {
+ this.effects.each( function(effect) {
+ effect.render(1.0);
+ effect.cancel();
+ effect.event('beforeFinish');
+ if (effect.finish) effect.finish(position);
+ effect.event('afterFinish');
+ });
+ }
+});
+
+Effect.Tween = Class.create(Effect.Base, {
+ initialize: function(object, from, to) {
+ object = Object.isString(object) ? $(object) : object;
+ var args = $A(arguments), method = args.last(),
+ options = args.length == 5 ? args[3] : null;
+ this.method = Object.isFunction(method) ? method.bind(object) :
+ Object.isFunction(object[method]) ? object[method].bind(object) :
+ function(value) { object[method] = value };
+ this.start(Object.extend({ from: from, to: to }, options || { }));
+ },
+ update: function(position) {
+ this.method(position);
+ }
+});
+
+Effect.Event = Class.create(Effect.Base, {
+ initialize: function() {
+ this.start(Object.extend({ duration: 0 }, arguments[0] || { }));
+ },
+ update: Prototype.emptyFunction
+});
+
+Effect.Opacity = Class.create(Effect.Base, {
+ initialize: function(element) {
+ this.element = $(element);
+ if (!this.element) throw(Effect._elementDoesNotExistError);
+ // make this work on IE on elements without 'layout'
+ if (Prototype.Browser.IE && (!this.element.currentStyle.hasLayout))
+ this.element.setStyle({zoom: 1});
+ var options = Object.extend({
+ from: this.element.getOpacity() || 0.0,
+ to: 1.0
+ }, arguments[1] || { });
+ this.start(options);
+ },
+ update: function(position) {
+ this.element.setOpacity(position);
+ }
+});
+
+Effect.Move = Class.create(Effect.Base, {
+ initialize: function(element) {
+ this.element = $(element);
+ if (!this.element) throw(Effect._elementDoesNotExistError);
+ var options = Object.extend({
+ x: 0,
+ y: 0,
+ mode: 'relative'
+ }, arguments[1] || { });
+ this.start(options);
+ },
+ setup: function() {
+ this.element.makePositioned();
+ this.originalLeft = parseFloat(this.element.getStyle('left') || '0');
+ this.originalTop = parseFloat(this.element.getStyle('top') || '0');
+ if (this.options.mode == 'absolute') {
+ this.options.x = this.options.x - this.originalLeft;
+ this.options.y = this.options.y - this.originalTop;
+ }
+ },
+ update: function(position) {
+ this.element.setStyle({
+ left: (this.options.x * position + this.originalLeft).round() + 'px',
+ top: (this.options.y * position + this.originalTop).round() + 'px'
+ });
+ }
+});
+
+// for backwards compatibility
+Effect.MoveBy = function(element, toTop, toLeft) {
+ return new Effect.Move(element,
+ Object.extend({ x: toLeft, y: toTop }, arguments[3] || { }));
+};
+
+Effect.Scale = Class.create(Effect.Base, {
+ initialize: function(element, percent) {
+ this.element = $(element);
+ if (!this.element) throw(Effect._elementDoesNotExistError);
+ var options = Object.extend({
+ scaleX: true,
+ scaleY: true,
+ scaleContent: true,
+ scaleFromCenter: false,
+ scaleMode: 'box', // 'box' or 'contents' or { } with provided values
+ scaleFrom: 100.0,
+ scaleTo: percent
+ }, arguments[2] || { });
+ this.start(options);
+ },
+ setup: function() {
+ this.restoreAfterFinish = this.options.restoreAfterFinish || false;
+ this.elementPositioning = this.element.getStyle('position');
+
+ this.originalStyle = { };
+ ['top','left','width','height','fontSize'].each( function(k) {
+ this.originalStyle[k] = this.element.style[k];
+ }.bind(this));
+
+ this.originalTop = this.element.offsetTop;
+ this.originalLeft = this.element.offsetLeft;
+
+ var fontSize = this.element.getStyle('font-size') || '100%';
+ ['em','px','%','pt'].each( function(fontSizeType) {
+ if (fontSize.indexOf(fontSizeType)>0) {
+ this.fontSize = parseFloat(fontSize);
+ this.fontSizeType = fontSizeType;
+ }
+ }.bind(this));
+
+ this.factor = (this.options.scaleTo - this.options.scaleFrom)/100;
+
+ this.dims = null;
+ if (this.options.scaleMode=='box')
+ this.dims = [this.element.offsetHeight, this.element.offsetWidth];
+ if (/^content/.test(this.options.scaleMode))
+ this.dims = [this.element.scrollHeight, this.element.scrollWidth];
+ if (!this.dims)
+ this.dims = [this.options.scaleMode.originalHeight,
+ this.options.scaleMode.originalWidth];
+ },
+ update: function(position) {
+ var currentScale = (this.options.scaleFrom/100.0) + (this.factor * position);
+ if (this.options.scaleContent && this.fontSize)
+ this.element.setStyle({fontSize: this.fontSize * currentScale + this.fontSizeType });
+ this.setDimensions(this.dims[0] * currentScale, this.dims[1] * currentScale);
+ },
+ finish: function(position) {
+ if (this.restoreAfterFinish) this.element.setStyle(this.originalStyle);
+ },
+ setDimensions: function(height, width) {
+ var d = { };
+ if (this.options.scaleX) d.width = width.round() + 'px';
+ if (this.options.scaleY) d.height = height.round() + 'px';
+ if (this.options.scaleFromCenter) {
+ var topd = (height - this.dims[0])/2;
+ var leftd = (width - this.dims[1])/2;
+ if (this.elementPositioning == 'absolute') {
+ if (this.options.scaleY) d.top = this.originalTop-topd + 'px';
+ if (this.options.scaleX) d.left = this.originalLeft-leftd + 'px';
+ } else {
+ if (this.options.scaleY) d.top = -topd + 'px';
+ if (this.options.scaleX) d.left = -leftd + 'px';
+ }
+ }
+ this.element.setStyle(d);
+ }
+});
+
+Effect.Highlight = Class.create(Effect.Base, {
+ initialize: function(element) {
+ this.element = $(element);
+ if (!this.element) throw(Effect._elementDoesNotExistError);
+ var options = Object.extend({ startcolor: '#ffff99' }, arguments[1] || { });
+ this.start(options);
+ },
+ setup: function() {
+ // Prevent executing on elements not in the layout flow
+ if (this.element.getStyle('display')=='none') { this.cancel(); return; }
+ // Disable background image during the effect
+ this.oldStyle = { };
+ if (!this.options.keepBackgroundImage) {
+ this.oldStyle.backgroundImage = this.element.getStyle('background-image');
+ this.element.setStyle({backgroundImage: 'none'});
+ }
+ if (!this.options.endcolor)
+ this.options.endcolor = this.element.getStyle('background-color').parseColor('#ffffff');
+ if (!this.options.restorecolor)
+ this.options.restorecolor = this.element.getStyle('background-color');
+ // init color calculations
+ this._base = $R(0,2).map(function(i){ return parseInt(this.options.startcolor.slice(i*2+1,i*2+3),16) }.bind(this));
+ this._delta = $R(0,2).map(function(i){ return parseInt(this.options.endcolor.slice(i*2+1,i*2+3),16)-this._base[i] }.bind(this));
+ },
+ update: function(position) {
+ this.element.setStyle({backgroundColor: $R(0,2).inject('#',function(m,v,i){
+ return m+((this._base[i]+(this._delta[i]*position)).round().toColorPart()); }.bind(this)) });
+ },
+ finish: function() {
+ this.element.setStyle(Object.extend(this.oldStyle, {
+ backgroundColor: this.options.restorecolor
+ }));
+ }
+});
+
+Effect.ScrollTo = function(element) {
+ var options = arguments[1] || { },
+ scrollOffsets = document.viewport.getScrollOffsets(),
+ elementOffsets = $(element).cumulativeOffset(),
+ max = (window.height || document.body.scrollHeight) - document.viewport.getHeight();
+
+ if (options.offset) elementOffsets[1] += options.offset;
+
+ return new Effect.Tween(null,
+ scrollOffsets.top,
+ elementOffsets[1] > max ? max : elementOffsets[1],
+ options,
+ function(p){ scrollTo(scrollOffsets.left, p.round()) }
+ );
+};
+
+/* ------------- combination effects ------------- */
+
+Effect.Fade = function(element) {
+ element = $(element);
+ var oldOpacity = element.getInlineOpacity();
+ var options = Object.extend({
+ from: element.getOpacity() || 1.0,
+ to: 0.0,
+ afterFinishInternal: function(effect) {
+ if (effect.options.to!=0) return;
+ effect.element.hide().setStyle({opacity: oldOpacity});
+ }
+ }, arguments[1] || { });
+ return new Effect.Opacity(element,options);
+};
+
+Effect.Appear = function(element) {
+ element = $(element);
+ var options = Object.extend({
+ from: (element.getStyle('display') == 'none' ? 0.0 : element.getOpacity() || 0.0),
+ to: 1.0,
+ // force Safari to render floated elements properly
+ afterFinishInternal: function(effect) {
+ effect.element.forceRerendering();
+ },
+ beforeSetup: function(effect) {
+ effect.element.setOpacity(effect.options.from).show();
+ }}, arguments[1] || { });
+ return new Effect.Opacity(element,options);
+};
+
+Effect.Puff = function(element) {
+ element = $(element);
+ var oldStyle = {
+ opacity: element.getInlineOpacity(),
+ position: element.getStyle('position'),
+ top: element.style.top,
+ left: element.style.left,
+ width: element.style.width,
+ height: element.style.height
+ };
+ return new Effect.Parallel(
+ [ new Effect.Scale(element, 200,
+ { sync: true, scaleFromCenter: true, scaleContent: true, restoreAfterFinish: true }),
+ new Effect.Opacity(element, { sync: true, to: 0.0 } ) ],
+ Object.extend({ duration: 1.0,
+ beforeSetupInternal: function(effect) {
+ Position.absolutize(effect.effects[0].element)
+ },
+ afterFinishInternal: function(effect) {
+ effect.effects[0].element.hide().setStyle(oldStyle); }
+ }, arguments[1] || { })
+ );
+};
+
+Effect.BlindUp = function(element) {
+ element = $(element);
+ element.makeClipping();
+ return new Effect.Scale(element, 0,
+ Object.extend({ scaleContent: false,
+ scaleX: false,
+ restoreAfterFinish: true,
+ afterFinishInternal: function(effect) {
+ effect.element.hide().undoClipping();
+ }
+ }, arguments[1] || { })
+ );
+};
+
+Effect.BlindDown = function(element) {
+ element = $(element);
+ var elementDimensions = element.getDimensions();
+ return new Effect.Scale(element, 100, Object.extend({
+ scaleContent: false,
+ scaleX: false,
+ scaleFrom: 0,
+ scaleMode: {originalHeight: elementDimensions.height, originalWidth: elementDimensions.width},
+ restoreAfterFinish: true,
+ afterSetup: function(effect) {
+ effect.element.makeClipping().setStyle({height: '0px'}).show();
+ },
+ afterFinishInternal: function(effect) {
+ effect.element.undoClipping();
+ }
+ }, arguments[1] || { }));
+};
+
+Effect.SwitchOff = function(element) {
+ element = $(element);
+ var oldOpacity = element.getInlineOpacity();
+ return new Effect.Appear(element, Object.extend({
+ duration: 0.4,
+ from: 0,
+ transition: Effect.Transitions.flicker,
+ afterFinishInternal: function(effect) {
+ new Effect.Scale(effect.element, 1, {
+ duration: 0.3, scaleFromCenter: true,
+ scaleX: false, scaleContent: false, restoreAfterFinish: true,
+ beforeSetup: function(effect) {
+ effect.element.makePositioned().makeClipping();
+ },
+ afterFinishInternal: function(effect) {
+ effect.element.hide().undoClipping().undoPositioned().setStyle({opacity: oldOpacity});
+ }
+ })
+ }
+ }, arguments[1] || { }));
+};
+
+Effect.DropOut = function(element) {
+ element = $(element);
+ var oldStyle = {
+ top: element.getStyle('top'),
+ left: element.getStyle('left'),
+ opacity: element.getInlineOpacity() };
+ return new Effect.Parallel(
+ [ new Effect.Move(element, {x: 0, y: 100, sync: true }),
+ new Effect.Opacity(element, { sync: true, to: 0.0 }) ],
+ Object.extend(
+ { duration: 0.5,
+ beforeSetup: function(effect) {
+ effect.effects[0].element.makePositioned();
+ },
+ afterFinishInternal: function(effect) {
+ effect.effects[0].element.hide().undoPositioned().setStyle(oldStyle);
+ }
+ }, arguments[1] || { }));
+};
+
+Effect.Shake = function(element) {
+ element = $(element);
+ var options = Object.extend({
+ distance: 20,
+ duration: 0.5
+ }, arguments[1] || {});
+ var distance = parseFloat(options.distance);
+ var split = parseFloat(options.duration) / 10.0;
+ var oldStyle = {
+ top: element.getStyle('top'),
+ left: element.getStyle('left') };
+ return new Effect.Move(element,
+ { x: distance, y: 0, duration: split, afterFinishInternal: function(effect) {
+ new Effect.Move(effect.element,
+ { x: -distance*2, y: 0, duration: split*2, afterFinishInternal: function(effect) {
+ new Effect.Move(effect.element,
+ { x: distance*2, y: 0, duration: split*2, afterFinishInternal: function(effect) {
+ new Effect.Move(effect.element,
+ { x: -distance*2, y: 0, duration: split*2, afterFinishInternal: function(effect) {
+ new Effect.Move(effect.element,
+ { x: distance*2, y: 0, duration: split*2, afterFinishInternal: function(effect) {
+ new Effect.Move(effect.element,
+ { x: -distance, y: 0, duration: split, afterFinishInternal: function(effect) {
+ effect.element.undoPositioned().setStyle(oldStyle);
+ }}) }}) }}) }}) }}) }});
+};
+
+Effect.SlideDown = function(element) {
+ element = $(element).cleanWhitespace();
+ // SlideDown need to have the content of the element wrapped in a container element with fixed height!
+ var oldInnerBottom = element.down().getStyle('bottom');
+ var elementDimensions = element.getDimensions();
+ return new Effect.Scale(element, 100, Object.extend({
+ scaleContent: false,
+ scaleX: false,
+ scaleFrom: window.opera ? 0 : 1,
+ scaleMode: {originalHeight: elementDimensions.height, originalWidth: elementDimensions.width},
+ restoreAfterFinish: true,
+ afterSetup: function(effect) {
+ effect.element.makePositioned();
+ effect.element.down().makePositioned();
+ if (window.opera) effect.element.setStyle({top: ''});
+ effect.element.makeClipping().setStyle({height: '0px'}).show();
+ },
+ afterUpdateInternal: function(effect) {
+ effect.element.down().setStyle({bottom:
+ (effect.dims[0] - effect.element.clientHeight) + 'px' });
+ },
+ afterFinishInternal: function(effect) {
+ effect.element.undoClipping().undoPositioned();
+ effect.element.down().undoPositioned().setStyle({bottom: oldInnerBottom}); }
+ }, arguments[1] || { })
+ );
+};
+
+Effect.SlideUp = function(element) {
+ element = $(element).cleanWhitespace();
+ var oldInnerBottom = element.down().getStyle('bottom');
+ var elementDimensions = element.getDimensions();
+ return new Effect.Scale(element, window.opera ? 0 : 1,
+ Object.extend({ scaleContent: false,
+ scaleX: false,
+ scaleMode: 'box',
+ scaleFrom: 100,
+ scaleMode: {originalHeight: elementDimensions.height, originalWidth: elementDimensions.width},
+ restoreAfterFinish: true,
+ afterSetup: function(effect) {
+ effect.element.makePositioned();
+ effect.element.down().makePositioned();
+ if (window.opera) effect.element.setStyle({top: ''});
+ effect.element.makeClipping().show();
+ },
+ afterUpdateInternal: function(effect) {
+ effect.element.down().setStyle({bottom:
+ (effect.dims[0] - effect.element.clientHeight) + 'px' });
+ },
+ afterFinishInternal: function(effect) {
+ effect.element.hide().undoClipping().undoPositioned();
+ effect.element.down().undoPositioned().setStyle({bottom: oldInnerBottom});
+ }
+ }, arguments[1] || { })
+ );
+};
+
+// Bug in opera makes the TD containing this element expand for a instance after finish
+Effect.Squish = function(element) {
+ return new Effect.Scale(element, window.opera ? 1 : 0, {
+ restoreAfterFinish: true,
+ beforeSetup: function(effect) {
+ effect.element.makeClipping();
+ },
+ afterFinishInternal: function(effect) {
+ effect.element.hide().undoClipping();
+ }
+ });
+};
+
+Effect.Grow = function(element) {
+ element = $(element);
+ var options = Object.extend({
+ direction: 'center',
+ moveTransition: Effect.Transitions.sinoidal,
+ scaleTransition: Effect.Transitions.sinoidal,
+ opacityTransition: Effect.Transitions.full
+ }, arguments[1] || { });
+ var oldStyle = {
+ top: element.style.top,
+ left: element.style.left,
+ height: element.style.height,
+ width: element.style.width,
+ opacity: element.getInlineOpacity() };
+
+ var dims = element.getDimensions();
+ var initialMoveX, initialMoveY;
+ var moveX, moveY;
+
+ switch (options.direction) {
+ case 'top-left':
+ initialMoveX = initialMoveY = moveX = moveY = 0;
+ break;
+ case 'top-right':
+ initialMoveX = dims.width;
+ initialMoveY = moveY = 0;
+ moveX = -dims.width;
+ break;
+ case 'bottom-left':
+ initialMoveX = moveX = 0;
+ initialMoveY = dims.height;
+ moveY = -dims.height;
+ break;
+ case 'bottom-right':
+ initialMoveX = dims.width;
+ initialMoveY = dims.height;
+ moveX = -dims.width;
+ moveY = -dims.height;
+ break;
+ case 'center':
+ initialMoveX = dims.width / 2;
+ initialMoveY = dims.height / 2;
+ moveX = -dims.width / 2;
+ moveY = -dims.height / 2;
+ break;
+ }
+
+ return new Effect.Move(element, {
+ x: initialMoveX,
+ y: initialMoveY,
+ duration: 0.01,
+ beforeSetup: function(effect) {
+ effect.element.hide().makeClipping().makePositioned();
+ },
+ afterFinishInternal: function(effect) {
+ new Effect.Parallel(
+ [ new Effect.Opacity(effect.element, { sync: true, to: 1.0, from: 0.0, transition: options.opacityTransition }),
+ new Effect.Move(effect.element, { x: moveX, y: moveY, sync: true, transition: options.moveTransition }),
+ new Effect.Scale(effect.element, 100, {
+ scaleMode: { originalHeight: dims.height, originalWidth: dims.width },
+ sync: true, scaleFrom: window.opera ? 1 : 0, transition: options.scaleTransition, restoreAfterFinish: true})
+ ], Object.extend({
+ beforeSetup: function(effect) {
+ effect.effects[0].element.setStyle({height: '0px'}).show();
+ },
+ afterFinishInternal: function(effect) {
+ effect.effects[0].element.undoClipping().undoPositioned().setStyle(oldStyle);
+ }
+ }, options)
+ )
+ }
+ });
+};
+
+Effect.Shrink = function(element) {
+ element = $(element);
+ var options = Object.extend({
+ direction: 'center',
+ moveTransition: Effect.Transitions.sinoidal,
+ scaleTransition: Effect.Transitions.sinoidal,
+ opacityTransition: Effect.Transitions.none
+ }, arguments[1] || { });
+ var oldStyle = {
+ top: element.style.top,
+ left: element.style.left,
+ height: element.style.height,
+ width: element.style.width,
+ opacity: element.getInlineOpacity() };
+
+ var dims = element.getDimensions();
+ var moveX, moveY;
+
+ switch (options.direction) {
+ case 'top-left':
+ moveX = moveY = 0;
+ break;
+ case 'top-right':
+ moveX = dims.width;
+ moveY = 0;
+ break;
+ case 'bottom-left':
+ moveX = 0;
+ moveY = dims.height;
+ break;
+ case 'bottom-right':
+ moveX = dims.width;
+ moveY = dims.height;
+ break;
+ case 'center':
+ moveX = dims.width / 2;
+ moveY = dims.height / 2;
+ break;
+ }
+
+ return new Effect.Parallel(
+ [ new Effect.Opacity(element, { sync: true, to: 0.0, from: 1.0, transition: options.opacityTransition }),
+ new Effect.Scale(element, window.opera ? 1 : 0, { sync: true, transition: options.scaleTransition, restoreAfterFinish: true}),
+ new Effect.Move(element, { x: moveX, y: moveY, sync: true, transition: options.moveTransition })
+ ], Object.extend({
+ beforeStartInternal: function(effect) {
+ effect.effects[0].element.makePositioned().makeClipping();
+ },
+ afterFinishInternal: function(effect) {
+ effect.effects[0].element.hide().undoClipping().undoPositioned().setStyle(oldStyle); }
+ }, options)
+ );
+};
+
+Effect.Pulsate = function(element) {
+ element = $(element);
+ var options = arguments[1] || { };
+ var oldOpacity = element.getInlineOpacity();
+ var transition = options.transition || Effect.Transitions.sinoidal;
+ var reverser = function(pos){ return transition(1-Effect.Transitions.pulse(pos, options.pulses)) };
+ reverser.bind(transition);
+ return new Effect.Opacity(element,
+ Object.extend(Object.extend({ duration: 2.0, from: 0,
+ afterFinishInternal: function(effect) { effect.element.setStyle({opacity: oldOpacity}); }
+ }, options), {transition: reverser}));
+};
+
+Effect.Fold = function(element) {
+ element = $(element);
+ var oldStyle = {
+ top: element.style.top,
+ left: element.style.left,
+ width: element.style.width,
+ height: element.style.height };
+ element.makeClipping();
+ return new Effect.Scale(element, 5, Object.extend({
+ scaleContent: false,
+ scaleX: false,
+ afterFinishInternal: function(effect) {
+ new Effect.Scale(element, 1, {
+ scaleContent: false,
+ scaleY: false,
+ afterFinishInternal: function(effect) {
+ effect.element.hide().undoClipping().setStyle(oldStyle);
+ } });
+ }}, arguments[1] || { }));
+};
+
+Effect.Morph = Class.create(Effect.Base, {
+ initialize: function(element) {
+ this.element = $(element);
+ if (!this.element) throw(Effect._elementDoesNotExistError);
+ var options = Object.extend({
+ style: { }
+ }, arguments[1] || { });
+
+ if (!Object.isString(options.style)) this.style = $H(options.style);
+ else {
+ if (options.style.include(':'))
+ this.style = options.style.parseStyle();
+ else {
+ this.element.addClassName(options.style);
+ this.style = $H(this.element.getStyles());
+ this.element.removeClassName(options.style);
+ var css = this.element.getStyles();
+ this.style = this.style.reject(function(style) {
+ return style.value == css[style.key];
+ });
+ options.afterFinishInternal = function(effect) {
+ effect.element.addClassName(effect.options.style);
+ effect.transforms.each(function(transform) {
+ effect.element.style[transform.style] = '';
+ });
+ }
+ }
+ }
+ this.start(options);
+ },
+
+ setup: function(){
+ function parseColor(color){
+ if (!color || ['rgba(0, 0, 0, 0)','transparent'].include(color)) color = '#ffffff';
+ color = color.parseColor();
+ return $R(0,2).map(function(i){
+ return parseInt( color.slice(i*2+1,i*2+3), 16 )
+ });
+ }
+ this.transforms = this.style.map(function(pair){
+ var property = pair[0], value = pair[1], unit = null;
+
+ if (value.parseColor('#zzzzzz') != '#zzzzzz') {
+ value = value.parseColor();
+ unit = 'color';
+ } else if (property == 'opacity') {
+ value = parseFloat(value);
+ if (Prototype.Browser.IE && (!this.element.currentStyle.hasLayout))
+ this.element.setStyle({zoom: 1});
+ } else if (Element.CSS_LENGTH.test(value)) {
+ var components = value.match(/^([\+\-]?[0-9\.]+)(.*)$/);
+ value = parseFloat(components[1]);
+ unit = (components.length == 3) ? components[2] : null;
+ }
+
+ var originalValue = this.element.getStyle(property);
+ return {
+ style: property.camelize(),
+ originalValue: unit=='color' ? parseColor(originalValue) : parseFloat(originalValue || 0),
+ targetValue: unit=='color' ? parseColor(value) : value,
+ unit: unit
+ };
+ }.bind(this)).reject(function(transform){
+ return (
+ (transform.originalValue == transform.targetValue) ||
+ (
+ transform.unit != 'color' &&
+ (isNaN(transform.originalValue) || isNaN(transform.targetValue))
+ )
+ )
+ });
+ },
+ update: function(position) {
+ var style = { }, transform, i = this.transforms.length;
+ while(i--)
+ style[(transform = this.transforms[i]).style] =
+ transform.unit=='color' ? '#'+
+ (Math.round(transform.originalValue[0]+
+ (transform.targetValue[0]-transform.originalValue[0])*position)).toColorPart() +
+ (Math.round(transform.originalValue[1]+
+ (transform.targetValue[1]-transform.originalValue[1])*position)).toColorPart() +
+ (Math.round(transform.originalValue[2]+
+ (transform.targetValue[2]-transform.originalValue[2])*position)).toColorPart() :
+ (transform.originalValue +
+ (transform.targetValue - transform.originalValue) * position).toFixed(3) +
+ (transform.unit === null ? '' : transform.unit);
+ this.element.setStyle(style, true);
+ }
+});
+
+Effect.Transform = Class.create({
+ initialize: function(tracks){
+ this.tracks = [];
+ this.options = arguments[1] || { };
+ this.addTracks(tracks);
+ },
+ addTracks: function(tracks){
+ tracks.each(function(track){
+ track = $H(track);
+ var data = track.values().first();
+ this.tracks.push($H({
+ ids: track.keys().first(),
+ effect: Effect.Morph,
+ options: { style: data }
+ }));
+ }.bind(this));
+ return this;
+ },
+ play: function(){
+ return new Effect.Parallel(
+ this.tracks.map(function(track){
+ var ids = track.get('ids'), effect = track.get('effect'), options = track.get('options');
+ var elements = [$(ids) || $$(ids)].flatten();
+ return elements.map(function(e){ return new effect(e, Object.extend({ sync:true }, options)) });
+ }).flatten(),
+ this.options
+ );
+ }
+});
+
+Element.CSS_PROPERTIES = $w(
+ 'backgroundColor backgroundPosition borderBottomColor borderBottomStyle ' +
+ 'borderBottomWidth borderLeftColor borderLeftStyle borderLeftWidth ' +
+ 'borderRightColor borderRightStyle borderRightWidth borderSpacing ' +
+ 'borderTopColor borderTopStyle borderTopWidth bottom clip color ' +
+ 'fontSize fontWeight height left letterSpacing lineHeight ' +
+ 'marginBottom marginLeft marginRight marginTop markerOffset maxHeight '+
+ 'maxWidth minHeight minWidth opacity outlineColor outlineOffset ' +
+ 'outlineWidth paddingBottom paddingLeft paddingRight paddingTop ' +
+ 'right textIndent top width wordSpacing zIndex');
+
+Element.CSS_LENGTH = /^(([\+\-]?[0-9\.]+)(em|ex|px|in|cm|mm|pt|pc|\%))|0$/;
+
+String.__parseStyleElement = document.createElement('div');
+String.prototype.parseStyle = function(){
+ var style, styleRules = $H();
+ if (Prototype.Browser.WebKit)
+ style = new Element('div',{style:this}).style;
+ else {
+ String.__parseStyleElement.innerHTML = '
';
+ style = String.__parseStyleElement.childNodes[0].style;
+ }
+
+ Element.CSS_PROPERTIES.each(function(property){
+ if (style[property]) styleRules.set(property, style[property]);
+ });
+
+ if (Prototype.Browser.IE && this.include('opacity'))
+ styleRules.set('opacity', this.match(/opacity:\s*((?:0|1)?(?:\.\d*)?)/)[1]);
+
+ return styleRules;
+};
+
+if (document.defaultView && document.defaultView.getComputedStyle) {
+ Element.getStyles = function(element) {
+ var css = document.defaultView.getComputedStyle($(element), null);
+ return Element.CSS_PROPERTIES.inject({ }, function(styles, property) {
+ styles[property] = css[property];
+ return styles;
+ });
+ };
+} else {
+ Element.getStyles = function(element) {
+ element = $(element);
+ var css = element.currentStyle, styles;
+ styles = Element.CSS_PROPERTIES.inject({ }, function(hash, property) {
+ hash.set(property, css[property]);
+ return hash;
+ });
+ if (!styles.opacity) styles.set('opacity', element.getOpacity());
+ return styles;
+ };
+};
+
+Effect.Methods = {
+ morph: function(element, style) {
+ element = $(element);
+ new Effect.Morph(element, Object.extend({ style: style }, arguments[2] || { }));
+ return element;
+ },
+ visualEffect: function(element, effect, options) {
+ element = $(element)
+ var s = effect.dasherize().camelize(), klass = s.charAt(0).toUpperCase() + s.substring(1);
+ new Effect[klass](element, options);
+ return element;
+ },
+ highlight: function(element, options) {
+ element = $(element);
+ new Effect.Highlight(element, options);
+ return element;
+ }
+};
+
+$w('fade appear grow shrink fold blindUp blindDown slideUp slideDown '+
+ 'pulsate shake puff squish switchOff dropOut').each(
+ function(effect) {
+ Effect.Methods[effect] = function(element, options){
+ element = $(element);
+ Effect[effect.charAt(0).toUpperCase() + effect.substring(1)](element, options);
+ return element;
+ }
+ }
+);
+
+$w('getInlineOpacity forceRerendering setContentZoom collectTextNodes collectTextNodesIgnoreClass getStyles').each(
+ function(f) { Effect.Methods[f] = Element[f]; }
+);
+
+Element.addMethods(Effect.Methods);
diff --git a/app/assets/javascripts/errors.js b/app/assets/javascripts/errors.js
new file mode 100644
index 0000000..57f097b
--- /dev/null
+++ b/app/assets/javascripts/errors.js
@@ -0,0 +1,16 @@
+function display_error_message(language) {
+ if (!language) {
+ var language = ((navigator.language) ? navigator.language : navigator.userLanguage).replace('-', '_');
+ }
+ element = $(language);
+ if (!element) {
+ element = $(language.replace(/_.*$/, ''));
+ }
+ if (!element) {
+ element = $('en');
+ }
+ $$('.message').each(function(item) { item.hide() });
+ element.getElementsBySelector('h1').each(function(title) { document.title = title.innerHTML; });
+ element.show();
+}
+
diff --git a/app/assets/javascripts/google_maps.js b/app/assets/javascripts/google_maps.js
new file mode 100644
index 0000000..1a7738f
--- /dev/null
+++ b/app/assets/javascripts/google_maps.js
@@ -0,0 +1,61 @@
+var map;
+var infoWindow;
+var mapPoints = {};
+var mapBounds;
+
+function mapOpenBalloon(marker, html) {
+ infoWindow.setPosition(marker.getPosition());
+ infoWindow.setContent(html);
+ infoWindow.open(map, marker);
+}
+
+function mapPutMarker(lat, lng, title, icon, url_or_function) {
+ var point_str = lat + ":" + lng;
+
+ if (mapPoints[point_str]) {
+ lng += (Math.random() - 0.5) * 0.02;
+ lat += (Math.random() - 0.5) * 0.02;
+ } else {
+ mapPoints[point_str] = true;
+ }
+
+ var point = new google.maps.LatLng(lat, lng);
+ var options = { map: map, title: title, icon: icon, position: point };
+ var marker = new google.maps.Marker(options);
+
+ google.maps.event.addListener(marker, 'click', function() {
+ if (!url_or_function)
+ return;
+ if (typeof(url_or_function) == "function")
+ url_or_function(marker);
+ else
+ jQuery.ajax({url: url_or_function, success: function(data) { mapOpenBalloon(marker, jQuery(data).html()); } });
+ });
+ mapBounds.extend(point);
+
+ return marker;
+}
+
+function mapLoad(initial_zoom) {
+ //center in Brazil
+ centerPoint = new google.maps.LatLng(-15.0, -50.1419);
+
+ map = new google.maps.Map(document.getElementById("map"), {
+ zoom: initial_zoom,
+ center: centerPoint,
+ mapTypeId: google.maps.MapTypeId.ROADMAP
+ });
+
+ mapBounds = new google.maps.LatLngBounds();
+ infoWindow = new google.maps.InfoWindow({map: map});
+
+ google.maps.event.addListener(map, 'click', function() {
+ infoWindow.close();
+ });
+}
+
+function mapCenter(latlng) {
+ if (!latlng)
+ map.fitBounds(mapBounds);
+ map.setCenter(latlng ? latlng : mapBounds.getCenter());
+}
diff --git a/app/assets/javascripts/jquery-latest.js b/app/assets/javascripts/jquery-latest.js
new file mode 100644
index 0000000..78fcfa4
--- /dev/null
+++ b/app/assets/javascripts/jquery-latest.js
@@ -0,0 +1,8316 @@
+/*!
+ * jQuery JavaScript Library v1.5.1
+ * 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: Wed Feb 23 13:55:29 2011 -0500
+ */
+(function( window, undefined ) {
+
+// Use the correct document accordingly with window argument (sandbox)
+var document = window.document;
+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
+ // (both of which we optimize for)
+ 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.]+))?/,
+
+ // Keep a UserAgent string for use with jQuery.browser
+ userAgent = navigator.userAgent,
+
+ // For matching the engine and version of the browser
+ browserMatch,
+
+ // Has the ready events already been bound?
+ readyBound = false,
+
+ // The deferred used on DOM ready
+ readyList,
+
+ // Promise methods
+ promiseMethods = "then done fail isResolved isRejected promise".split( " " ),
+
+ // 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 = "body";
+ this.length = 1;
+ return this;
+ }
+
+ // Handle HTML strings
+ if ( typeof selector === "string" ) {
+ // Are we dealing with HTML string or an ID?
+ 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.5.1",
+
+ // 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 ) {
+ window.$ = _$;
+
+ if ( deep ) {
+ 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,
+
+ // Handle when the DOM is ready
+ ready: function( wait ) {
+ // A third-party is pushing the ready event forwards
+ if ( wait === true ) {
+ jQuery.readyWait--;
+ }
+
+ // Make sure that the DOM is not already loaded
+ if ( !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 ( readyBound ) {
+ return;
+ }
+
+ readyBound = true;
+
+ // 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;
+ }
+
+ // Not own constructor property must be Object
+ if ( obj.constructor &&
+ !hasOwn.call(obj, "constructor") &&
+ !hasOwn.call(obj.constructor.prototype, "isPrototypeOf") ) {
+ 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 );
+
+ // 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, "")) ) {
+
+ // Try to use the native JSON parser first
+ return window.JSON && window.JSON.parse ?
+ window.JSON.parse( data ) :
+ (new Function("return " + data))();
+
+ } else {
+ jQuery.error( "Invalid JSON: " + data );
+ }
+ },
+
+ // Cross-browser xml parsing
+ // (xml & tmp used internally)
+ parseXML: function( data , xml , tmp ) {
+
+ 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 );
+ }
+
+ tmp = xml.documentElement;
+
+ if ( ! tmp || ! tmp.nodeName || tmp.nodeName === "parsererror" ) {
+ jQuery.error( "Invalid XML: " + data );
+ }
+
+ return xml;
+ },
+
+ noop: function() {},
+
+ // Evalulates a script in a global context
+ globalEval: function( data ) {
+ if ( data && rnotwhite.test(data) ) {
+ // Inspired by code by Andrea Giammarchi
+ // http://webreflection.blogspot.com/2007/08/global-scope-evaluation-and-dom.html
+ var head = document.head || document.getElementsByTagName( "head" )[0] || document.documentElement,
+ script = document.createElement( "script" );
+
+ if ( jQuery.support.scriptEval() ) {
+ script.appendChild( document.createTextNode( data ) );
+ } else {
+ script.text = data;
+ }
+
+ // Use insertBefore instead of appendChild to circumvent an IE6 bug.
+ // This arises when a base node is used (#2709).
+ head.insertBefore( script, head.firstChild );
+ head.removeChild( script );
+ }
+ },
+
+ 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 ( var value = object[0];
+ i < length && callback.call( value, i, value ) !== false; value = object[++i] ) {}
+ }
+ }
+
+ 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.indexOf ) {
+ return array.indexOf( 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 ret = [], value;
+
+ // Go through the array, translating each of the items to their
+ // new value (or values).
+ for ( var i = 0, length = elems.length; i < length; i++ ) {
+ value = callback( elems[ i ], i, 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,
+
+ proxy: function( fn, proxy, thisObject ) {
+ if ( arguments.length === 2 ) {
+ if ( typeof proxy === "string" ) {
+ thisObject = fn;
+ fn = thisObject[ proxy ];
+ proxy = undefined;
+
+ } else if ( proxy && !jQuery.isFunction( proxy ) ) {
+ thisObject = proxy;
+ proxy = undefined;
+ }
+ }
+
+ if ( !proxy && fn ) {
+ proxy = function() {
+ return fn.apply( thisObject || this, arguments );
+ };
+ }
+
+ // Set the guid of unique handler to the same of original handler, so it can be removed
+ if ( fn ) {
+ proxy.guid = fn.guid = fn.guid || proxy.guid || jQuery.guid++;
+ }
+
+ // So proxy can be declared as an argument
+ return proxy;
+ },
+
+ // Mutifunctional method to get and set values to a collection
+ // The value/s can be optionally by executed if its 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();
+ },
+
+ // 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 ) {
+ firing = 1;
+ try {
+ while( callbacks[ 0 ] ) {
+ callbacks.shift().apply( context, args );
+ }
+ }
+ // We have to add a catch block for
+ // IE prior to 8 or else the finally
+ // block will never get executed
+ catch (e) {
+ throw e;
+ }
+ finally {
+ fired = [ context, args ];
+ firing = 0;
+ }
+ }
+ return this;
+ },
+
+ // resolve with this as context and given arguments
+ resolve: function() {
+ deferred.resolveWith( jQuery.isFunction( this.promise ) ? this.promise() : 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;
+ },
+ fail: failDeferred.done,
+ rejectWith: failDeferred.resolveWith,
+ reject: failDeferred.resolve,
+ isRejected: failDeferred.isResolved,
+ // 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( object ) {
+ var lastIndex = arguments.length,
+ deferred = lastIndex <= 1 && object && jQuery.isFunction( object.promise ) ?
+ object :
+ jQuery.Deferred(),
+ promise = deferred.promise();
+
+ if ( lastIndex > 1 ) {
+ var array = slice.call( arguments, 0 ),
+ count = lastIndex,
+ iCallback = function( index ) {
+ return function( value ) {
+ array[ index ] = arguments.length > 1 ? slice.call( arguments, 0 ) : value;
+ if ( !( --count ) ) {
+ deferred.resolveWith( promise, array );
+ }
+ };
+ };
+ while( ( lastIndex-- ) ) {
+ object = array[ lastIndex ];
+ if ( object && jQuery.isFunction( object.promise ) ) {
+ object.promise().then( iCallback(lastIndex), deferred.reject );
+ } else {
+ --count;
+ }
+ }
+ if ( !count ) {
+ deferred.resolveWith( promise, array );
+ }
+ } else if ( deferred !== object ) {
+ deferred.resolve( object );
+ }
+ return promise;
+ },
+
+ // 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 jQuerySubclass( selector, context ) {
+ return new jQuerySubclass.fn.init( selector, context );
+ }
+ jQuery.extend( true, jQuerySubclass, this );
+ jQuerySubclass.superclass = this;
+ jQuerySubclass.fn = jQuerySubclass.prototype = this();
+ jQuerySubclass.fn.constructor = jQuerySubclass;
+ jQuerySubclass.subclass = this.subclass;
+ jQuerySubclass.fn.init = function init( selector, context ) {
+ if ( context && context instanceof jQuery && !(context instanceof jQuerySubclass) ) {
+ context = jQuerySubclass(context);
+ }
+
+ return jQuery.fn.init.call( this, selector, context, rootjQuerySubclass );
+ };
+ jQuerySubclass.fn.init.prototype = jQuerySubclass.fn;
+ var rootjQuerySubclass = jQuerySubclass(document);
+ return jQuerySubclass;
+ },
+
+ browser: {}
+});
+
+// Create readyList deferred
+readyList = jQuery._Deferred();
+
+// 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;
+}
+
+if ( indexOf ) {
+ jQuery.inArray = function( elem, array ) {
+ return indexOf.call( array, elem );
+ };
+}
+
+// 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();
+}
+
+// Expose jQuery to the global object
+return jQuery;
+
+})();
+
+
+(function() {
+
+ jQuery.support = {};
+
+ var div = document.createElement("div");
+
+ div.style.display = "none";
+ div.innerHTML = " a ";
+
+ var all = div.getElementsByTagName("*"),
+ a = div.getElementsByTagName("a")[0],
+ select = document.createElement("select"),
+ opt = select.appendChild( document.createElement("option") ),
+ input = div.getElementsByTagName("input")[0];
+
+ // Can't get basic test support
+ if ( !all || !all.length || !a ) {
+ return;
+ }
+
+ jQuery.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 insted)
+ style: /red/.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,
+
+ // Will be defined later
+ deleteExpando: true,
+ optDisabled: false,
+ checkClone: false,
+ noCloneEvent: true,
+ noCloneChecked: true,
+ boxModel: null,
+ inlineBlockNeedsLayout: false,
+ shrinkWrapBlocks: false,
+ reliableHiddenOffsets: true
+ };
+
+ input.checked = true;
+ jQuery.support.noCloneChecked = input.cloneNode( true ).checked;
+
+ // Make sure that the options inside disabled selects aren't marked as disabled
+ // (WebKit marks them as diabled)
+ select.disabled = true;
+ jQuery.support.optDisabled = !opt.disabled;
+
+ var _scriptEval = null;
+ jQuery.support.scriptEval = function() {
+ if ( _scriptEval === null ) {
+ var root = document.documentElement,
+ script = document.createElement("script"),
+ id = "script" + jQuery.now();
+
+ try {
+ script.appendChild( document.createTextNode( "window." + id + "=1;" ) );
+ } catch(e) {}
+
+ root.insertBefore( script, root.firstChild );
+
+ // Make sure that the execution of code works by injecting a script
+ // tag with appendChild/createTextNode
+ // (IE doesn't support this, fails, and uses .text instead)
+ if ( window[ id ] ) {
+ _scriptEval = true;
+ delete window[ id ];
+ } else {
+ _scriptEval = false;
+ }
+
+ root.removeChild( script );
+ // release memory in IE
+ root = script = id = null;
+ }
+
+ return _scriptEval;
+ };
+
+ // Test to see if it's possible to delete an expando from an element
+ // Fails in Internet Explorer
+ try {
+ delete div.test;
+
+ } catch(e) {
+ jQuery.support.deleteExpando = false;
+ }
+
+ if ( !div.addEventListener && div.attachEvent && div.fireEvent ) {
+ div.attachEvent("onclick", function click() {
+ // Cloning a node shouldn't copy over any
+ // bound event handlers (IE does this)
+ jQuery.support.noCloneEvent = false;
+ div.detachEvent("onclick", click);
+ });
+ div.cloneNode(true).fireEvent("onclick");
+ }
+
+ div = document.createElement("div");
+ div.innerHTML = " ";
+
+ var fragment = document.createDocumentFragment();
+ fragment.appendChild( div.firstChild );
+
+ // WebKit doesn't clone checked state correctly in fragments
+ jQuery.support.checkClone = fragment.cloneNode(true).cloneNode(true).lastChild.checked;
+
+ // Figure out if the W3C box model works as expected
+ // document.body must exist before we can do this
+ jQuery(function() {
+ var div = document.createElement("div"),
+ body = document.getElementsByTagName("body")[0];
+
+ // Frameset documents with no body should not run this code
+ if ( !body ) {
+ return;
+ }
+
+ div.style.width = div.style.paddingLeft = "1px";
+ body.appendChild( div );
+ jQuery.boxModel = jQuery.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;
+ jQuery.support.inlineBlockNeedsLayout = div.offsetWidth === 2;
+
+ // Check if elements with layout shrink-wrap their children
+ // (IE 6 does this)
+ div.style.display = "";
+ div.innerHTML = "
";
+ jQuery.support.shrinkWrapBlocks = div.offsetWidth !== 2;
+ }
+
+ div.innerHTML = "";
+ var 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)
+ jQuery.support.reliableHiddenOffsets = 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)
+ jQuery.support.reliableHiddenOffsets = jQuery.support.reliableHiddenOffsets && tds[0].offsetHeight === 0;
+ div.innerHTML = "";
+
+ body.removeChild( div ).style.display = "none";
+ div = tds = null;
+ });
+
+ // Technique from Juriy Zaytsev
+ // http://thinkweb2.com/projects/prototype/detecting-event-support-without-browser-sniffing/
+ var eventSupported = function( eventName ) {
+ var el = document.createElement("div");
+ eventName = "on" + eventName;
+
+ // 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 ( !el.attachEvent ) {
+ return true;
+ }
+
+ var isSupported = (eventName in el);
+ if ( !isSupported ) {
+ el.setAttribute(eventName, "return;");
+ isSupported = typeof el[eventName] === "function";
+ }
+ el = null;
+
+ return isSupported;
+ };
+
+ jQuery.support.submitBubbles = eventSupported("submit");
+ jQuery.support.changeBubbles = eventSupported("change");
+
+ // release memory in IE
+ div = all = a = null;
+})();
+
+
+
+var rbrace = /^(?:\{.*\}|\[.*\])$/;
+
+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 internalKey = jQuery.expando, getByName = typeof name === "string", thisCache,
+
+ // 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 ][ 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[ 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;
+ }
+
+ return getByName ? thisCache[ name ] : thisCache;
+ },
+
+ removeData: function( elem, name, pvt /* Internal Use Only */ ) {
+ if ( !jQuery.acceptData( elem ) ) {
+ return;
+ }
+
+ var 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 ) {
+ var thisCache = pvt ? cache[ id ][ internalKey ] : cache[ id ];
+
+ if ( thisCache ) {
+ 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
+ if ( jQuery.support.deleteExpando || cache != window ) {
+ 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 = name.substr( 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 ) {
+ data = elem.getAttribute( "data-" + key );
+
+ 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;
+}
+
+
+
+
+jQuery.extend({
+ queue: function( elem, type, data ) {
+ if ( !elem ) {
+ return;
+ }
+
+ type = (type || "fx") + "queue";
+ var q = jQuery._data( elem, type );
+
+ // Speed up dequeue by getting out quickly if this is just a lookup
+ if ( !data ) {
+ return q || [];
+ }
+
+ if ( !q || jQuery.isArray(data) ) {
+ q = jQuery._data( elem, type, jQuery.makeArray(data) );
+
+ } else {
+ q.push( data );
+ }
+
+ return q;
+ },
+
+ dequeue: function( elem, type ) {
+ type = type || "fx";
+
+ var queue = jQuery.queue( elem, type ),
+ fn = queue.shift();
+
+ // 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 );
+ }
+ }
+});
+
+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( i ) {
+ 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", [] );
+ }
+});
+
+
+
+
+var rclass = /[\n\t\r]/g,
+ rspaces = /\s+/,
+ rreturn = /\r/g,
+ rspecialurl = /^(?:href|src|style)$/,
+ rtype = /^(?:button|input)$/i,
+ rfocusable = /^(?:button|input|object|select|textarea)$/i,
+ rclickable = /^a(?:rea)?$/i,
+ rradiocheck = /^(?:radio|checkbox)$/i;
+
+jQuery.props = {
+ "for": "htmlFor",
+ "class": "className",
+ readonly: "readOnly",
+ maxlength: "maxLength",
+ cellspacing: "cellSpacing",
+ rowspan: "rowSpan",
+ colspan: "colSpan",
+ tabindex: "tabIndex",
+ usemap: "useMap",
+ frameborder: "frameBorder"
+};
+
+jQuery.fn.extend({
+ attr: function( name, value ) {
+ return jQuery.access( this, name, value, true, jQuery.attr );
+ },
+
+ removeAttr: function( name, fn ) {
+ return this.each(function(){
+ jQuery.attr( this, name, "" );
+ if ( this.nodeType === 1 ) {
+ this.removeAttribute( name );
+ }
+ });
+ },
+
+ addClass: function( value ) {
+ if ( jQuery.isFunction(value) ) {
+ return this.each(function(i) {
+ var self = jQuery(this);
+ self.addClass( value.call(this, i, self.attr("class")) );
+ });
+ }
+
+ if ( value && typeof value === "string" ) {
+ var classNames = (value || "").split( rspaces );
+
+ for ( var i = 0, l = this.length; i < l; i++ ) {
+ var elem = this[i];
+
+ if ( elem.nodeType === 1 ) {
+ if ( !elem.className ) {
+ elem.className = value;
+
+ } else {
+ var className = " " + elem.className + " ",
+ setClass = elem.className;
+
+ for ( var c = 0, cl = classNames.length; c < cl; c++ ) {
+ if ( className.indexOf( " " + classNames[c] + " " ) < 0 ) {
+ setClass += " " + classNames[c];
+ }
+ }
+ elem.className = jQuery.trim( setClass );
+ }
+ }
+ }
+ }
+
+ return this;
+ },
+
+ removeClass: function( value ) {
+ if ( jQuery.isFunction(value) ) {
+ return this.each(function(i) {
+ var self = jQuery(this);
+ self.removeClass( value.call(this, i, self.attr("class")) );
+ });
+ }
+
+ if ( (value && typeof value === "string") || value === undefined ) {
+ var classNames = (value || "").split( rspaces );
+
+ for ( var i = 0, l = this.length; i < l; i++ ) {
+ var elem = this[i];
+
+ if ( elem.nodeType === 1 && elem.className ) {
+ if ( value ) {
+ var className = (" " + elem.className + " ").replace(rclass, " ");
+ for ( var 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) {
+ var self = jQuery(this);
+ self.toggleClass( value.call(this, i, self.attr("class"), 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( rspaces );
+
+ 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].className + " ").replace(rclass, " ").indexOf( className ) > -1 ) {
+ return true;
+ }
+ }
+
+ return false;
+ },
+
+ val: function( value ) {
+ if ( !arguments.length ) {
+ var elem = this[0];
+
+ if ( elem ) {
+ if ( jQuery.nodeName( elem, "option" ) ) {
+ // 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;
+ }
+
+ // We need to handle select boxes special
+ if ( jQuery.nodeName( elem, "select" ) ) {
+ var 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;
+ }
+
+ // Handle the case where in Webkit "" is returned instead of "on" if a value isn't specified
+ if ( rradiocheck.test( elem.type ) && !jQuery.support.checkOn ) {
+ return elem.getAttribute("value") === null ? "on" : elem.value;
+ }
+
+ // Everything else, we just grab the value
+ return (elem.value || "").replace(rreturn, "");
+
+ }
+
+ return undefined;
+ }
+
+ var isFunction = jQuery.isFunction(value);
+
+ return this.each(function(i) {
+ var self = jQuery(this), val = value;
+
+ if ( this.nodeType !== 1 ) {
+ return;
+ }
+
+ if ( isFunction ) {
+ val = value.call(this, i, self.val());
+ }
+
+ // 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 + "";
+ });
+ }
+
+ if ( jQuery.isArray(val) && rradiocheck.test( this.type ) ) {
+ this.checked = jQuery.inArray( self.val(), val ) >= 0;
+
+ } else if ( jQuery.nodeName( this, "select" ) ) {
+ var values = jQuery.makeArray(val);
+
+ jQuery( "option", this ).each(function() {
+ this.selected = jQuery.inArray( jQuery(this).val(), values ) >= 0;
+ });
+
+ if ( !values.length ) {
+ this.selectedIndex = -1;
+ }
+
+ } else {
+ this.value = val;
+ }
+ });
+ }
+});
+
+jQuery.extend({
+ attrFn: {
+ val: true,
+ css: true,
+ html: true,
+ text: true,
+ data: true,
+ width: true,
+ height: true,
+ offset: true
+ },
+
+ attr: function( elem, name, value, pass ) {
+ // don't get/set attributes on text, comment and attribute nodes
+ if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || elem.nodeType === 2 ) {
+ return undefined;
+ }
+
+ if ( pass && name in jQuery.attrFn ) {
+ return jQuery(elem)[name](value);
+ }
+
+ var notxml = elem.nodeType !== 1 || !jQuery.isXMLDoc( elem ),
+ // Whether we are setting (or getting)
+ set = value !== undefined;
+
+ // Try to normalize/fix the name
+ name = notxml && jQuery.props[ name ] || name;
+
+ // Only do all the following if this is a node (faster for style)
+ if ( elem.nodeType === 1 ) {
+ // These attributes require special treatment
+ var special = rspecialurl.test( name );
+
+ // Safari mis-reports the default selected property of an option
+ // Accessing the parent's selectedIndex property fixes it
+ if ( name === "selected" && !jQuery.support.optSelected ) {
+ var parent = elem.parentNode;
+ if ( parent ) {
+ parent.selectedIndex;
+
+ // Make sure that it also works with optgroups, see #5701
+ if ( parent.parentNode ) {
+ parent.parentNode.selectedIndex;
+ }
+ }
+ }
+
+ // If applicable, access the attribute via the DOM 0 way
+ // 'in' checks fail in Blackberry 4.7 #6931
+ if ( (name in elem || elem[ name ] !== undefined) && notxml && !special ) {
+ if ( set ) {
+ // We can't allow the type property to be changed (since it causes problems in IE)
+ if ( name === "type" && rtype.test( elem.nodeName ) && elem.parentNode ) {
+ jQuery.error( "type property can't be changed" );
+ }
+
+ if ( value === null ) {
+ if ( elem.nodeType === 1 ) {
+ elem.removeAttribute( name );
+ }
+
+ } else {
+ elem[ name ] = value;
+ }
+ }
+
+ // browsers index elements by id/name on forms, give priority to attributes.
+ if ( jQuery.nodeName( elem, "form" ) && elem.getAttributeNode(name) ) {
+ return elem.getAttributeNode( name ).nodeValue;
+ }
+
+ // 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/
+ if ( name === "tabIndex" ) {
+ var attributeNode = elem.getAttributeNode( "tabIndex" );
+
+ return attributeNode && attributeNode.specified ?
+ attributeNode.value :
+ rfocusable.test( elem.nodeName ) || rclickable.test( elem.nodeName ) && elem.href ?
+ 0 :
+ undefined;
+ }
+
+ return elem[ name ];
+ }
+
+ if ( !jQuery.support.style && notxml && name === "style" ) {
+ if ( set ) {
+ elem.style.cssText = "" + value;
+ }
+
+ return elem.style.cssText;
+ }
+
+ if ( set ) {
+ // convert the value to a string (all browsers do this but IE) see #1070
+ elem.setAttribute( name, "" + value );
+ }
+
+ // Ensure that missing attributes return undefined
+ // Blackberry 4.7 returns "" from getAttribute #6938
+ if ( !elem.attributes[ name ] && (elem.hasAttribute && !elem.hasAttribute( name )) ) {
+ return undefined;
+ }
+
+ var attr = !jQuery.support.hrefNormalized && notxml && special ?
+ // Some attributes require a special call on IE
+ elem.getAttribute( name, 2 ) :
+ elem.getAttribute( name );
+
+ // Non-existent attributes return null, we normalize to undefined
+ return attr === null ? undefined : attr;
+ }
+ // Handle everything which isn't a DOM element node
+ if ( set ) {
+ elem[ name ] = value;
+ }
+ return elem[ name ];
+ }
+});
+
+
+
+
+var rnamespaces = /\.(.*)$/,
+ rformElems = /^(?:textarea|input|select)$/i,
+ rperiod = /\./g,
+ rspace = / /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;
+ }
+
+ // TODO :: Use a try/catch until it's safe to pull this out (likely 1.6)
+ // Minor release fix for bug #8018
+ try {
+ // For whatever reason, IE has trouble passing the window object
+ // around, causing it to be cloned in the process
+ if ( jQuery.isWindow( elem ) && ( elem !== window && !elem.frameElement ) ) {
+ elem = window;
+ }
+ }
+ catch ( e ) {}
+
+ 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() {
+ // Handle the second event of a trigger and when
+ // an event is called after a page has unloaded
+ return typeof jQuery !== "undefined" && !jQuery.event.triggered ?
+ 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 global triggering
+ 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 );
+ }
+ }
+ },
+
+ // bubbling is internal
+ trigger: function( event, data, elem /*, bubbling */ ) {
+ // Event object or event type
+ var type = event.type || event,
+ bubbling = arguments[3];
+
+ if ( !bubbling ) {
+ event = typeof event === "object" ?
+ // jQuery.Event object
+ event[ jQuery.expando ] ? event :
+ // Object literal
+ jQuery.extend( jQuery.Event(type), event ) :
+ // Just the event type (string)
+ jQuery.Event(type);
+
+ if ( type.indexOf("!") >= 0 ) {
+ event.type = type = type.slice(0, -1);
+ event.exclusive = true;
+ }
+
+ // Handle a global trigger
+ if ( !elem ) {
+ // Don't bubble custom events when global (to avoid too much overhead)
+ event.stopPropagation();
+
+ // Only trigger if we've ever bound an event for it
+ if ( jQuery.event.global[ type ] ) {
+ // XXX This code smells terrible. event.js should not be directly
+ // inspecting the data cache
+ 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 );
+ }
+ });
+ }
+ }
+
+ // Handle triggering a single element
+
+ // don't do events on text and comment nodes
+ if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 ) {
+ return undefined;
+ }
+
+ // Clean up in case it is reused
+ event.result = undefined;
+ event.target = elem;
+
+ // Clone the incoming data, if any
+ data = jQuery.makeArray( data );
+ data.unshift( event );
+ }
+
+ event.currentTarget = elem;
+
+ // Trigger the event, it is assumed that "handle" is a function
+ var handle = jQuery._data( elem, "handle" );
+
+ if ( handle ) {
+ handle.apply( elem, data );
+ }
+
+ var parent = elem.parentNode || elem.ownerDocument;
+
+ // Trigger an inline bound script
+ try {
+ if ( !(elem && elem.nodeName && jQuery.noData[elem.nodeName.toLowerCase()]) ) {
+ if ( elem[ "on" + type ] && elem[ "on" + type ].apply( elem, data ) === false ) {
+ event.result = false;
+ event.preventDefault();
+ }
+ }
+
+ // prevent IE from throwing an error for some elements with some event types, see #3533
+ } catch (inlineError) {}
+
+ if ( !event.isPropagationStopped() && parent ) {
+ jQuery.event.trigger( event, data, parent, true );
+
+ } else if ( !event.isDefaultPrevented() ) {
+ var old,
+ target = event.target,
+ targetType = type.replace( rnamespaces, "" ),
+ isClick = jQuery.nodeName( target, "a" ) && targetType === "click",
+ special = jQuery.event.special[ targetType ] || {};
+
+ if ( (!special._default || special._default.call( elem, event ) === false) &&
+ !isClick && !(target && target.nodeName && jQuery.noData[target.nodeName.toLowerCase()]) ) {
+
+ try {
+ if ( target[ targetType ] ) {
+ // Make sure that we don't accidentally re-trigger the onFOO events
+ old = target[ "on" + targetType ];
+
+ if ( old ) {
+ target[ "on" + targetType ] = null;
+ }
+
+ jQuery.event.triggered = true;
+ target[ targetType ]();
+ }
+
+ // prevent IE from throwing an error for some elements with some event types, see #3533
+ } catch (triggerError) {}
+
+ if ( old ) {
+ target[ "on" + targetType ] = old;
+ }
+
+ jQuery.event.triggered = false;
+ }
+ }
+ },
+
+ handle: function( event ) {
+ var all, handlers, namespaces, namespace_re, events,
+ namespace_sort = [],
+ args = jQuery.makeArray( arguments );
+
+ event = args[0] = jQuery.event.fix( event || window.event );
+ event.currentTarget = this;
+
+ // Namespaced event handlers
+ all = event.type.indexOf(".") < 0 && !event.exclusive;
+
+ if ( !all ) {
+ namespaces = event.type.split(".");
+ event.type = namespaces.shift();
+ namespace_sort = namespaces.slice(0).sort();
+ namespace_re = new RegExp("(^|\\.)" + namespace_sort.join("\\.(?:.*\\.)?") + "(\\.|$)");
+ }
+
+ event.namespace = event.namespace || namespace_sort.join(".");
+
+ events = jQuery._data(this, "events");
+
+ handlers = (events || {})[ event.type ];
+
+ if ( events && handlers ) {
+ // Clone the handlers to prevent manipulation
+ handlers = handlers.slice(0);
+
+ for ( var j = 0, l = handlers.length; j < l; j++ ) {
+ var handleObj = handlers[ j ];
+
+ // Filter the functions by class
+ if ( all || 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 doc = document.documentElement,
+ body = document.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 ) {
+ // Allow instantiation without the 'new' keyword
+ if ( !this.preventDefault ) {
+ return new jQuery.Event( src );
+ }
+
+ // 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;
+ }
+
+ // 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 parent = event.relatedTarget;
+
+ // Firefox sometimes assigns relatedTarget a XUL element
+ // which we cannot access the parentNode property of
+ try {
+
+ // Chrome does something similar, the parentNode property
+ // can be accessed but is null.
+ if ( parent !== document && !parent.parentNode ) {
+ return;
+ }
+ // Traverse up the tree
+ while ( parent && parent !== this ) {
+ parent = parent.parentNode;
+ }
+
+ if ( parent !== this ) {
+ // set the correct event type
+ event.type = event.data;
+
+ // handle event if we actually just moused on to a non sub-element
+ jQuery.event.handle.apply( this, arguments );
+ }
+
+ // assuming we've left the element since we most likely mousedover a xul element
+ } catch(e) { }
+},
+
+// 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 ( this.nodeName && this.nodeName.toLowerCase() !== "form" ) {
+ jQuery.event.add(this, "click.specialSubmit", function( e ) {
+ var elem = e.target,
+ type = 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 = 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 = 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 ( elem.nodeName.toLowerCase() === "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 = elem.type;
+
+ if ( type === "radio" || type === "checkbox" || elem.nodeName.toLowerCase() === "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 = elem.type;
+
+ if ( (e.keyCode === 13 && elem.nodeName.toLowerCase() !== "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 ( document.addEventListener ) {
+ jQuery.each({ focus: "focusin", blur: "focusout" }, function( orig, fix ) {
+ jQuery.event.special[ fix ] = {
+ setup: function() {
+ this.addEventListener( orig, handler, true );
+ },
+ teardown: function() {
+ this.removeEventListener( orig, handler, true );
+ }
+ };
+
+ function handler( e ) {
+ e = jQuery.event.fix( e );
+ e.type = fix;
+ return jQuery.event.handle.call( this, e );
+ }
+ });
+}
+
+jQuery.each(["bind", "one"], function( i, name ) {
+ jQuery.fn[ name ] = function( type, data, fn ) {
+ // Handle object literals
+ if ( typeof type === "object" ) {
+ for ( var key in type ) {
+ this[ name ](key, data, type[key], fn);
+ }
+ return this;
+ }
+
+ if ( jQuery.isFunction( data ) || data === false ) {
+ fn = data;
+ data = undefined;
+ }
+
+ var handler = name === "one" ? jQuery.proxy( fn, function( event ) {
+ jQuery( this ).unbind( event, handler );
+ return fn.apply( this, arguments );
+ }) : 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] ) {
+ var event = jQuery.Event( type );
+ event.preventDefault();
+ event.stopPropagation();
+ jQuery.event.trigger( event, data, this[0] );
+ return event.result;
+ }
+ },
+
+ toggle: function( fn ) {
+ // Save reference to arguments for access in closure
+ var args = arguments,
+ i = 1;
+
+ // link all the functions, so any of them can unbind this click handler
+ while ( i < args.length ) {
+ jQuery.proxy( fn, args[ i++ ] );
+ }
+
+ return this.click( jQuery.proxy( fn, 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;
+ }));
+ },
+
+ 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 ( jQuery.isFunction( data ) ) {
+ fn = data;
+ 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 ( type === "focus" || type === "blur" ) {
+ 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];
+ }
+
+ 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(rspace, "&");
+}
+
+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 ) {
+ // IE6 and 7 will map elem.type to 'text' for new HTML5 types (search, etc)
+ // use getAttribute instead to test this case
+ return "text" === elem.getAttribute( 'type' );
+ },
+ radio: function( elem ) {
+ return "radio" === elem.type;
+ },
+
+ checkbox: function( elem ) {
+ return "checkbox" === elem.type;
+ },
+
+ file: function( elem ) {
+ return "file" === elem.type;
+ },
+ password: function( elem ) {
+ return "password" === elem.type;
+ },
+
+ submit: function( elem ) {
+ return "submit" === elem.type;
+ },
+
+ image: function( elem ) {
+ return "image" === elem.type;
+ },
+
+ reset: function( elem ) {
+ return "reset" === elem.type;
+ },
+
+ button: function( elem ) {
+ return "button" === elem.type || elem.nodeName.toLowerCase() === "button";
+ },
+
+ input: function( elem ) {
+ return (/input|select|textarea|button/i).test( elem.nodeName );
+ }
+ },
+ 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 ) {
+ var al, bl,
+ ap = [],
+ bp = [],
+ aup = a.parentNode,
+ bup = b.parentNode,
+ cur = aup;
+
+ // The nodes are identical, we can exit early
+ if ( a === b ) {
+ hasDuplicate = true;
+ return 0;
+
+ // If the nodes are siblings (or identical) we can do a quick check
+ } else 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,
+ 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;
+ }
+
+ if ( matches ) {
+ 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 ) ) {
+ return matches.call( node, expr );
+ }
+ } 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 ret = this.pushStack( "", "find", selector ),
+ length = 0;
+
+ for ( var 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 ( var n = length; n < ret.length; n++ ) {
+ for ( var 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 && jQuery.filter( selector, this ).length > 0;
+ },
+
+ closest: function( selectors, context ) {
+ var ret = [], i, l, cur = this[0];
+
+ 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] = jQuery.expr.match.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;
+ }
+
+ var pos = POS.test( selectors ) ?
+ jQuery( selectors, context || this.context ) : null;
+
+ 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 ) {
+ 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 ) {
+ if ( !elem || typeof elem === "string" ) {
+ return jQuery.inArray( this[0],
+ // If it receives a string, the selector is used
+ // If it receives nothing, the siblings are used
+ elem ? jQuery( elem ) : this.parent().children() );
+ }
+ // 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 ),
+ 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 ) {
+ 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 This is a p
+ * @before $.metadata.setType("elem", "script")
+ * @after $("#one").metadata().item_id == 1; $("#one").metadata().item_label == "Label"
+ * @desc Reads metadata from a nested script element
+ *
+ * @param String type The encoding type
+ * @param String name The name of the attribute to be used to get metadata (optional)
+ * @cat Plugins/Metadata
+ * @descr Sets the type of encoding to be used when loading metadata for the first time
+ * @type undefined
+ * @see metadata()
+ */
+
+(function($) {
+
+$.extend({
+ metadata : {
+ defaults : {
+ type: 'class',
+ name: 'metadata',
+ cre: /({.*})/,
+ single: 'metadata'
+ },
+ setType: function( type, name ){
+ this.defaults.type = type;
+ this.defaults.name = name;
+ },
+ get: function( elem, opts ){
+ var settings = $.extend({},this.defaults,opts);
+ // check for empty string in single property
+ if ( !settings.single.length ) settings.single = 'metadata';
+
+ var data = $.data(elem, settings.single);
+ // returned cached data if it already exists
+ if ( data ) return data;
+
+ data = "{}";
+
+ if ( settings.type == "class" ) {
+ var m = settings.cre.exec( elem.className );
+ if ( m )
+ data = m[1];
+ } else if ( settings.type == "elem" ) {
+ if( !elem.getElementsByTagName )
+ return undefined;
+ var e = elem.getElementsByTagName(settings.name);
+ if ( e.length )
+ data = $.trim(e[0].innerHTML);
+ } else if ( elem.getAttribute != undefined ) {
+ var attr = elem.getAttribute( settings.name );
+ if ( attr )
+ data = attr;
+ }
+
+ if ( data.indexOf( '{' ) <0 )
+ data = "{" + data + "}";
+
+ data = eval("(" + data + ")");
+
+ $.data( elem, settings.single, data );
+ return data;
+ }
+ }
+});
+
+/**
+ * Returns the metadata object for the first member of the jQuery object.
+ *
+ * @name metadata
+ * @descr Returns element's metadata object
+ * @param Object opts An object contianing settings to override the defaults
+ * @type jQuery
+ * @cat Plugins/Metadata
+ */
+$.fn.metadata = function( opts ){
+ return $.metadata.get( this[0], opts );
+};
+
+})(jQuery);
\ No newline at end of file
diff --git a/app/assets/javascripts/jquery-validation/localization/messages_ar.js b/app/assets/javascripts/jquery-validation/localization/messages_ar.js
new file mode 100644
index 0000000..71e97a8
--- /dev/null
+++ b/app/assets/javascripts/jquery-validation/localization/messages_ar.js
@@ -0,0 +1,24 @@
+/*
+ * Translated default messages for the jQuery validation plugin into arabic.
+ * Locale: AR
+ */
+jQuery.extend(jQuery.validator.messages, {
+ required: "هذا الØÙ‚Ù„ إلزامي",
+ remote: "يرجى تصØÙŠØ هذا الØÙ‚Ù„ للمتابعة",
+ email: "رجاء إدخال عنوان بريد إلكتروني صØÙŠØ",
+ url: "رجاء إدخال عنوان موقع إلكتروني صØÙŠØ",
+ date: "رجاء إدخال تاريخ صØÙŠØ",
+ dateISO: "رجاء إدخال تاريخ صØÙŠØ (ISO)",
+ number: "رجاء إدخال عدد بطريقة صØÙŠØØ©",
+ digits: "رجاء إدخال أرقام Ùقط",
+ creditcard: "رجاء إدخال رقم بطاقة ائتمان صØÙŠØ",
+ equalTo: "رجاء إدخال Ù†ÙØ³ القيمة",
+ accept: "رجاء إدخال مل٠بامتداد مواÙÙ‚ عليه",
+ maxlength: jQuery.validator.format("Ø§Ù„ØØ¯ الأقصى لعدد Ø§Ù„ØØ±ÙˆÙ هو {0}"),
+ minlength: jQuery.validator.format("Ø§Ù„ØØ¯ الأدنى لعدد Ø§Ù„ØØ±ÙˆÙ هو {0}"),
+ rangelength: jQuery.validator.format("عدد Ø§Ù„ØØ±ÙˆÙ يجب أن يكون بين {0} Ùˆ {1}"),
+ range: jQuery.validator.format("رجاء إدخال عدد قيمته بين {0} و {1}"),
+ max: jQuery.validator.format("رجاء إدخال عدد أقل من أو يساوي (0}"),
+ min: jQuery.validator.format("رجاء إدخال عدد أكبر من أو يساوي (0}")
+});
+
diff --git a/app/assets/javascripts/jquery-validation/localization/messages_bg.js b/app/assets/javascripts/jquery-validation/localization/messages_bg.js
new file mode 100644
index 0000000..9232f72
--- /dev/null
+++ b/app/assets/javascripts/jquery-validation/localization/messages_bg.js
@@ -0,0 +1,23 @@
+/*
+ * Translated default messages for the jQuery validation plugin.
+ * Locale: BG
+ */
+jQuery.extend(jQuery.validator.messages, {
+ required: "Полето е задължително.",
+ remote: "МолÑ, въведете правилната ÑтойноÑÑ‚.",
+ email: "МолÑ, въведете валиден email.",
+ url: "МолÑ, въведете валидно URL.",
+ date: "МолÑ, въведете валидна дата.",
+ dateISO: "МолÑ, въведете валидна дата (ISO).",
+ number: "МолÑ, въведете валиден номер.",
+ digits: "МолÑ, въведете Ñамо цифри",
+ creditcard: "МолÑ, въведете валиден номер на кредитна карта.",
+ equalTo: "МолÑ, въведете Ñъщата ÑтойноÑÑ‚ отново.",
+ accept: "МолÑ, въведете ÑтойноÑÑ‚ Ñ Ð²Ð°Ð»Ð¸Ð´Ð½Ð¾ разширение.",
+ maxlength: $.validator.format("МолÑ, въведете повече от {0} Ñимвола."),
+ minlength: $.validator.format("МолÑ, въведете поне {0} Ñимвола."),
+ rangelength: $.validator.format("МолÑ, въведете ÑтойноÑÑ‚ Ñ Ð´ÑŠÐ»Ð¶Ð¸Ð½Ð° между {0} и {1} Ñимвола."),
+ range: $.validator.format("МолÑ, въведете ÑтойноÑÑ‚ между {0} и {1}."),
+ max: $.validator.format("МолÑ, въведете ÑтойноÑÑ‚ по-малка или равна на {0}."),
+ min: $.validator.format("МолÑ, въведете ÑтойноÑÑ‚ по-голÑма или равна на {0}.")
+});
\ No newline at end of file
diff --git a/app/assets/javascripts/jquery-validation/localization/messages_ca.js b/app/assets/javascripts/jquery-validation/localization/messages_ca.js
new file mode 100644
index 0000000..3082bc4
--- /dev/null
+++ b/app/assets/javascripts/jquery-validation/localization/messages_ca.js
@@ -0,0 +1,23 @@
+/*
+ * Translated default messages for the jQuery validation plugin.
+ * Locale: CA
+ */
+jQuery.extend(jQuery.validator.messages, {
+ required: "Aquest camp és obligatori.",
+ remote: "Si us plau, omple aquest camp.",
+ email: "Si us plau, escriu una adreça de correu-e và lida",
+ url: "Si us plau, escriu una URL và lida.",
+ date: "Si us plau, escriu una data và lida.",
+ dateISO: "Si us plau, escriu una data (ISO) và lida.",
+ number: "Si us plau, escriu un número enter và lid.",
+ digits: "Si us plau, escriu només dÃgits.",
+ creditcard: "Si us plau, escriu un número de tarjeta và lid.",
+ equalTo: "Si us plau, escriu el maateix valor de nou.",
+ accept: "Si us plau, escriu un valor amb una extensió acceptada.",
+ maxlength: jQuery.validator.format("Si us plau, no escriguis més de {0} caracters."),
+ minlength: jQuery.validator.format("Si us plau, no escriguis menys de {0} caracters."),
+ rangelength: jQuery.validator.format("Si us plau, escriu un valor entre {0} i {1} caracters."),
+ range: jQuery.validator.format("Si us plau, escriu un valor entre {0} i {1}."),
+ max: jQuery.validator.format("Si us plau, escriu un valor menor o igual a {0}."),
+ min: jQuery.validator.format("Si us plau, escriu un valor major o igual a {0}.")
+});
\ No newline at end of file
diff --git a/app/assets/javascripts/jquery-validation/localization/messages_cn.js b/app/assets/javascripts/jquery-validation/localization/messages_cn.js
new file mode 100644
index 0000000..8415f4a
--- /dev/null
+++ b/app/assets/javascripts/jquery-validation/localization/messages_cn.js
@@ -0,0 +1,23 @@
+/*
+ * Translated default messages for the jQuery validation plugin.
+ * Locale: CN
+ */
+jQuery.extend(jQuery.validator.messages, {
+ required: "å¿…é€‰å—æ®µ",
+ remote: "请修æ£è¯¥å—段",
+ email: "请输入æ£ç¡®æ ¼å¼çš„电å邮件",
+ url: "è¯·è¾“å…¥åˆæ³•的网å€",
+ date: "è¯·è¾“å…¥åˆæ³•的日期",
+ dateISO: "è¯·è¾“å…¥åˆæ³•的日期 (ISO).",
+ number: "è¯·è¾“å…¥åˆæ³•的数å—",
+ digits: "åªèƒ½è¾“入整数",
+ creditcard: "è¯·è¾“å…¥åˆæ³•的信用å¡å·",
+ equalTo: "è¯·å†æ¬¡è¾“入相åŒçš„值",
+ accept: "è¯·è¾“å…¥æ‹¥æœ‰åˆæ³•åŽç¼€åçš„å—符串",
+ maxlength: jQuery.validator.format("请输入一个长度最多是 {0} çš„å—符串"),
+ minlength: jQuery.validator.format("请输入一个长度最少是 {0} çš„å—符串"),
+ rangelength: jQuery.validator.format("请输入一个长度介于 {0} å’Œ {1} 之间的å—符串"),
+ range: jQuery.validator.format("请输入一个介于 {0} 和 {1} 之间的值"),
+ max: jQuery.validator.format("请输入一个最大为 {0} 的值"),
+ min: jQuery.validator.format("请输入一个最å°ä¸º {0} 的值")
+});
\ No newline at end of file
diff --git a/app/assets/javascripts/jquery-validation/localization/messages_cs.js b/app/assets/javascripts/jquery-validation/localization/messages_cs.js
new file mode 100644
index 0000000..ab99819
--- /dev/null
+++ b/app/assets/javascripts/jquery-validation/localization/messages_cs.js
@@ -0,0 +1,23 @@
+/*
+ * Translated default messages for the jQuery validation plugin.
+ * Locale: CS
+ */
+jQuery.extend(jQuery.validator.messages, {
+ required: "Tento údaj je povinný.",
+ remote: "ProsÃm, opravte tento údaj.",
+ email: "ProsÃm, zadejte platný e-mail.",
+ url: "ProsÃm, zadejte platné URL.",
+ date: "ProsÃm, zadejte platné datum.",
+ dateISO: "ProsÃm, zadejte platné datum (ISO).",
+ number: "ProsÃm, zadejte ÄÃslo.",
+ digits: "ProsÃm, zadávejte pouze ÄÃslice.",
+ creditcard: "ProsÃm, zadejte ÄÃslo kreditnà karty.",
+ equalTo: "ProsÃm, zadejte znovu stejnou hodnotu.",
+ accept: "ProsÃm, zadejte soubor se správnou pÅ™Ãponou.",
+ maxlength: jQuery.validator.format("ProsÃm, zadejte nejvÃce {0} znaků."),
+ minlength: jQuery.validator.format("ProsÃm, zadejte nejménÄ› {0} znaků."),
+ rangelength: jQuery.validator.format("ProsÃm, zadejte od {0} do {1} znaků."),
+ range: jQuery.validator.format("ProsÃm, zadejte hodnotu od {0} do {1}."),
+ max: jQuery.validator.format("ProsÃm, zadejte hodnotu menšà nebo rovnu {0}."),
+ min: jQuery.validator.format("ProsÃm, zadejte hodnotu vÄ›tšà nebo rovnu {0}.")
+});
diff --git a/app/assets/javascripts/jquery-validation/localization/messages_da.js b/app/assets/javascripts/jquery-validation/localization/messages_da.js
new file mode 100644
index 0000000..1f729e0
--- /dev/null
+++ b/app/assets/javascripts/jquery-validation/localization/messages_da.js
@@ -0,0 +1,20 @@
+/*
+ * Translated default messages for the jQuery validation plugin.
+ * Locale: DA
+ */
+jQuery.extend(jQuery.validator.messages, {
+ required: "Dette felt er påkrævet.",
+ maxlength: jQuery.validator.format("Indtast højst {0} tegn."),
+ minlength: jQuery.validator.format("Indtast mindst {0} tegn."),
+ rangelength: jQuery.validator.format("Indtast mindst {0} og højst {1} tegn."),
+ email: "Indtast en gyldig email-adresse.",
+ url: "Indtast en gyldig URL.",
+ date: "Indtast en gyldig dato.",
+ number: "Indtast et tal.",
+ digits: "Indtast kun cifre.",
+ equalTo: "Indtast den samme værdi igen.",
+ range: jQuery.validator.format("Angiv en værdi mellem {0} og {1}."),
+ max: jQuery.validator.format("Angiv en værdi der højst er {0}."),
+ min: jQuery.validator.format("Angiv en værdi der mindst er {0}."),
+ creditcard: "Indtast et gyldigt kreditkortnummer."
+});
diff --git a/app/assets/javascripts/jquery-validation/localization/messages_de.js b/app/assets/javascripts/jquery-validation/localization/messages_de.js
new file mode 100644
index 0000000..0c03e30
--- /dev/null
+++ b/app/assets/javascripts/jquery-validation/localization/messages_de.js
@@ -0,0 +1,20 @@
+/*
+ * Translated default messages for the jQuery validation plugin.
+ * Locale: DE
+ */
+jQuery.extend(jQuery.validator.messages, {
+ required: "Dieses Feld ist ein Pflichtfeld.",
+ maxlength: jQuery.validator.format("Geben Sie bitte maximal {0} Zeichen ein."),
+ minlength: jQuery.validator.format("Geben Sie bitte mindestens {0} Zeichen ein."),
+ rangelength: jQuery.validator.format("Geben Sie bitte mindestens {0} und maximal {1} Zeichen ein."),
+ email: "Geben Sie bitte eine gültige E-Mail Adresse ein.",
+ url: "Geben Sie bitte eine gültige URL ein.",
+ date: "Bitte geben Sie ein gültiges Datum ein.",
+ number: "Geben Sie bitte eine Nummer ein.",
+ digits: "Geben Sie bitte nur Ziffern ein.",
+ equalTo: "Bitte denselben Wert wiederholen.",
+ range: jQuery.validator.format("Geben Sie bitten einen Wert zwischen {0} und {1}."),
+ max: jQuery.validator.format("Geben Sie bitte einen Wert kleiner oder gleich {0} ein."),
+ min: jQuery.validator.format("Geben Sie bitte einen Wert größer oder gleich {0} ein."),
+ creditcard: "Geben Sie bitte ein gültige Kreditkarten-Nummer ein."
+});
\ No newline at end of file
diff --git a/app/assets/javascripts/jquery-validation/localization/messages_el.js b/app/assets/javascripts/jquery-validation/localization/messages_el.js
new file mode 100644
index 0000000..52607a5
--- /dev/null
+++ b/app/assets/javascripts/jquery-validation/localization/messages_el.js
@@ -0,0 +1,24 @@
+/*
+ * Translated default messages for the jQuery validation plugin.
+ * Locale: EL
+ */
+jQuery.extend(jQuery.validator.messages, {
+ required: "Αυτό το πεδίο είναι υποχÏεωτικό.",
+ remote: "ΠαÏακαλώ διοÏθώστε αυτό το πεδίο.",
+ email: "ΠαÏακαλώ εισάγετε μια ÎγκυÏη διεÏθυνση email.",
+ url: "ΠαÏακαλώ εισάγετε Îνα ÎγκυÏο URL.",
+ date: "ΠαÏακαλώ εισάγετε μια ÎγκυÏη ημεÏομηνία.",
+ dateISO: "ΠαÏακαλώ εισάγετε μια ÎγκυÏη ημεÏομηνία (ISO).",
+ number: "ΠαÏακαλώ εισάγετε Îναν ÎγκυÏο αÏιθμό.",
+ digits: "ΠαÏακαλώ εισάγετε μόνο αÏιθμητικά ψηφία.",
+ creditcard: "ΠαÏακαλώ εισάγετε Îναν ÎγκυÏο αÏιθμό πιστωτικής κάÏτας.",
+ equalTo: "ΠαÏακαλώ εισάγετε την ίδια τιμή ξανά.",
+ accept: "ΠαÏακαλώ εισάγετε μια τιμή με ÎγκυÏη επÎκταση αÏχείου.",
+ maxlength: $.validator.format("ΠαÏακαλώ εισάγετε μÎχÏι και {0} χαÏακτήÏες."),
+ minlength: $.validator.format("ΠαÏακαλώ εισάγετε τουλάχιστον {0} χαÏακτήÏες."),
+ rangelength: $.validator.format("ΠαÏακαλώ εισάγετε μια τιμή με μήκος Î¼ÎµÏ„Î±Î¾Ï {0} και {1} χαÏακτήÏων."),
+ range: $.validator.format("ΠαÏακαλώ εισάγετε μια τιμή Î¼ÎµÏ„Î±Î¾Ï {0} και {1}."),
+ max: $.validator.format("ΠαÏακαλώ εισάγετε μια τιμή μικÏότεÏη ή ίση του {0}."),
+ min: $.validator.format("ΠαÏακαλώ εισάγετε μια τιμή μεγαλÏτεÏη ή ίση του {0}.")
+});
+
diff --git a/app/assets/javascripts/jquery-validation/localization/messages_es.js b/app/assets/javascripts/jquery-validation/localization/messages_es.js
new file mode 100644
index 0000000..b9a2414
--- /dev/null
+++ b/app/assets/javascripts/jquery-validation/localization/messages_es.js
@@ -0,0 +1,23 @@
+/*
+ * Translated default messages for the jQuery validation plugin.
+ * Locale: ES
+ */
+jQuery.extend(jQuery.validator.messages, {
+ required: "Este campo es obligatorio.",
+ remote: "Por favor, rellena este campo.",
+ email: "Por favor, escribe una dirección de correo válida",
+ url: "Por favor, escribe una URL válida.",
+ date: "Por favor, escribe una fecha válida.",
+ dateISO: "Por favor, escribe una fecha (ISO) válida.",
+ number: "Por favor, escribe un número entero válido.",
+ digits: "Por favor, escribe sólo dÃgitos.",
+ creditcard: "Por favor, escribe un número de tarjeta válido.",
+ equalTo: "Por favor, escribe el mismo valor de nuevo.",
+ accept: "Por favor, escribe un valor con una extensión aceptada.",
+ maxlength: jQuery.validator.format("Por favor, no escribas más de {0} caracteres."),
+ minlength: jQuery.validator.format("Por favor, no escribas menos de {0} caracteres."),
+ rangelength: jQuery.validator.format("Por favor, escribe un valor entre {0} y {1} caracteres."),
+ range: jQuery.validator.format("Por favor, escribe un valor entre {0} y {1}."),
+ max: jQuery.validator.format("Por favor, escribe un valor menor o igual a {0}."),
+ min: jQuery.validator.format("Por favor, escribe un valor mayor o igual a {0}.")
+});
\ No newline at end of file
diff --git a/app/assets/javascripts/jquery-validation/localization/messages_fa.js b/app/assets/javascripts/jquery-validation/localization/messages_fa.js
new file mode 100644
index 0000000..1ea531e
--- /dev/null
+++ b/app/assets/javascripts/jquery-validation/localization/messages_fa.js
@@ -0,0 +1,23 @@
+/*
+ * Translated default messages for the jQuery validation plugin.
+ * Locale: FA
+ */
+jQuery.extend(jQuery.validator.messages, {
+ required: "تکمیل این Ùیلد اجباری است.",
+ remote: "Ù„Ø·ÙØ§ این Ùیلد را تصØÛŒØ کنید.",
+ email: ".Ù„Ø·ÙØ§ یک ایمیل صØÛŒØ وارد کنید",
+ url: "Ù„Ø·ÙØ§ آدرس صØÛŒØ وارد کنید.",
+ date: "Ù„Ø·ÙØ§ یک تاریخ صØÛŒØ وارد کنید",
+ dateISO: "Ù„Ø·ÙØ§ تاریخ صØÛŒØ وارد کنید (ISO).",
+ number: "Ù„Ø·ÙØ§ عدد صØÛŒØ وارد کنید.",
+ digits: "Ù„Ø·ÙØ§ تنها رقم وارد کنید",
+ creditcard: "Ù„Ø·ÙØ§ کریدیت کارت صØÛŒØ وارد کنید.",
+ equalTo: "Ù„Ø·ÙØ§ مقدار برابری وارد کنید",
+ accept: "Ù„Ø·ÙØ§ مقداری وارد کنید Ú©Ù‡ ",
+ maxlength: jQuery.validator.format("Ù„Ø·ÙØ§ بیشتر از {0} ØØ±Ù وارد نکنید."),
+ minlength: jQuery.validator.format("Ù„Ø·ÙØ§ کمتر از {0} ØØ±Ù وارد نکنید."),
+ rangelength: jQuery.validator.format("Ù„Ø·ÙØ§ مقداری بین {0} تا {1} ØØ±Ù وارد کنید."),
+ range: jQuery.validator.format("Ù„Ø·ÙØ§ مقداری بین {0} تا {1} ØØ±Ù وارد کنید."),
+ max: jQuery.validator.format("Ù„Ø·ÙØ§ مقداری کمتر از {0} ØØ±Ù وارد کنید."),
+ min: jQuery.validator.format("Ù„Ø·ÙØ§ مقداری بیشتر از {0} ØØ±Ù وارد کنید.")
+});
diff --git a/app/assets/javascripts/jquery-validation/localization/messages_fi.js b/app/assets/javascripts/jquery-validation/localization/messages_fi.js
new file mode 100644
index 0000000..eb47369
--- /dev/null
+++ b/app/assets/javascripts/jquery-validation/localization/messages_fi.js
@@ -0,0 +1,21 @@
+/*
+ * Translated default messages for the jQuery validation plugin.
+ * Locale: FI
+ */
+jQuery.extend(jQuery.validator.messages, {
+ required: "Tämä kenttä on pakollinen.",
+ maxlength: jQuery.validator.format("Voit syöttää enintään {0} merkkiä."),
+ minlength: jQuery.validator.format("Vähintään {0} merkkiä."),
+ rangelength: jQuery.validator.format("Syötä vähintään {0} ja enintään {1} merkkiä."),
+ email: "Syö:tä oikea sähköpostiosoite.",
+ url: "Syötä oikea URL osoite.",
+ date: "Syötä oike päivämäärä.",
+ dateISO: "Syötä oike päivämäärä (VVVV-MM-DD).",
+ number: "Syötä numero.",
+ digits: "Syötä pelkästään numeroita.",
+ equalTo: "Syötä sama arvo uudestaan.",
+ range: jQuery.validator.format("Syötä arvo {0} ja {1} väliltä."),
+ max: jQuery.validator.format("Syötä arvo joka on yhtä suuri tai suurempi kuin {0}."),
+ min: jQuery.validator.format("Syötä arvo joka on pienempi tai yhtä suuri kuin {0}."),
+ creditcard: "Syötä voimassa oleva luottokorttinumero."
+});
\ No newline at end of file
diff --git a/app/assets/javascripts/jquery-validation/localization/messages_fr.js b/app/assets/javascripts/jquery-validation/localization/messages_fr.js
new file mode 100644
index 0000000..f9e1340
--- /dev/null
+++ b/app/assets/javascripts/jquery-validation/localization/messages_fr.js
@@ -0,0 +1,23 @@
+/*
+ * Translated default messages for the jQuery validation plugin.
+ * Locale: FR
+ */
+jQuery.extend(jQuery.validator.messages, {
+ required: "Ce champ est requis.",
+ remote: "Veuillez remplir ce champ pour continuer.",
+ email: "Veuillez entrer une adresse email valide.",
+ url: "Veuillez entrer une URL valide.",
+ date: "Veuillez entrer une date valide.",
+ dateISO: "Veuillez entrer une date valide (ISO).",
+ number: "Veuillez entrer un nombre valide.",
+ digits: "Veuillez entrer (seulement) une valeur numérique.",
+ creditcard: "Veuillez entrer un numéro de carte de crédit valide.",
+ equalTo: "Veuillez entrer une nouvelle fois la même valeur.",
+ accept: "Veuillez entrer une valeur avec une extension valide.",
+ maxlength: jQuery.validator.format("Veuillez ne pas entrer plus de {0} caractères."),
+ minlength: jQuery.validator.format("Veuillez entrer au moins {0} caractères."),
+ rangelength: jQuery.validator.format("Veuillez entrer entre {0} et {1} caractères."),
+ range: jQuery.validator.format("Veuillez entrer une valeur entre {0} et {1}."),
+ max: jQuery.validator.format("Veuillez entrer une valeur inférieure ou égale à {0}."),
+ min: jQuery.validator.format("Veuillez entrer une valeur supérieure ou égale à {0}.")
+});
\ No newline at end of file
diff --git a/app/assets/javascripts/jquery-validation/localization/messages_ge.js b/app/assets/javascripts/jquery-validation/localization/messages_ge.js
new file mode 100644
index 0000000..5c3ee68
--- /dev/null
+++ b/app/assets/javascripts/jquery-validation/localization/messages_ge.js
@@ -0,0 +1,23 @@
+/*
+ * Translated default messages for the jQuery validation plugin.
+ * Locale: GE
+ */
+jQuery.extend(jQuery.validator.messages, {
+ required: "áƒáƒ› ველის შევსებრáƒáƒ£áƒªáƒ˜áƒšáƒ”ბელიáƒ.",
+ remote: "გთხáƒáƒ•თ მიუთითáƒáƒ— სწáƒáƒ ი მნიშვნელáƒáƒ‘áƒ.",
+ email: "გთხáƒáƒ•თ მიუთითáƒáƒ— ელ-ფáƒáƒ¡áƒ¢áƒ˜áƒ¡ კáƒáƒ ექტული მისáƒáƒ›áƒáƒ თი.",
+ url: "გთხáƒáƒ•თ მიუთითáƒáƒ— კáƒáƒ ექტული URL.",
+ date: "გთხáƒáƒ•თ მიუთითáƒáƒ— კáƒáƒ ექტული თáƒáƒ იღი.",
+ dateISO: "გთხáƒáƒ•თ მიუთითáƒáƒ— კáƒáƒ ექტული თáƒáƒ იღი ISO ფáƒáƒ მáƒáƒ¢áƒ¨áƒ˜.",
+ number: "გთხáƒáƒ•თ მიუთითáƒáƒ— ციფრი.",
+ digits: "გთხáƒáƒ•თ მიუთითáƒáƒ— მხáƒáƒšáƒáƒ“ ციფრები.",
+ creditcard: "გთხáƒáƒ•თ მიუთითáƒáƒ— სáƒáƒ™áƒ ედიტრბáƒáƒ áƒáƒ—ის კáƒáƒ ექტული ნáƒáƒ›áƒ”რი.",
+ equalTo: "გთხáƒáƒ•თ მიუთითáƒáƒ— áƒáƒ¡áƒ”თივე მნიშვნელáƒáƒ‘რკიდევ ერთხელ.",
+ accept: "გთხáƒáƒ•თ áƒáƒ˜áƒ ჩიáƒáƒ— ფáƒáƒ˜áƒšáƒ˜ კáƒáƒ ექტული გáƒáƒ¤áƒáƒ თáƒáƒ”ბით.",
+ maxlength: jQuery.validator.format("დáƒáƒ¡áƒáƒ¨áƒ•ებირáƒáƒ áƒáƒ£áƒ›áƒ”ტეს {0} სიმბáƒáƒšáƒ."),
+ minlength: jQuery.validator.format("áƒáƒ£áƒªáƒ˜áƒšáƒ”ბელირშეიყვáƒáƒœáƒáƒ— მინიმუმ {0} სიმბáƒáƒšáƒ."),
+ rangelength: jQuery.validator.format("ტექსტში სიმბáƒáƒšáƒáƒ”ბის რáƒáƒáƒ“ენáƒáƒ‘რუნდრიყáƒáƒ¡ {0}-დáƒáƒœ {1}-მდე."),
+ range: jQuery.validator.format("გთხáƒáƒ•თ შეიყვáƒáƒœáƒáƒ— ციფრი {0}-დáƒáƒœ {1}-მდე."),
+ max: jQuery.validator.format("გთხáƒáƒ•თ შეიყვáƒáƒœáƒáƒ— ციფრი რáƒáƒ›áƒ”ლიც ნáƒáƒ™áƒšáƒ”ბირáƒáƒœ უდრის {0}-ს."),
+ min: jQuery.validator.format("გთხáƒáƒ•თ შეიყვáƒáƒœáƒáƒ— ციფრი რáƒáƒ›áƒ”ლიც მეტირáƒáƒœ უდრის {0}-ს.")
+});
\ No newline at end of file
diff --git a/app/assets/javascripts/jquery-validation/localization/messages_he.js b/app/assets/javascripts/jquery-validation/localization/messages_he.js
new file mode 100644
index 0000000..c89eafe
--- /dev/null
+++ b/app/assets/javascripts/jquery-validation/localization/messages_he.js
@@ -0,0 +1,23 @@
+/*
+ * Translated default messages for the jQuery validation plugin.
+ * Locale: HE
+ */
+jQuery.extend(jQuery.validator.messages, {
+ required: ".השדה ×”×–×” ×”×™× ×• שדה חובה",
+ remote: "× × ×œ×ª×§×Ÿ שדה ×–×”.",
+ email: "× × ×œ×ž×œ× ×›×ª×•×‘×ª דו×\"ל חוקית",
+ url: "× × ×œ×ž×œ× ×›×ª×•×‘×ª ××™× ×˜×¨× ×˜ חוקית.",
+ date: "× × ×œ×ž×œ× ×ª×ריך חוקי",
+ dateISO: "× × ×œ×ž×œ× ×ª×ריך חוקי (ISO).",
+ number: "× × ×œ×ž×œ× ×ž×¡×¤×¨.",
+ digits: ".× × ×œ×ž×œ× ×¨×§ מספרי×",
+ creditcard: "× × ×œ×ž×œ× ×ž×¡×¤×¨ כרטיס ×שר××™ חוקי.",
+ equalTo: "× × ×œ×ž×œ× ×ת ×ותו ערך שוב.",
+ accept: "× × ×œ×ž×œ× ×¢×¨×š ×¢× ×¡×™×•×ž×ª חוקית.",
+ maxlength: jQuery.validator.format(".× × ×œ× ×œ×ž×œ× ×™×•×ª×¨ מ- {0} תווי×"),
+ minlength: jQuery.validator.format("× × ×œ×ž×œ× ×œ×¤×—×•×ª {0} תווי×."),
+ rangelength: jQuery.validator.format("× × ×œ×ž×œ× ×¢×¨×š בין {0} ל- {1} תווי×."),
+ range: jQuery.validator.format("× × ×œ×ž×œ× ×¢×¨×š בין {0} ל- {1}."),
+ max: jQuery.validator.format("× × ×œ×ž×œ× ×¢×¨×š קטן ×ו שווה ל- {0}."),
+ min: jQuery.validator.format("× × ×œ×ž×œ× ×¢×¨×š גדול ×ו שווה ל- {0}.")
+});
diff --git a/app/assets/javascripts/jquery-validation/localization/messages_hu.js b/app/assets/javascripts/jquery-validation/localization/messages_hu.js
new file mode 100644
index 0000000..086222a
--- /dev/null
+++ b/app/assets/javascripts/jquery-validation/localization/messages_hu.js
@@ -0,0 +1,20 @@
+/*
+ * Translated default messages for the jQuery validation plugin.
+ * Locale: HU
+ */
+jQuery.extend(jQuery.validator.messages, {
+ required: "Kötelező megadni.",
+ maxlength: jQuery.validator.format("Legfeljebb {0} karakter hosszú legyen."),
+ minlength: jQuery.validator.format("Legalább {0} karakter hosszú legyen."),
+ rangelength: jQuery.validator.format("Legalább {0} és legfeljebb {1} karakter hosszú legyen."),
+ email: "Érvényes e-mail cÃmnek kell lennie.",
+ url: "Érvényes URL-nek kell lennie.",
+ date: "Dátumnak kell lennie.",
+ number: "Számnak kell lennie.",
+ digits: "Csak számjegyek lehetnek.",
+ equalTo: "Meg kell egyeznie a két értéknek.",
+ range: jQuery.validator.format("{0} és {1} közé kell esnie."),
+ max: jQuery.validator.format("Nem lehet nagyobb, mint {0}."),
+ min: jQuery.validator.format("Nem lehet kisebb, mint {0}."),
+ creditcard: "Érvényes hitelkártyaszámnak kell lennie."
+});
diff --git a/app/assets/javascripts/jquery-validation/localization/messages_it.js b/app/assets/javascripts/jquery-validation/localization/messages_it.js
new file mode 100644
index 0000000..ec44bca
--- /dev/null
+++ b/app/assets/javascripts/jquery-validation/localization/messages_it.js
@@ -0,0 +1,23 @@
+/*
+ * Translated default messages for the jQuery validation plugin.
+ * Locale: IT
+ */
+jQuery.extend(jQuery.validator.messages, {
+ required: "Campo obbligatorio.",
+ remote: "Controlla questo campo.",
+ email: "Inserisci un indirizzo email valido.",
+ url: "Inserisci un indirizzo web valido.",
+ date: "Inserisci una data valida.",
+ dateISO: "Inserisci una data valida (ISO).",
+ number: "Inserisci un numero valido.",
+ digits: "Inserisci solo numeri.",
+ creditcard: "Inserisci un numero di carta di credito valido.",
+ equalTo: "Il valore non corrisponde.",
+ accept: "Inserisci un valore con un'estensione valida.",
+ maxlength: jQuery.validator.format("Non inserire più di {0} caratteri."),
+ minlength: jQuery.validator.format("Inserisci almeno {0} caratteri."),
+ rangelength: jQuery.validator.format("Inserisci un valore compreso tra {0} e {1} caratteri."),
+ range: jQuery.validator.format("Inserisci un valore compreso tra {0} e {1}."),
+ max: jQuery.validator.format("Inserisci un valore minore o uguale a {0}."),
+ min: jQuery.validator.format("Inserisci un valore maggiore o uguale a {0}.")
+});
\ No newline at end of file
diff --git a/app/assets/javascripts/jquery-validation/localization/messages_ja.js b/app/assets/javascripts/jquery-validation/localization/messages_ja.js
new file mode 100644
index 0000000..d613cdc
--- /dev/null
+++ b/app/assets/javascripts/jquery-validation/localization/messages_ja.js
@@ -0,0 +1,23 @@
+/*
+ * Translated default messages for the jQuery validation plugin.
+ * Language: JA
+ */
+jQuery.extend(jQuery.validator.messages, {
+ required: "ã“ã®ãƒ•ィールドã¯å¿…é ˆã§ã™ã€‚",
+ remote: "ã“ã®ãƒ•ィールドを修æ£ã—ã¦ãã ã•ã„。",
+ email: "有効ãªEメールアドレスを入力ã—ã¦ãã ã•ã„。",
+ url: "有効ãªURLを入力ã—ã¦ãã ã•ã„。",
+ date: "æœ‰åŠ¹ãªæ—¥ä»˜ã‚’入力ã—ã¦ãã ã•ã„。",
+ dateISO: "æœ‰åŠ¹ãªæ—¥ä»˜ï¼ˆISO)を入力ã—ã¦ãã ã•ã„。",
+ number: "æœ‰åŠ¹ãªæ•°å—を入力ã—ã¦ãã ã•ã„。",
+ digits: "æ•°å—ã®ã¿ã‚’入力ã—ã¦ãã ã•ã„。",
+ creditcard: "有効ãªã‚¯ãƒ¬ã‚¸ãƒƒãƒˆã‚«ãƒ¼ãƒ‰ç•ªå·ã‚’入力ã—ã¦ãã ã•ã„。",
+ equalTo: "åŒã˜å€¤ã‚’ã‚‚ã†ä¸€åº¦å…¥åŠ›ã—ã¦ãã ã•ã„。",
+ accept: "æœ‰åŠ¹ãªæ‹¡å¼µåã‚’å«ã‚€å€¤ã‚’入力ã—ã¦ãã ã•ã„。",
+ maxlength: jQuery.format("{0} æ–‡å—以内ã§å…¥åŠ›ã—ã¦ãã ã•ã„。"),
+ minlength: jQuery.format("{0} æ–‡å—以上ã§å…¥åŠ›ã—ã¦ãã ã•ã„。"),
+ rangelength: jQuery.format("{0} æ–‡å—ã‹ã‚‰ {1} æ–‡å—ã¾ã§ã®å€¤ã‚’入力ã—ã¦ãã ã•ã„。"),
+ range: jQuery.format("{0} ã‹ã‚‰ {1} ã¾ã§ã®å€¤ã‚’入力ã—ã¦ãã ã•ã„。"),
+ max: jQuery.format("{0} 以下ã®å€¤ã‚’入力ã—ã¦ãã ã•ã„。"),
+ min: jQuery.format("{1} 以上ã®å€¤ã‚’入力ã—ã¦ãã ã•ã„。")
+});
\ No newline at end of file
diff --git a/app/assets/javascripts/jquery-validation/localization/messages_kk.js b/app/assets/javascripts/jquery-validation/localization/messages_kk.js
new file mode 100644
index 0000000..b377894
--- /dev/null
+++ b/app/assets/javascripts/jquery-validation/localization/messages_kk.js
@@ -0,0 +1,23 @@
+/*
+ * Translated default messages for the jQuery validation plugin.
+ * Locale: KK
+ */
+jQuery.extend(jQuery.validator.messages, {
+ required: "Бұл өріÑті міндетті түрде толтырыңыз.",
+ remote: "Ð”Ò±Ñ€Ñ‹Ñ Ð¼Ð°Ò“Ñ‹Ð½Ð° енгізуіңізді Ñұраймыз.",
+ email: "Ðақты Ñлектронды поштаңызды енгізуіңізді Ñұраймыз.",
+ url: "Ðақты URL-ды енгізуіңізді Ñұраймыз.",
+ date: "Ðақты URL-ды енгізуіңізді Ñұраймыз.",
+ dateISO: "Ðақты ISO форматымен ÑÓ™Ð¹ÐºÐµÑ Ð´Ð°Ñ‚Ð°Ñын енгізуіңізді Ñұраймыз.",
+ number: "Күнді енгізуіңізді Ñұраймыз.",
+ digits: "Тек қана Ñандарды енгізуіңізді Ñұраймыз.",
+ creditcard: "ÐеÑие картаÑының нөмірін Ð´Ò±Ñ€Ñ‹Ñ ÐµÐ½Ð³Ñ–Ð·ÑƒÑ–Ò£Ñ–Ð·Ð´Ñ– Ñұраймыз.",
+ equalTo: "ОÑÑ‹ мәнді қайта енгізуіңізді Ñұраймыз.",
+ accept: "Файлдың кеңейтуін Ð´Ò±Ñ€Ñ‹Ñ Ñ‚Ð°Ò£Ð´Ð°Ò£Ñ‹Ð·.",
+ maxlength: jQuery.format("Ұзындығы {0} Ñимволдан көр болмаÑын."),
+ minlength: jQuery.format("Ұзындығы {0} Ñимволдан аз болмаÑын."),
+ rangelength: jQuery.format("Ұзындығы {0}-{1} дейін мән енгізуіңізді Ñұраймыз."),
+ range: jQuery.format("ПожалуйÑта, введите чиÑло от {0} до {1}. - {0} - {1} Ñанын енгізуіңізді Ñұраймыз."),
+ max: jQuery.format("{0} аз немеÑе тең Ñанын енгізуіңіді Ñұраймыз."),
+ min: jQuery.format("{0} көп немеÑе тең Ñанын енгізуіңізді Ñұраймыз.")
+});
\ No newline at end of file
diff --git a/app/assets/javascripts/jquery-validation/localization/messages_lt.js b/app/assets/javascripts/jquery-validation/localization/messages_lt.js
new file mode 100644
index 0000000..a890dbe
--- /dev/null
+++ b/app/assets/javascripts/jquery-validation/localization/messages_lt.js
@@ -0,0 +1,23 @@
+/*
+ * Translated default messages for the jQuery validation plugin in lithuanian.
+ * Locale: LT
+ */
+jQuery.extend(jQuery.validator.messages, {
+ required: "Å is laukas yra privalomas.",
+ remote: "Prašau pataisyti šį lauką.",
+ email: "Prašau įvesti teisingą elektroninio pašto adresą.",
+ url: "Prašau įvesti teisingą URL.",
+ date: "Prašau įvesti teisingą datą.",
+ dateISO: "Prašau įvesti teisingą datą (ISO).",
+ number: "PraÅ¡au įvesti teisingÄ… skaiÄių.",
+ digits: "Prašau naudoti tik skaitmenis.",
+ creditcard: "Prašau įvesti teisingą kreditinės kortelės numerį.",
+ equalTo: "PraÅ¡au įvestį tÄ… paÄiÄ… reikÅ¡mÄ™ dar kartÄ….",
+ accept: "Prašau įvesti reikšmę su teisingu plėtiniu.",
+ maxlength: $.format("Prašau įvesti ne daugiau kaip {0} simbolių."),
+ minlength: $.format("Prašau įvesti bent {0} simbolius."),
+ rangelength: $.format("Prašau įvesti reikšmes, kurių ilgis nuo {0} iki {1} simbolių."),
+ range: $.format("Prašau įvesti reikšmę intervale nuo {0} iki {1}."),
+ max: $.format("Prašau įvesti reikšmę mažesnę arba lygią {0}."),
+ min: $.format("Prašau įvesti reikšmę didesnę arba lygią {0}.")
+});
\ No newline at end of file
diff --git a/app/assets/javascripts/jquery-validation/localization/messages_lv.js b/app/assets/javascripts/jquery-validation/localization/messages_lv.js
new file mode 100644
index 0000000..944e918
--- /dev/null
+++ b/app/assets/javascripts/jquery-validation/localization/messages_lv.js
@@ -0,0 +1,23 @@
+/*
+ * Translated default messages for the jQuery validation plugin.
+ * Locale: LV
+ */
+jQuery.extend(jQuery.validator.messages, {
+ required: "Å is lauks ir obligÄts.",
+ remote: "LÅ«dzu, pÄrbaudiet Å¡o lauku.",
+ email: "Lūdzu, ievadiet derīgu e-pasta adresi.",
+ url: "Lūdzu, ievadiet derīgu URL adresi.",
+ date: "Lūdzu, ievadiet derīgu datumu.",
+ dateISO: "Lūdzu, ievadiet derīgu datumu (ISO).",
+ number: "Lūdzu, ievadiet derīgu numuru.",
+ digits: "Lūdzu, ievadiet tikai ciparus.",
+ creditcard: "Lūdzu, ievadiet derīgu kredītkartes numuru.",
+ equalTo: "Lūdzu, ievadiet to pašu vēlreiz.",
+ accept: "LÅ«dzu, ievadiet vÄ“rtÄ«bu ar derÄ«gu paplaÅ¡inÄjumu.",
+ maxlength: jQuery.validator.format("LÅ«dzu, ievadiet ne vairÄk kÄ {0} rakstzÄ«mes."),
+ minlength: jQuery.validator.format("Lūdzu, ievadiet vismaz {0} rakstzīmes."),
+ rangelength: jQuery.validator.format("Lūdzu ievadiet {0} līdz {1} rakstzīmes."),
+ range: jQuery.validator.format("Lūdzu, ievadiet skaitli no {0} līdz {1}."),
+ max: jQuery.validator.format("LÅ«dzu, ievadiet skaitli, kurÅ¡ ir mazÄks vai vienÄds ar {0}."),
+ min: jQuery.validator.format("LÅ«dzu, ievadiet skaitli, kurÅ¡ ir lielÄks vai vienÄds ar {0}.")
+});
\ No newline at end of file
diff --git a/app/assets/javascripts/jquery-validation/localization/messages_nl.js b/app/assets/javascripts/jquery-validation/localization/messages_nl.js
new file mode 100644
index 0000000..e266158
--- /dev/null
+++ b/app/assets/javascripts/jquery-validation/localization/messages_nl.js
@@ -0,0 +1,23 @@
+/*
+ * Translated default messages for the jQuery validation plugin.
+ * Locale: NL
+ */
+jQuery.extend(jQuery.validator.messages, {
+ required: "Dit is een verplicht veld.",
+ remote: "Controleer dit veld.",
+ email: "Vul hier een geldig e-mailadres in.",
+ url: "Vul hier een geldige URL in.",
+ date: "Vul hier een geldige datum in.",
+ dateISO: "Vul hier een geldige datum in (ISO-formaat).",
+ number: "Vul hier een geldig getal in.",
+ digits: "Vul hier alleen getallen in.",
+ creditcard: "Vul hier een geldig creditcardnummer in.",
+ equalTo: "Vul hier dezelfde waarde in.",
+ accept: "Vul hier een waarde in met een geldige extensie.",
+ maxlength: jQuery.validator.format("Vul hier maximaal {0} tekens in."),
+ minlength: jQuery.validator.format("Vul hier minimaal {0} tekens in."),
+ rangelength: jQuery.validator.format("Vul hier een waarde in van minimaal {0} en maximaal {1} tekens."),
+ range: jQuery.validator.format("Vul hier een waarde in van minimaal {0} en maximaal {1}."),
+ max: jQuery.validator.format("Vul hier een waarde in kleiner dan of gelijk aan {0}."),
+ min: jQuery.validator.format("Vul hier een waarde in groter dan of gelijk aan {0}.")
+});
\ No newline at end of file
diff --git a/app/assets/javascripts/jquery-validation/localization/messages_no.js b/app/assets/javascripts/jquery-validation/localization/messages_no.js
new file mode 100644
index 0000000..89706fc
--- /dev/null
+++ b/app/assets/javascripts/jquery-validation/localization/messages_no.js
@@ -0,0 +1,23 @@
+/*
+ * Translated default messages for the jQuery validation plugin.
+ * Locale: NO (Norwegian)
+ */
+jQuery.extend(jQuery.validator.messages, {
+ required: "Dette feltet er obligatorisk.",
+ maxlength: jQuery.validator.format("Maksimalt {0} tegn."),
+ minlength: jQuery.validator.format("Minimum {0} tegn."),
+ rangelength: jQuery.validator.format("Angi minimum {0} og maksimum {1} tegn."),
+ email: "Oppgi en gyldig epostadresse.",
+ url: "Angi en gyldig URL.",
+ date: "Angi en gyldig dato.",
+ dateISO: "Angi en gyldig dato (&ARING;&ARING;&ARING;&ARING;-MM-DD).",
+ dateSE: "Angi en gyldig dato.",
+ number: "Angi et gyldig nummer.",
+ numberSE: "Angi et gyldig nummer.",
+ digits: "Skriv kun tall.",
+ equalTo: "Skriv samme verdi igjen.",
+ range: jQuery.validator.format("Angi en verdi mellom {0} og {1}."),
+ max: jQuery.validator.format("Angi en verdi som er større eller lik {0}."),
+ min: jQuery.validator.format("Angi en verdi som er mindre eller lik {0}."),
+ creditcard: "Angi et gyldig kredittkortnummer."
+});
\ No newline at end of file
diff --git a/app/assets/javascripts/jquery-validation/localization/messages_pl.js b/app/assets/javascripts/jquery-validation/localization/messages_pl.js
new file mode 100644
index 0000000..27190d8
--- /dev/null
+++ b/app/assets/javascripts/jquery-validation/localization/messages_pl.js
@@ -0,0 +1,23 @@
+/*
+ * Translated default messages for the jQuery validation plugin.
+ * Locale: PL
+ */
+jQuery.extend(jQuery.validator.messages, {
+ required: "To pole jest wymagane.",
+ remote: "Proszę o wypełnienie tego pola.",
+ email: "Proszę o podanie prawidłowego adresu email.",
+ url: "Proszę o podanie prawidłowego URL.",
+ date: "Proszę o podanie prawidłowej daty.",
+ dateISO: "Proszę o podanie prawidłowej daty (ISO).",
+ number: "Proszę o podanie prawidłowej liczby.",
+ digits: "ProszÄ™ o podanie samych cyfr.",
+ creditcard: "Proszę o podanie prawidłowej karty kredytowej.",
+ equalTo: "Proszę o podanie tej samej wartości ponownie.",
+ accept: "Proszę o podanie wartości z prawidłowym rozszerzeniem.",
+ maxlength: jQuery.validator.format("Proszę o podanie nie więcej niż {0} znaków."),
+ minlength: jQuery.validator.format("Proszę o podanie przynajmniej {0} znaków."),
+ rangelength: jQuery.validator.format("Proszę o podanie wartości o długości od {0} do {1} znaków."),
+ range: jQuery.validator.format("Proszę o podanie wartości z przedziału od {0} do {1}."),
+ max: jQuery.validator.format("Proszę o podanie wartości mniejszej bądź równej {0}."),
+ min: jQuery.validator.format("Proszę o podanie wartości większej bądź równej {0}.")
+});
\ No newline at end of file
diff --git a/app/assets/javascripts/jquery-validation/localization/messages_pt.js b/app/assets/javascripts/jquery-validation/localization/messages_pt.js
new file mode 120000
index 0000000..34bf523
--- /dev/null
+++ b/app/assets/javascripts/jquery-validation/localization/messages_pt.js
@@ -0,0 +1 @@
+messages_ptbr.js
\ No newline at end of file
diff --git a/app/assets/javascripts/jquery-validation/localization/messages_ptbr.js b/app/assets/javascripts/jquery-validation/localization/messages_ptbr.js
new file mode 100644
index 0000000..0711857
--- /dev/null
+++ b/app/assets/javascripts/jquery-validation/localization/messages_ptbr.js
@@ -0,0 +1,23 @@
+/*
+ * Translated default messages for the jQuery validation plugin.
+ * Locale: PT_BR
+ */
+jQuery.extend(jQuery.validator.messages, {
+ required: "Este campo é requerido.",
+ remote: "Por favor, corrija este campo.",
+ email: "Por favor, forneça um endereço eletrônico válido.",
+ url: "Por favor, forneça uma URL válida.",
+ date: "Por favor, forneça uma data válida.",
+ dateISO: "Por favor, forneça uma data válida (ISO).",
+ number: "Por favor, forneça um número válida.",
+ digits: "Por favor, forneça somente dígitos.",
+ creditcard: "Por favor, forneça um cartão de crédito válido.",
+ equalTo: "Por favor, forneça o mesmo valor novamente.",
+ accept: "Por favor, forneça um valor com uma extensão válida.",
+ maxlength: jQuery.validator.format("Por favor, forneça não mais que {0} caracteres."),
+ minlength: jQuery.validator.format("Por favor, forneça ao menos {0} caracteres."),
+ rangelength: jQuery.validator.format("Por favor, forneça um valor entre {0} e {1} caracteres de comprimento."),
+ range: jQuery.validator.format("Por favor, forneça um valor entre {0} e {1}."),
+ max: jQuery.validator.format("Por favor, forneça um valor menor ou igual a {0}."),
+ min: jQuery.validator.format("Por favor, forneça um valor maior ou igual a {0}.")
+});
diff --git a/app/assets/javascripts/jquery-validation/localization/messages_ptpt.js b/app/assets/javascripts/jquery-validation/localization/messages_ptpt.js
new file mode 100644
index 0000000..1e3fea2
--- /dev/null
+++ b/app/assets/javascripts/jquery-validation/localization/messages_ptpt.js
@@ -0,0 +1,23 @@
+/**
+ * Translated default messages for the jQuery validation plugin.
+ * Locale: PT_PT
+ */
+jQuery.extend(jQuery.validator.messages, {
+ required: "Campo de preenchimento obrigatório.",
+ remote: "Por favor, corrija este campo.",
+ email: "Por favor, introduza um endereço eletrónico válido.",
+ url: "Por favor, introduza um URL válido.",
+ date: "Por favor, introduza uma data válida.",
+ dateISO: "Por favor, introduza uma data válida (ISO).",
+ number: "Por favor, introduza um número válido.",
+ digits: "Por favor, introduza apenas dígitos.",
+ creditcard: "Por favor, introduza um número de cartão de crédito válido.",
+ equalTo: "Por favor, introduza de novo o mesmo valor.",
+ accept: "Por favor, introduza um ficheiro com uma extensão válida.",
+ maxlength: jQuery.validator.format("Por favor, não introduza mais do que {0} caracteres."),
+ minlength: jQuery.validator.format("Por favor, introduza pelo menos {0} caracteres."),
+ rangelength: jQuery.validator.format("Por favor, introduza entre {0} e {1} caracteres."),
+ range: jQuery.validator.format("Por favor, introduza um valor entre {0} e {1}."),
+ max: jQuery.validator.format("Por favor, introduza um valor menor ou igual a {0}."),
+ min: jQuery.validator.format("Por favor, introduza um valor maior ou igual a {0}.")
+});
diff --git a/app/assets/javascripts/jquery-validation/localization/messages_ro.js b/app/assets/javascripts/jquery-validation/localization/messages_ro.js
new file mode 100644
index 0000000..ae9a67c
--- /dev/null
+++ b/app/assets/javascripts/jquery-validation/localization/messages_ro.js
@@ -0,0 +1,23 @@
+/*
+ * Translated default messages for the jQuery validation plugin.
+ * Locale: RO
+ */
+jQuery.extend(jQuery.validator.messages, {
+ required: "Acest câmp este obligatoriu.",
+ remote: "Te rugăm să completezi acest câmp.",
+ email: "Te rugăm să introduci o adresă de email validă",
+ url: "Te rugăm sa introduci o adresă URL validă.",
+ date: "Te rugăm să introduci o dată corectă.",
+ dateISO: "Te rugăm să introduci o dată (ISO) corectă.",
+ number: "Te rugăm să introduci un număr întreg valid.",
+ digits: "Te rugăm să introduci doar cifre.",
+ creditcard: "Te rugăm să introduci un numar de carte de credit valid.",
+ equalTo: "Te rugăm să reintroduci valoarea.",
+ accept: "Te rugăm să introduci o valoare cu o extensie validă.",
+ maxlength: jQuery.validator.format("Te rugăm să nu introduci mai mult de {0} caractere."),
+ minlength: jQuery.validator.format("Te rugăm să introduci cel puțin {0} caractere."),
+ rangelength: jQuery.validator.format("Te rugăm să introduci o valoare între {0} și {1} caractere."),
+ range: jQuery.validator.format("Te rugăm să introduci o valoare între {0} și {1}."),
+ max: jQuery.validator.format("Te rugăm să introduci o valoare egal sau mai mică decât {0}."),
+ min: jQuery.validator.format("Te rugăm să introduci o valoare egal sau mai mare decât {0}.")
+});
\ No newline at end of file
diff --git a/app/assets/javascripts/jquery-validation/localization/messages_ru.js b/app/assets/javascripts/jquery-validation/localization/messages_ru.js
new file mode 100644
index 0000000..419ac24
--- /dev/null
+++ b/app/assets/javascripts/jquery-validation/localization/messages_ru.js
@@ -0,0 +1,23 @@
+/*
+ * Translated default messages for the jQuery validation plugin.
+ * Locale: RU
+ */
+jQuery.extend(jQuery.validator.messages, {
+ required: "Ðто поле необходимо заполнить.",
+ remote: "ПожалуйÑта, введите правильное значение.",
+ email: "ПожалуйÑта, введите корретный Ð°Ð´Ñ€ÐµÑ Ñлектронной почты.",
+ url: "ПожалуйÑта, введите корректный URL.",
+ date: "ПожалуйÑта, введите корректную дату.",
+ dateISO: "ПожалуйÑта, введите корректную дату в формате ISO.",
+ number: "ПожалуйÑта, введите чиÑло.",
+ digits: "ПожалуйÑта, вводите только цифры.",
+ creditcard: "ПожалуйÑта, введите правильный номер кредитной карты.",
+ equalTo: "ПожалуйÑта, введите такое же значение ещё раз.",
+ accept: "ПожалуйÑта, выберите файл Ñ Ð¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ñ‹Ð¼ раÑширением.",
+ maxlength: jQuery.validator.format("ПожалуйÑта, введите не больше {0} Ñимволов."),
+ minlength: jQuery.validator.format("ПожалуйÑта, введите не меньше {0} Ñимволов."),
+ rangelength: jQuery.validator.format("ПожалуйÑта, введите значение длиной от {0} до {1} Ñимволов."),
+ range: jQuery.validator.format("ПожалуйÑта, введите чиÑло от {0} до {1}."),
+ max: jQuery.validator.format("ПожалуйÑта, введите чиÑло, меньшее или равное {0}."),
+ min: jQuery.validator.format("ПожалуйÑта, введите чиÑло, большее или равное {0}.")
+});
\ No newline at end of file
diff --git a/app/assets/javascripts/jquery-validation/localization/messages_se.js b/app/assets/javascripts/jquery-validation/localization/messages_se.js
new file mode 100644
index 0000000..3dee369
--- /dev/null
+++ b/app/assets/javascripts/jquery-validation/localization/messages_se.js
@@ -0,0 +1,21 @@
+/*
+ * Translated default messages for the jQuery validation plugin.
+ * Locale: SE
+ */
+jQuery.extend(jQuery.validator.messages, {
+ required: "Detta fält är obligatoriskt.",
+ maxlength: jQuery.validator.format("Du får ange högst {0} tecken."),
+ minlength: jQuery.validator.format("Du måste ange minst {0} tecken."),
+ rangelength: jQuery.validator.format("Ange minst {0} och max {1} tecken."),
+ email: "Ange en korrekt e-postadress.",
+ url: "Ange en korrekt URL.",
+ date: "Ange ett korrekt datum.",
+ dateISO: "Ange ett korrekt datum (&ARING;&ARING;&ARING;&ARING;-MM-DD).",
+ number: "Ange ett korrekt nummer.",
+ digits: "Ange endast siffror.",
+ equalTo: "Ange samma värde igen.",
+ range: jQuery.validator.format("Ange ett värde mellan {0} och {1}."),
+ max: jQuery.validator.format("Ange ett värde som är större eller lika med {0}."),
+ min: jQuery.validator.format("Ange ett värde som är mindre eller lika med {0}."),
+ creditcard: "Ange ett korrekt kreditkortsnummer."
+});
\ No newline at end of file
diff --git a/app/assets/javascripts/jquery-validation/localization/messages_si.js b/app/assets/javascripts/jquery-validation/localization/messages_si.js
new file mode 100644
index 0000000..317022f
--- /dev/null
+++ b/app/assets/javascripts/jquery-validation/localization/messages_si.js
@@ -0,0 +1,23 @@
+/*
+ * Translated default messages for the jQuery validation plugin.
+ * Locale: SI (Slovenian)
+ */
+jQuery.extend(jQuery.validator.messages, {
+ required: "To polje je obvezno.",
+ remote: "Vpis v tem polju ni v pravi obliki.",
+ email: "Prosimo, vnesite pravi email naslov.",
+ url: "Prosimo, vnesite pravi URL.",
+ date: "Prosimo, vnesite pravi datum.",
+ dateISO: "Prosimo, vnesite pravi datum (ISO).",
+ number: "Prosimo, vnesite pravo številko.",
+ digits: "Prosimo, vnesite samo številke.",
+ creditcard: "Prosimo, vnesite pravo številko kreditne kartice.",
+ equalTo: "Prosimo, ponovno vnesite enako vsebino.",
+ accept: "Prosimo, vnesite vsebino z pravo konÄnico.",
+ maxlength: $.validator.format("Prosimo, da ne vnaÅ¡ate veÄ kot {0} znakov."),
+ minlength: $.validator.format("Prosimo, vnesite vsaj {0} znakov."),
+ rangelength: $.validator.format("Prosimo, vnesite od {0} do {1} znakov."),
+ range: $.validator.format("Prosimo, vnesite vrednost med {0} in {1}."),
+ max: $.validator.format("Prosimo, vnesite vrednost manjšo ali enako {0}."),
+ min: $.validator.format("Prosimo, vnesite vrednost veÄjo ali enako {0}.")
+});
diff --git a/app/assets/javascripts/jquery-validation/localization/messages_sk.js b/app/assets/javascripts/jquery-validation/localization/messages_sk.js
new file mode 100644
index 0000000..442d31d
--- /dev/null
+++ b/app/assets/javascripts/jquery-validation/localization/messages_sk.js
@@ -0,0 +1,20 @@
+/*
+ * Translated default messages for the jQuery validation plugin.
+ * Locale: SK
+ */
+jQuery.extend(jQuery.validator.messages, {
+ required: "Povinné zadať.",
+ maxlength: jQuery.validator.format("Maximálne {0} znakov."),
+ minlength: jQuery.validator.format("Minimálne {0} znakov."),
+ rangelength: jQuery.validator.format("Minimálne {0} a Maximálne {0} znakov."),
+ email: "E-mailová adresa musà byť platná.",
+ url: "URL musà byť platný.",
+ date: "Musà byť dátum.",
+ number: "Musà byÅ¥ ÄÃslo.",
+ digits: "Môže obsahovaÅ¥ iba ÄÃslice.",
+ equalTo: "Dva hodnoty sa musia rovnať.",
+ range: jQuery.validator.format("Musà byť medzi {0} a {1}."),
+ max: jQuery.validator.format("Nemôže byť viac ako{0}."),
+ min: jQuery.validator.format("Nemôže byť menej ako{0}."),
+ creditcard: "ÄŒÃslo platobnej karty musà byÅ¥ platné."
+});
diff --git a/app/assets/javascripts/jquery-validation/localization/messages_sr.js b/app/assets/javascripts/jquery-validation/localization/messages_sr.js
new file mode 100644
index 0000000..1a89174
--- /dev/null
+++ b/app/assets/javascripts/jquery-validation/localization/messages_sr.js
@@ -0,0 +1,23 @@
+/*
+ * Translated default messages for the jQuery validation plugin.
+ * Locale: SR
+ */
+jQuery.extend(jQuery.validator.messages, {
+ required: "Поље је обавезно.",
+ remote: "Средите ово поље.",
+ email: "УнеÑите иÑправну и-мејл адреÑу",
+ url: "УнеÑите иÑправан URL.",
+ date: "УнеÑите иÑправан датум.",
+ dateISO: "УнеÑите иÑправан датум (ISO).",
+ number: "УнеÑите иÑправан број.",
+ digits: "УнеÑите Ñамо цифе.",
+ creditcard: "УнеÑите иÑправан број кредитне картице.",
+ equalTo: "УнеÑите иÑту вредноÑÑ‚ поново.",
+ accept: "УнеÑите вредноÑÑ‚ Ñа одговарајућом екÑтензијом.",
+ maxlength: $.validator.format("УнеÑите мање од {0}карактера."),
+ minlength: $.validator.format("УнеÑите барем {0} карактера."),
+ rangelength: $.validator.format("УнеÑите вредноÑÑ‚ дугачку између {0} и {1} карактера."),
+ range: $.validator.format("УнеÑите вредноÑÑ‚ између {0} и {1}."),
+ max: $.validator.format("УнеÑите вредноÑÑ‚ мању или једнаку {0}."),
+ min: $.validator.format("УнеÑите вредноÑÑ‚ већу или једнаку {0}.")
+});
diff --git a/app/assets/javascripts/jquery-validation/localization/messages_tr.js b/app/assets/javascripts/jquery-validation/localization/messages_tr.js
new file mode 100644
index 0000000..9df81e4
--- /dev/null
+++ b/app/assets/javascripts/jquery-validation/localization/messages_tr.js
@@ -0,0 +1,23 @@
+/*
+ * Translated default messages for the jQuery validation plugin.
+ * Locale: TR
+ */
+jQuery.extend(jQuery.validator.messages, {
+ required: "Bu alanın doldurulması zorunludur.",
+ remote: "Lütfen bu alanı düzeltin.",
+ email: "Lütfen geçerli bir e-posta adresi giriniz.",
+ url: "Lütfen geçerli bir web adresi (URL) giriniz.",
+ date: "Lütfen geçerli bir tarih giriniz.",
+ dateISO: "Lütfen geçerli bir tarih giriniz(ISO formatında)",
+ number: "Lütfen geçerli bir sayı giriniz.",
+ digits: "Lütfen sadece sayısal karakterler giriniz.",
+ creditcard: "Lütfen geçerli bir kredi kartı giriniz.",
+ equalTo: "Lütfen aynı değeri tekrar giriniz.",
+ accept: "Lütfen geçerli uzantıya sahip bir değer giriniz.",
+ maxlength: jQuery.validator.format("Lütfen en fazla {0} karakter uzunluğunda bir değer giriniz."),
+ minlength: jQuery.validator.format("Lütfen en az {0} karakter uzunluğunda bir değer giriniz."),
+ rangelength: jQuery.validator.format("Lütfen en az {0} ve en fazla {1} uzunluğunda bir değer giriniz."),
+ range: jQuery.validator.format("Lütfen {0} ile {1} arasında bir değer giriniz."),
+ max: jQuery.validator.format("Lütfen {0} değerine eşit ya da daha küçük bir değer giriniz."),
+ min: jQuery.validator.format("Lütfen {0} değerine eşit ya da daha büyük bir değer giriniz.")
+});
\ No newline at end of file
diff --git a/app/assets/javascripts/jquery-validation/localization/messages_tw.js b/app/assets/javascripts/jquery-validation/localization/messages_tw.js
new file mode 100644
index 0000000..2481535
--- /dev/null
+++ b/app/assets/javascripts/jquery-validation/localization/messages_tw.js
@@ -0,0 +1,23 @@
+/*
+ * Translated default messages for the jQuery validation plugin.
+ * Locale: TW (Taiwan - Traditional Chinese)
+ */
+jQuery.extend(jQuery.validator.messages, {
+ required: "å¿…å¡«",
+ remote: "è«‹ä¿®æ£æ¤æ¬„ä½",
+ email: "請輸入æ£ç¢ºçš„é›»åä¿¡ç®±",
+ url: "è«‹è¼¸å…¥åˆæ³•çš„URL",
+ date: "è«‹è¼¸å…¥åˆæ³•的日期",
+ dateISO: "è«‹è¼¸å…¥åˆæ³•的日期 (ISO).",
+ number: "請輸入數å—",
+ digits: "請輸入整數",
+ creditcard: "è«‹è¼¸å…¥åˆæ³•的信用å¡è™Ÿç¢¼",
+ equalTo: "è«‹é‡è¤‡è¼¸å…¥ä¸€æ¬¡",
+ accept: "請輸入有效的後缀å—串",
+ maxlength: jQuery.validator.format("請輸入長度ä¸å¤§æ–¼{0} çš„å—串"),
+ minlength: jQuery.validator.format("請輸入長度ä¸å°æ–¼ {0} çš„å—串"),
+ rangelength: jQuery.validator.format("請輸入長度介於 {0} å’Œ {1} 之間的å—串"),
+ range: jQuery.validator.format("請輸入介於 {0} 和 {1} 之間的數值"),
+ max: jQuery.validator.format("請輸入ä¸å¤§æ–¼ {0} 的數值"),
+ min: jQuery.validator.format("請輸入ä¸å°æ–¼ {0} 的數值")
+});
\ No newline at end of file
diff --git a/app/assets/javascripts/jquery-validation/localization/messages_ua.js b/app/assets/javascripts/jquery-validation/localization/messages_ua.js
new file mode 100644
index 0000000..25434a6
--- /dev/null
+++ b/app/assets/javascripts/jquery-validation/localization/messages_ua.js
@@ -0,0 +1,23 @@
+/*
+ * Translated default messages for the jQuery validation plugin.
+ * Locale: UA (Ukrainian)
+ */
+jQuery.extend(jQuery.validator.messages, {
+ required: "Це поле необхідно заповнити.",
+ remote: "Будь лаÑка, введіть правильне значеннÑ.",
+ email: "Будь лаÑка, введіть коректну адреÑу електронної пошти.",
+ url: "Будь лаÑка, введіть коректний URL.",
+ date: "Будь лаÑка, введіть коректну дату.",
+ dateISO: "Будь лаÑка, введіть коректну дату у форматі ISO.",
+ number: "Будь лаÑка, введіть чиÑло.",
+ digits: "Вводите потрібно лише цифри.",
+ creditcard: "Будь лаÑка, введіть правильний номер кредитної карти.",
+ equalTo: "Будь лаÑка, введіть таке ж Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ñ‰Ðµ раз.",
+ accept: "Будь лаÑка, виберіть файл з правильним розширеннÑм.",
+ maxlength: jQuery.validator.format("Будь лаÑка, введіть не більше {0} Ñимволів."),
+ minlength: jQuery.validator.format("Будь лаÑка, введіть не менше {0} Ñимволів."),
+ rangelength: jQuery.validator.format("Будь лаÑка, введіть Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð´Ð¾Ð²Ð¶Ð¸Ð½Ð¾ÑŽ від {0} до {1} Ñимволів."),
+ range: jQuery.validator.format("Будь лаÑка, введіть чиÑло від {0} до {1}."),
+ max: jQuery.validator.format("Будь лаÑка, введіть чиÑло, менше або рівно {0}."),
+ min: jQuery.validator.format("Будь лаÑка, введіть чиÑло, більше або рівно {0}.")
+});
diff --git a/app/assets/javascripts/jquery-validation/localization/methods_de.js b/app/assets/javascripts/jquery-validation/localization/methods_de.js
new file mode 100644
index 0000000..3e8ac84
--- /dev/null
+++ b/app/assets/javascripts/jquery-validation/localization/methods_de.js
@@ -0,0 +1,12 @@
+/*
+ * Localized default methods for the jQuery validation plugin.
+ * Locale: DE
+ */
+jQuery.extend(jQuery.validator.methods, {
+ date: function(value, element) {
+ return this.optional(element) || /^\d\d?\.\d\d?\.\d\d\d?\d?$/.test(value);
+ },
+ number: function(value, element) {
+ return this.optional(element) || /^-?(?:\d+|\d{1,3}(?:\.\d{3})+)(?:,\d+)?$/.test(value);
+ }
+});
\ No newline at end of file
diff --git a/app/assets/javascripts/jquery-validation/localization/methods_nl.js b/app/assets/javascripts/jquery-validation/localization/methods_nl.js
new file mode 100644
index 0000000..152e94d
--- /dev/null
+++ b/app/assets/javascripts/jquery-validation/localization/methods_nl.js
@@ -0,0 +1,9 @@
+/*
+ * Localized default methods for the jQuery validation plugin.
+ * Locale: NL
+ */
+jQuery.extend(jQuery.validator.methods, {
+ date: function(value, element) {
+ return this.optional(element) || /^\d\d?[\.\/-]\d\d?[\.\/-]\d\d\d?\d?$/.test(value);
+ }
+});
\ No newline at end of file
diff --git a/app/assets/javascripts/jquery-validation/localization/methods_pt.js b/app/assets/javascripts/jquery-validation/localization/methods_pt.js
new file mode 100644
index 0000000..21879d3
--- /dev/null
+++ b/app/assets/javascripts/jquery-validation/localization/methods_pt.js
@@ -0,0 +1,9 @@
+/*
+ * Localized default methods for the jQuery validation plugin.
+ * Locale: PT_BR
+ */
+jQuery.extend(jQuery.validator.methods, {
+ date: function(value, element) {
+ return this.optional(element) || /^\d\d?\/\d\d?\/\d\d\d?\d?$/.test(value);
+ }
+});
\ No newline at end of file
diff --git a/app/assets/javascripts/jquery-validation/test/events.html b/app/assets/javascripts/jquery-validation/test/events.html
new file mode 100644
index 0000000..a651519
--- /dev/null
+++ b/app/assets/javascripts/jquery-validation/test/events.html
@@ -0,0 +1,71 @@
+
+
+
+
+Test for jQuery validate() plugin
+
+
+
+
+
+
+
+
+
+
+
+
+
+Remove focus handler
+
+
+
\ No newline at end of file
diff --git a/app/assets/javascripts/jquery-validation/test/firebug/errorIcon.png b/app/assets/javascripts/jquery-validation/test/firebug/errorIcon.png
new file mode 100644
index 0000000..2d75261
Binary files /dev/null and b/app/assets/javascripts/jquery-validation/test/firebug/errorIcon.png differ
diff --git a/app/assets/javascripts/jquery-validation/test/firebug/firebug.css b/app/assets/javascripts/jquery-validation/test/firebug/firebug.css
new file mode 100644
index 0000000..1f041c4
--- /dev/null
+++ b/app/assets/javascripts/jquery-validation/test/firebug/firebug.css
@@ -0,0 +1,209 @@
+
+html, body {
+ margin: 0;
+ background: #FFFFFF;
+ font-family: Lucida Grande, Tahoma, sans-serif;
+ font-size: 11px;
+ overflow: hidden;
+}
+
+a {
+ text-decoration: none;
+}
+
+a:hover {
+ text-decoration: underline;
+}
+
+.toolbar {
+ height: 14px;
+ border-top: 1px solid ThreeDHighlight;
+ border-bottom: 1px solid ThreeDShadow;
+ padding: 2px 6px;
+ background: ThreeDFace;
+}
+
+.toolbarRight {
+ position: absolute;
+ top: 4px;
+ right: 6px;
+}
+
+#log {
+ overflow: auto;
+ position: absolute;
+ left: 0;
+ width: 100%;
+}
+
+#commandLine {
+ position: absolute;
+ bottom: 0;
+ left: 0;
+ width: 100%;
+ height: 18px;
+ border: none;
+ border-top: 1px solid ThreeDShadow;
+}
+
+/************************************************************************************************/
+
+.logRow {
+ position: relative;
+ border-bottom: 1px solid #D7D7D7;
+ padding: 2px 4px 1px 6px;
+ background-color: #FFFFFF;
+}
+
+.logRow-command {
+ font-family: Monaco, monospace;
+ color: blue;
+}
+
+.objectBox-null {
+ padding: 0 2px;
+ border: 1px solid #666666;
+ background-color: #888888;
+ color: #FFFFFF;
+}
+
+.objectBox-string {
+ font-family: Monaco, monospace;
+ color: red;
+ white-space: pre;
+}
+
+.objectBox-number {
+ color: #000088;
+}
+
+.objectBox-function {
+ font-family: Monaco, monospace;
+ color: DarkGreen;
+}
+
+.objectBox-object {
+ color: DarkGreen;
+ font-weight: bold;
+}
+
+/************************************************************************************************/
+
+.logRow-info,
+.logRow-error,
+.logRow-warning {
+ background: #FFFFFF no-repeat 2px 2px;
+ padding-left: 20px;
+ padding-bottom: 3px;
+}
+
+.logRow-info {
+ background-image: url(infoIcon.png);
+}
+
+.logRow-warning {
+ background-color: cyan;
+ background-image: url(warningIcon.png);
+}
+
+.logRow-error {
+ background-color: LightYellow;
+ background-image: url(errorIcon.png);
+}
+
+.errorMessage {
+ vertical-align: top;
+ color: #FF0000;
+}
+
+.objectBox-sourceLink {
+ position: absolute;
+ right: 4px;
+ top: 2px;
+ padding-left: 8px;
+ font-family: Lucida Grande, sans-serif;
+ font-weight: bold;
+ color: #0000FF;
+}
+
+/************************************************************************************************/
+
+.logRow-group {
+ background: #EEEEEE;
+ border-bottom: none;
+}
+
+.logGroup {
+ background: #EEEEEE;
+}
+
+.logGroupBox {
+ margin-left: 24px;
+ border-top: 1px solid #D7D7D7;
+ border-left: 1px solid #D7D7D7;
+}
+
+/************************************************************************************************/
+
+.selectorTag,
+.selectorId,
+.selectorClass {
+ font-family: Monaco, monospace;
+ font-weight: normal;
+}
+
+.selectorTag {
+ color: #0000FF;
+}
+
+.selectorId {
+ color: DarkBlue;
+}
+
+.selectorClass {
+ color: red;
+}
+
+/************************************************************************************************/
+
+.objectBox-element {
+ font-family: Monaco, monospace;
+ color: #000088;
+}
+
+.nodeChildren {
+ margin-left: 16px;
+}
+
+.nodeTag {
+ color: blue;
+}
+
+.nodeValue {
+ color: #FF0000;
+ font-weight: normal;
+}
+
+.nodeText,
+.nodeComment {
+ margin: 0 2px;
+ vertical-align: top;
+}
+
+.nodeText {
+ color: #333333;
+}
+
+.nodeComment {
+ color: DarkGreen;
+}
+
+/************************************************************************************************/
+
+.propertyNameCell {
+ vertical-align: top;
+}
+
+.propertyName {
+ font-weight: bold;
+}
diff --git a/app/assets/javascripts/jquery-validation/test/firebug/firebug.html b/app/assets/javascripts/jquery-validation/test/firebug/firebug.html
new file mode 100644
index 0000000..861e639
--- /dev/null
+++ b/app/assets/javascripts/jquery-validation/test/firebug/firebug.html
@@ -0,0 +1,23 @@
+
+
+
+
+
+ Firebug
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/assets/javascripts/jquery-validation/test/firebug/firebug.js b/app/assets/javascripts/jquery-validation/test/firebug/firebug.js
new file mode 100644
index 0000000..eb853b8
--- /dev/null
+++ b/app/assets/javascripts/jquery-validation/test/firebug/firebug.js
@@ -0,0 +1,672 @@
+
+if (!("console" in window) || !("firebug" in console)) {
+(function()
+{
+ window.console =
+ {
+ log: function()
+ {
+ logFormatted(arguments, "");
+ },
+
+ debug: function()
+ {
+ logFormatted(arguments, "debug");
+ },
+
+ info: function()
+ {
+ logFormatted(arguments, "info");
+ },
+
+ warn: function()
+ {
+ logFormatted(arguments, "warning");
+ },
+
+ error: function()
+ {
+ logFormatted(arguments, "error");
+ },
+
+ assert: function(truth, message)
+ {
+ if (!truth)
+ {
+ var args = [];
+ for (var i = 1; i < arguments.length; ++i)
+ args.push(arguments[i]);
+
+ logFormatted(args.length ? args : ["Assertion Failure"], "error");
+ throw message ? message : "Assertion Failure";
+ }
+ },
+
+ dir: function(object)
+ {
+ var html = [];
+
+ var pairs = [];
+ for (var name in object)
+ {
+ try
+ {
+ pairs.push([name, object[name]]);
+ }
+ catch (exc)
+ {
+ }
+ }
+
+ pairs.sort(function(a, b) { return a[0] < b[0] ? -1 : 1; });
+
+ html.push('');
+ for (var i = 0; i < pairs.length; ++i)
+ {
+ var name = pairs[i][0], value = pairs[i][1];
+
+ html.push('',
+ '',
+ escapeHTML(name), ' ', '');
+ appendObject(value, html);
+ html.push(' ');
+ }
+ html.push('
');
+
+ logRow(html, "dir");
+ },
+
+ dirxml: function(node)
+ {
+ var html = [];
+
+ appendNode(node, html);
+ logRow(html, "dirxml");
+ },
+
+ group: function()
+ {
+ logRow(arguments, "group", pushGroup);
+ },
+
+ groupEnd: function()
+ {
+ logRow(arguments, "", popGroup);
+ },
+
+ time: function(name)
+ {
+ timeMap[name] = (new Date()).getTime();
+ },
+
+ timeEnd: function(name)
+ {
+ if (name in timeMap)
+ {
+ var delta = (new Date()).getTime() - timeMap[name];
+ logFormatted([name+ ":", delta+"ms"]);
+ delete timeMap[name];
+ }
+ },
+
+ count: function()
+ {
+ this.warn(["count() not supported."]);
+ },
+
+ trace: function()
+ {
+ this.warn(["trace() not supported."]);
+ },
+
+ profile: function()
+ {
+ this.warn(["profile() not supported."]);
+ },
+
+ profileEnd: function()
+ {
+ },
+
+ clear: function()
+ {
+ consoleBody.innerHTML = "";
+ },
+
+ open: function()
+ {
+ toggleConsole(true);
+ },
+
+ close: function()
+ {
+ if (frameVisible)
+ toggleConsole();
+ }
+ };
+
+ // ********************************************************************************************
+
+ var consoleFrame = null;
+ var consoleBody = null;
+ var commandLine = null;
+
+ var frameVisible = false;
+ var messageQueue = [];
+ var groupStack = [];
+ var timeMap = {};
+
+ var clPrefix = ">>> ";
+
+ var isFirefox = navigator.userAgent.indexOf("Firefox") != -1;
+ var isIE = navigator.userAgent.indexOf("MSIE") != -1;
+ var isOpera = navigator.userAgent.indexOf("Opera") != -1;
+ var isSafari = navigator.userAgent.indexOf("AppleWebKit") != -1;
+
+ // ********************************************************************************************
+
+ function toggleConsole(forceOpen)
+ {
+ frameVisible = forceOpen || !frameVisible;
+ if (consoleFrame)
+ consoleFrame.style.visibility = frameVisible ? "visible" : "hidden";
+ else
+ waitForBody();
+ }
+
+ function focusCommandLine()
+ {
+ toggleConsole(true);
+ if (commandLine)
+ commandLine.focus();
+ }
+
+ function waitForBody()
+ {
+ if (document.body)
+ createFrame();
+ else
+ setTimeout(waitForBody, 200);
+ }
+
+ function createFrame()
+ {
+ if (consoleFrame)
+ return;
+
+ window.onFirebugReady = function(doc)
+ {
+ window.onFirebugReady = null;
+
+ var toolbar = doc.getElementById("toolbar");
+ toolbar.onmousedown = onSplitterMouseDown;
+
+ commandLine = doc.getElementById("commandLine");
+ addEvent(commandLine, "keydown", onCommandLineKeyDown);
+
+ addEvent(doc, isIE || isSafari ? "keydown" : "keypress", onKeyDown);
+
+ consoleBody = doc.getElementById("log");
+ layout();
+ flush();
+ }
+
+ var baseURL = getFirebugURL();
+
+ consoleFrame = document.createElement("iframe");
+ consoleFrame.setAttribute("src", baseURL+"/firebug.html");
+ consoleFrame.setAttribute("frameBorder", "0");
+ consoleFrame.style.visibility = (frameVisible ? "visible" : "hidden");
+ consoleFrame.style.zIndex = "2147483647";
+ consoleFrame.style.position = "fixed";
+ consoleFrame.style.width = "100%";
+ consoleFrame.style.left = "0";
+ consoleFrame.style.bottom = "0";
+ consoleFrame.style.height = "200px";
+ document.body.appendChild(consoleFrame);
+ }
+
+ function getFirebugURL()
+ {
+ var scripts = document.getElementsByTagName("script");
+ for (var i = 0; i < scripts.length; ++i)
+ {
+ if (scripts[i].src.indexOf("firebug.js") != -1)
+ {
+ var lastSlash = scripts[i].src.lastIndexOf("/");
+ return scripts[i].src.substr(0, lastSlash);
+ }
+ }
+ }
+
+ function evalCommandLine()
+ {
+ var text = commandLine.value;
+ commandLine.value = "";
+
+ logRow([clPrefix, text], "command");
+
+ var value;
+ try
+ {
+ value = eval(text);
+ }
+ catch (exc)
+ {
+ }
+
+ console.log(value);
+ }
+
+ function layout()
+ {
+ var toolbar = consoleBody.ownerDocument.getElementById("toolbar");
+ var height = consoleFrame.offsetHeight - (toolbar.offsetHeight + commandLine.offsetHeight);
+ consoleBody.style.top = toolbar.offsetHeight + "px";
+ consoleBody.style.height = height + "px";
+
+ commandLine.style.top = (consoleFrame.offsetHeight - commandLine.offsetHeight) + "px";
+ }
+
+ function logRow(message, className, handler)
+ {
+ if (consoleBody)
+ writeMessage(message, className, handler);
+ else
+ {
+ messageQueue.push([message, className, handler]);
+ waitForBody();
+ }
+ }
+
+ function flush()
+ {
+ var queue = messageQueue;
+ messageQueue = [];
+
+ for (var i = 0; i < queue.length; ++i)
+ writeMessage(queue[i][0], queue[i][1], queue[i][2]);
+ }
+
+ function writeMessage(message, className, handler)
+ {
+ var isScrolledToBottom =
+ consoleBody.scrollTop + consoleBody.offsetHeight >= consoleBody.scrollHeight;
+
+ if (!handler)
+ handler = writeRow;
+
+ handler(message, className);
+
+ if (isScrolledToBottom)
+ consoleBody.scrollTop = consoleBody.scrollHeight - consoleBody.offsetHeight;
+ }
+
+ function appendRow(row)
+ {
+ var container = groupStack.length ? groupStack[groupStack.length-1] : consoleBody;
+ container.appendChild(row);
+ }
+
+ function writeRow(message, className)
+ {
+ var row = consoleBody.ownerDocument.createElement("div");
+ row.className = "logRow" + (className ? " logRow-"+className : "");
+ row.innerHTML = message.join("");
+ appendRow(row);
+ }
+
+ function pushGroup(message, className)
+ {
+ logFormatted(message, className);
+
+ var groupRow = consoleBody.ownerDocument.createElement("div");
+ groupRow.className = "logGroup";
+ var groupRowBox = consoleBody.ownerDocument.createElement("div");
+ groupRowBox.className = "logGroupBox";
+ groupRow.appendChild(groupRowBox);
+ appendRow(groupRowBox);
+ groupStack.push(groupRowBox);
+ }
+
+ function popGroup()
+ {
+ groupStack.pop();
+ }
+
+ // ********************************************************************************************
+
+ function logFormatted(objects, className)
+ {
+ var html = [];
+
+ var format = objects[0];
+ var objIndex = 0;
+
+ if (typeof(format) != "string")
+ {
+ format = "";
+ objIndex = -1;
+ }
+
+ var parts = parseFormat(format);
+ for (var i = 0; i < parts.length; ++i)
+ {
+ var part = parts[i];
+ if (part && typeof(part) == "object")
+ {
+ var object = objects[++objIndex];
+ part.appender(object, html);
+ }
+ else
+ appendText(part, html);
+ }
+
+ for (var i = objIndex+1; i < objects.length; ++i)
+ {
+ appendText(" ", html);
+
+ var object = objects[i];
+ if (typeof(object) == "string")
+ appendText(object, html);
+ else
+ appendObject(object, html);
+ }
+
+ logRow(html, className);
+ }
+
+ function parseFormat(format)
+ {
+ var parts = [];
+
+ var reg = /((^%|[^\\]%)(\d+)?(\.)([a-zA-Z]))|((^%|[^\\]%)([a-zA-Z]))/;
+ var appenderMap = {s: appendText, d: appendInteger, i: appendInteger, f: appendFloat};
+
+ for (var m = reg.exec(format); m; m = reg.exec(format))
+ {
+ var type = m[8] ? m[8] : m[5];
+ var appender = type in appenderMap ? appenderMap[type] : appendObject;
+ var precision = m[3] ? parseInt(m[3]) : (m[4] == "." ? -1 : 0);
+
+ parts.push(format.substr(0, m[0][0] == "%" ? m.index : m.index+1));
+ parts.push({appender: appender, precision: precision});
+
+ format = format.substr(m.index+m[0].length);
+ }
+
+ parts.push(format);
+
+ return parts;
+ }
+
+ function escapeHTML(value)
+ {
+ function replaceChars(ch)
+ {
+ switch (ch)
+ {
+ case "<":
+ return "<";
+ case ">":
+ return ">";
+ case "&":
+ return "&";
+ case "'":
+ return "'";
+ case '"':
+ return """;
+ }
+ return "?";
+ };
+ return String(value).replace(/[<>&"']/g, replaceChars);
+ }
+
+ function objectToString(object)
+ {
+ try
+ {
+ return object+"";
+ }
+ catch (exc)
+ {
+ return null;
+ }
+ }
+
+ // ********************************************************************************************
+
+ function appendText(object, html)
+ {
+ html.push(escapeHTML(objectToString(object)));
+ }
+
+ function appendNull(object, html)
+ {
+ html.push('', escapeHTML(objectToString(object)), ' ');
+ }
+
+ function appendString(object, html)
+ {
+ html.push('"', escapeHTML(objectToString(object)),
+ '" ');
+ }
+
+ function appendInteger(object, html)
+ {
+ html.push('', escapeHTML(objectToString(object)), ' ');
+ }
+
+ function appendFloat(object, html)
+ {
+ html.push('', escapeHTML(objectToString(object)), ' ');
+ }
+
+ function appendFunction(object, html)
+ {
+ var reName = /function ?(.*?)\(/;
+ var m = reName.exec(objectToString(object));
+ var name = m ? m[1] : "function";
+ html.push('', escapeHTML(name), '() ');
+ }
+
+ function appendObject(object, html)
+ {
+ try
+ {
+ if (object == undefined)
+ appendNull("undefined", html);
+ else if (object == null)
+ appendNull("null", html);
+ else if (typeof object == "string")
+ appendString(object, html);
+ else if (typeof object == "number")
+ appendInteger(object, html);
+ else if (typeof object == "function")
+ appendFunction(object, html);
+ else if (object.nodeType == 1)
+ appendSelector(object, html);
+ else if (typeof object == "object")
+ appendObjectFormatted(object, html);
+ else
+ appendText(object, html);
+ }
+ catch (exc)
+ {
+ }
+ }
+
+ function appendObjectFormatted(object, html)
+ {
+ var text = objectToString(object);
+ var reObject = /\[object (.*?)\]/;
+
+ var m = reObject.exec(text);
+ html.push('', m ? m[1] : text, ' ')
+ }
+
+ function appendSelector(object, html)
+ {
+ html.push('');
+
+ html.push('', escapeHTML(object.nodeName.toLowerCase()), ' ');
+ if (object.id)
+ html.push('#', escapeHTML(object.id), ' ');
+ if (object.className)
+ html.push('.', escapeHTML(object.className), ' ');
+
+ html.push(' ');
+ }
+
+ function appendNode(node, html)
+ {
+ if (node.nodeType == 1)
+ {
+ html.push(
+ '',
+ '<', node.nodeName.toLowerCase(), ' ');
+
+ for (var i = 0; i < node.attributes.length; ++i)
+ {
+ var attr = node.attributes[i];
+ if (!attr.specified)
+ continue;
+
+ html.push(' ', attr.nodeName.toLowerCase(),
+ ' ="', escapeHTML(attr.nodeValue),
+ ' "')
+ }
+
+ if (node.firstChild)
+ {
+ html.push('>
');
+
+ for (var child = node.firstChild; child; child = child.nextSibling)
+ appendNode(child, html);
+
+ html.push('
</',
+ node.nodeName.toLowerCase(), '>
');
+ }
+ else
+ html.push('/>');
+ }
+ else if (node.nodeType == 3)
+ {
+ html.push('', escapeHTML(node.nodeValue),
+ '
');
+ }
+ }
+
+ // ********************************************************************************************
+
+ function addEvent(object, name, handler)
+ {
+ if (document.all)
+ object.attachEvent("on"+name, handler);
+ else
+ object.addEventListener(name, handler, false);
+ }
+
+ function removeEvent(object, name, handler)
+ {
+ if (document.all)
+ object.detachEvent("on"+name, handler);
+ else
+ object.removeEventListener(name, handler, false);
+ }
+
+ function cancelEvent(event)
+ {
+ if (document.all)
+ event.cancelBubble = true;
+ else
+ event.stopPropagation();
+ }
+
+ function onError(msg, href, lineNo)
+ {
+ var html = [];
+
+ var lastSlash = href.lastIndexOf("/");
+ var fileName = lastSlash == -1 ? href : href.substr(lastSlash+1);
+
+ html.push(
+ '', msg, ' ',
+ '', fileName, ' (line ', lineNo, ')
'
+ );
+
+ logRow(html, "error");
+ };
+
+ function onKeyDown(event)
+ {
+ if (event.keyCode == 123)
+ toggleConsole();
+ else if ((event.keyCode == 108 || event.keyCode == 76) && event.shiftKey
+ && (event.metaKey || event.ctrlKey))
+ focusCommandLine();
+ else
+ return;
+
+ cancelEvent(event);
+ }
+
+ function onSplitterMouseDown(event)
+ {
+ if (isSafari || isOpera)
+ return;
+
+ addEvent(document, "mousemove", onSplitterMouseMove);
+ addEvent(document, "mouseup", onSplitterMouseUp);
+
+ for (var i = 0; i < frames.length; ++i)
+ {
+ addEvent(frames[i].document, "mousemove", onSplitterMouseMove);
+ addEvent(frames[i].document, "mouseup", onSplitterMouseUp);
+ }
+ }
+
+ function onSplitterMouseMove(event)
+ {
+ var win = document.all
+ ? event.srcElement.ownerDocument.parentWindow
+ : event.target.ownerDocument.defaultView;
+
+ var clientY = event.clientY;
+ if (win != win.parent)
+ clientY += win.frameElement ? win.frameElement.offsetTop : 0;
+
+ var height = consoleFrame.offsetTop + consoleFrame.clientHeight;
+ var y = height - clientY;
+
+ consoleFrame.style.height = y + "px";
+ layout();
+ }
+
+ function onSplitterMouseUp(event)
+ {
+ removeEvent(document, "mousemove", onSplitterMouseMove);
+ removeEvent(document, "mouseup", onSplitterMouseUp);
+
+ for (var i = 0; i < frames.length; ++i)
+ {
+ removeEvent(frames[i].document, "mousemove", onSplitterMouseMove);
+ removeEvent(frames[i].document, "mouseup", onSplitterMouseUp);
+ }
+ }
+
+ function onCommandLineKeyDown(event)
+ {
+ if (event.keyCode == 13)
+ evalCommandLine();
+ else if (event.keyCode == 27)
+ commandLine.value = "";
+ }
+
+ window.onerror = onError;
+ addEvent(document, isIE || isSafari ? "keydown" : "keypress", onKeyDown);
+
+ if (document.documentElement.getAttribute("debug") == "true")
+ toggleConsole(true);
+})();
+}
diff --git a/app/assets/javascripts/jquery-validation/test/firebug/firebugx.js b/app/assets/javascripts/jquery-validation/test/firebug/firebugx.js
new file mode 100644
index 0000000..5a467fc
--- /dev/null
+++ b/app/assets/javascripts/jquery-validation/test/firebug/firebugx.js
@@ -0,0 +1,10 @@
+
+if (!("console" in window) || !("firebug" in console))
+{
+ var names = ["log", "debug", "info", "warn", "error", "assert", "dir", "dirxml",
+ "group", "groupEnd", "time", "timeEnd", "count", "trace", "profile", "profileEnd"];
+
+ window.console = {};
+ for (var i = 0; i < names.length; ++i)
+ window.console[names[i]] = function() {}
+}
\ No newline at end of file
diff --git a/app/assets/javascripts/jquery-validation/test/firebug/infoIcon.png b/app/assets/javascripts/jquery-validation/test/firebug/infoIcon.png
new file mode 100644
index 0000000..da1e533
Binary files /dev/null and b/app/assets/javascripts/jquery-validation/test/firebug/infoIcon.png differ
diff --git a/app/assets/javascripts/jquery-validation/test/firebug/warningIcon.png b/app/assets/javascripts/jquery-validation/test/firebug/warningIcon.png
new file mode 100644
index 0000000..de51084
Binary files /dev/null and b/app/assets/javascripts/jquery-validation/test/firebug/warningIcon.png differ
diff --git a/app/assets/javascripts/jquery-validation/test/index.html b/app/assets/javascripts/jquery-validation/test/index.html
new file mode 100644
index 0000000..768e0cd
--- /dev/null
+++ b/app/assets/javascripts/jquery-validation/test/index.html
@@ -0,0 +1,270 @@
+
+
+
+ jQuery - Validation Test Suite
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/assets/javascripts/jquery-validation/test/jquery.js b/app/assets/javascripts/jquery-validation/test/jquery.js
new file mode 100644
index 0000000..2f417e4
--- /dev/null
+++ b/app/assets/javascripts/jquery-validation/test/jquery.js
@@ -0,0 +1,23 @@
+(function() {
+
+var parts = document.location.search.slice( 1 ).split( "&" ),
+ length = parts.length,
+ i = 0,
+ current,
+ version = "";
+
+for ( ; i < length; i++ ) {
+ current = parts[ i ].split( "=" );
+ if ( current[ 0 ] === "jquery" ) {
+ version = current[ 1 ];
+ break;
+ }
+}
+
+if (version) {
+ version = "-" + version;
+}
+
+document.write( "" );
+
+}() );
diff --git a/app/assets/javascripts/jquery-validation/test/large.html b/app/assets/javascripts/jquery-validation/test/large.html
new file mode 100644
index 0000000..82c47f1
--- /dev/null
+++ b/app/assets/javascripts/jquery-validation/test/large.html
@@ -0,0 +1,188 @@
+
+
+
+
+Test for jQuery validate() plugin
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/assets/javascripts/jquery-validation/test/messages.js b/app/assets/javascripts/jquery-validation/test/messages.js
new file mode 100644
index 0000000..0faf984
--- /dev/null
+++ b/app/assets/javascripts/jquery-validation/test/messages.js
@@ -0,0 +1,62 @@
+module("messages");
+
+test("predefined message not overwritten by addMethod(a, b, undefined)", function() {
+ var message = "my custom message";
+ $.validator.messages.custom = message;
+ $.validator.addMethod("custom", function() {});
+ same(message, $.validator.messages.custom);
+ delete $.validator.messages.custom;
+ delete $.validator.methods.custom;
+});
+
+test("group error messages", function() {
+ $.validator.addClassRules({
+ requiredDateRange: {required:true, date:true, dateRange:true}
+ });
+ $.validator.addMethod("dateRange", function() {
+ return new Date($("#fromDate").val()) < new Date($("#toDate").val());
+ }, "Please specify a correct date range.");
+ var form = $("#dateRangeForm");
+ form.validate({
+ groups: {
+ dateRange: "fromDate toDate"
+ },
+ errorPlacement: function(error) {
+ form.find(".errorContainer").append(error);
+ }
+ });
+ ok( !form.valid() );
+ equals( 1, form.find(".errorContainer *").length );
+ equals( "Please enter a valid date.", form.find(".errorContainer label.error").text() );
+
+ $("#fromDate").val("12/03/2006");
+ $("#toDate").val("12/01/2006");
+ ok( !form.valid() );
+ equals( "Please specify a correct date range.", form.find(".errorContainer label.error").text() );
+
+ $("#toDate").val("12/04/2006");
+ ok( form.valid() );
+ ok( form.find(".errorContainer label.error").is(":hidden") );
+});
+
+test("read messages from metadata", function() {
+ var form = $("#testForm9")
+ form.validate();
+ var e = $("#testEmail9")
+ e.valid();
+ equals( form.find("label").text(), "required" );
+ e.val("bla").valid();
+ equals( form.find("label").text(), "email" );
+});
+
+
+test("read messages from metadata, with meta option specified, but no metadata in there", function() {
+ var form = $("#testForm1clean")
+ form.validate({
+ meta: "validate",
+ rules: {
+ firstname: "required"
+ }
+ });
+ ok(!form.valid(), "not valid");
+});
\ No newline at end of file
diff --git a/app/assets/javascripts/jquery-validation/test/methods.js b/app/assets/javascripts/jquery-validation/test/methods.js
new file mode 100644
index 0000000..0543b64
--- /dev/null
+++ b/app/assets/javascripts/jquery-validation/test/methods.js
@@ -0,0 +1,584 @@
+(function($) {
+
+function methodTest( methodName ) {
+ var v = jQuery("#form").validate();
+ var method = $.validator.methods[methodName];
+ var element = $("#firstname")[0];
+ return function(value, param) {
+ element.value = value;
+ return method.call( v, value, element, param );
+ };
+}
+
+module("methods");
+
+test("default messages", function() {
+ var m = $.validator.methods;
+ $.each(m, function(key) {
+ ok( jQuery.validator.messages[key], key + " has a default message." );
+ });
+});
+
+test("digit", function() {
+ var method = methodTest("digits");
+ ok( method( "123" ), "Valid digits" );
+ ok(!method( "123.000" ), "Invalid digits" );
+ ok(!method( "123.000,00" ), "Invalid digits" );
+ ok(!method( "123.0.0,0" ), "Invalid digits" );
+ ok(!method( "x123" ), "Invalid digits" );
+ ok(!method( "100.100,0,0" ), "Invalid digits" );
+});
+
+test("url", function() {
+ var method = methodTest("url");
+ ok( method( "http://bassistance.de/jquery/plugin.php?bla=blu" ), "Valid url" );
+ ok( method( "https://bassistance.de/jquery/plugin.php?bla=blu" ), "Valid url" );
+ ok( method( "ftp://bassistance.de/jquery/plugin.php?bla=blu" ), "Valid url" );
+ ok( method( "http://www.føtex.dk/" ), "Valid url, danish unicode characters" );
+ ok( method( "http://bösendorfer.de/" ), "Valid url, german unicode characters" );
+ ok( method( "http://192.168.8.5" ), "Valid IP Address" )
+ ok(!method( "http://192.168.8." ), "Invalid IP Address" )
+ ok(!method( "http://bassistance" ), "Invalid url" ); // valid
+ ok(!method( "http://bassistance." ), "Invalid url" ); // valid
+ ok(!method( "http://bassistance,de" ), "Invalid url" );
+ ok(!method( "http://bassistance;de" ), "Invalid url" );
+ ok(!method( "http://.bassistancede" ), "Invalid url" );
+ ok(!method( "bassistance.de" ), "Invalid url" );
+});
+
+test("url2 (tld optional)", function() {
+ var method = methodTest("url2");
+ ok( method( "http://bassistance.de/jquery/plugin.php?bla=blu" ), "Valid url" );
+ ok( method( "https://bassistance.de/jquery/plugin.php?bla=blu" ), "Valid url" );
+ ok( method( "ftp://bassistance.de/jquery/plugin.php?bla=blu" ), "Valid url" );
+ ok( method( "http://www.føtex.dk/" ), "Valid url, danish unicode characters" );
+ ok( method( "http://bösendorfer.de/" ), "Valid url, german unicode characters" );
+ ok( method( "http://192.168.8.5" ), "Valid IP Address" )
+ ok(!method( "http://192.168.8." ), "Invalid IP Address" )
+ ok( method( "http://bassistance" ), "Invalid url" );
+ ok( method( "http://bassistance." ), "Invalid url" );
+ ok(!method( "http://bassistance,de" ), "Invalid url" );
+ ok(!method( "http://bassistance;de" ), "Invalid url" );
+ ok(!method( "http://.bassistancede" ), "Invalid url" );
+ ok(!method( "bassistance.de" ), "Invalid url" );
+});
+
+test("email", function() {
+ var method = methodTest("email");
+ ok( method( "name@domain.tld" ), "Valid email" );
+ ok( method( "name@domain.tl" ), "Valid email" );
+ ok( method( "bart+bart@tokbox.com" ), "Valid email" );
+ ok( method( "bart+bart@tokbox.travel" ), "Valid email" );
+ ok( method( "n@d.tld" ), "Valid email" );
+ ok( method( "ole@føtex.dk"), "Valid email" );
+ ok( method( "jörn@bassistance.de"), "Valid email" );
+ ok( method( "bla.blu@g.mail.com"), "Valid email" );
+ ok( method( "\"Scott Gonzalez\"@example.com" ), "Valid email" );
+ ok( method( "\"Scott González\"@example.com" ), "Valid email" );
+ ok( method( "\"name.\"@domain.tld" ), "Valid email" ); // valid without top label
+ ok( method( "\"name,\"@domain.tld" ), "Valid email" ); // valid without top label
+ ok( method( "\"name;\"@domain.tld" ), "Valid email" ); // valid without top label
+ ok(!method( "name" ), "Invalid email" );
+ ok(!method( "name@" ), "Invalid email" );
+ ok(!method( "name@domain" ), "Invalid email" );
+ ok(!method( "name.@domain.tld" ), "Invalid email" );
+ ok(!method( "name,@domain.tld" ), "Invalid email" );
+ ok(!method( "name;@domain.tld" ), "Invalid email" );
+});
+
+test("email2 (tld optional)", function() {
+ var method = methodTest("email2");
+ ok( method( "name@domain.tld" ), "Valid email" );
+ ok( method( "name@domain.tl" ), "Valid email" );
+ ok( method( "bart+bart@tokbox.com" ), "Valid email" );
+ ok( method( "bart+bart@tokbox.travel" ), "Valid email" );
+ ok( method( "n@d.tld" ), "Valid email" );
+ ok( method( "ole@føtex.dk"), "Valid email" );
+ ok( method( "jörn@bassistance.de"), "Valid email" );
+ ok( method( "bla.blu@g.mail.com"), "Valid email" );
+ ok( method( "\"Scott Gonzalez\"@example.com" ), "Valid email" );
+ ok( method( "\"Scott González\"@example.com" ), "Valid email" );
+ ok( method( "\"name.\"@domain.tld" ), "Valid email" ); // valid without top label
+ ok( method( "\"name,\"@domain.tld" ), "Valid email" ); // valid without top label
+ ok( method( "\"name;\"@domain.tld" ), "Valid email" ); // valid without top label
+ ok(!method( "name" ), "Invalid email" );
+ ok(!method( "name@" ), "Invalid email" );
+ ok( method( "name@domain" ), "Invalid email" );
+ ok(!method( "name.@domain.tld" ), "Invalid email" );
+ ok(!method( "name,@domain.tld" ), "Invalid email" );
+ ok(!method( "name;@domain.tld" ), "Invalid email" );
+});
+
+test("number", function() {
+ var method = methodTest("number");
+ ok( method( "123" ), "Valid number" );
+ ok( method( "-123" ), "Valid number" );
+ ok( method( "123,000" ), "Valid number" );
+ ok( method( "-123,000" ), "Valid number" );
+ ok( method( "123,000.00" ), "Valid number" );
+ ok( method( "-123,000.00" ), "Valid number" );
+ ok(!method( "123.000,00" ), "Invalid number" );
+ ok(!method( "123.0.0,0" ), "Invalid number" );
+ ok(!method( "x123" ), "Invalid number" );
+ ok(!method( "100.100,0,0" ), "Invalid number" );
+
+ ok( method( "" ), "Blank is valid" );
+ ok( method( "123" ), "Valid decimal" );
+ ok( method( "123000" ), "Valid decimal" );
+ ok( method( "123000.12" ), "Valid decimal" );
+ ok( method( "-123000.12" ), "Valid decimal" );
+ ok( method( "123.000" ), "Valid decimal" );
+ ok( method( "123,000.00" ), "Valid decimal" );
+ ok( method( "-123,000.00" ), "Valid decimal" );
+ ok(!method( "1230,000.00" ), "Invalid decimal" );
+ ok(!method( "123.0.0,0" ), "Invalid decimal" );
+ ok(!method( "x123" ), "Invalid decimal" );
+ ok(!method( "100.100,0,0" ), "Invalid decimal" );
+});
+
+/* disabled for now, need to figure out how to test localized methods
+test("numberDE", function() {
+ var method = methodTest("numberDE");
+ ok( method( "123" ), "Valid numberDE" );
+ ok( method( "-123" ), "Valid numberDE" );
+ ok( method( "123.000" ), "Valid numberDE" );
+ ok( method( "-123.000" ), "Valid numberDE" );
+ ok( method( "123.000,00" ), "Valid numberDE" );
+ ok( method( "-123.000,00" ), "Valid numberDE" );
+ ok(!method( "123,000.00" ), "Invalid numberDE" );
+ ok(!method( "123,0,0.0" ), "Invalid numberDE" );
+ ok(!method( "x123" ), "Invalid numberDE" );
+ ok(!method( "100,100.0.0" ), "Invalid numberDE" );
+
+ ok( method( "" ), "Blank is valid" );
+ ok( method( "123" ), "Valid decimalDE" );
+ ok( method( "123000" ), "Valid decimalDE" );
+ ok( method( "123000,12" ), "Valid decimalDE" );
+ ok( method( "-123000,12" ), "Valid decimalDE" );
+ ok( method( "123.000" ), "Valid decimalDE" );
+ ok( method( "123.000,00" ), "Valid decimalDE" );
+ ok( method( "-123.000,00" ), "Valid decimalDE" )
+ ok(!method( "123.0.0,0" ), "Invalid decimalDE" );
+ ok(!method( "x123" ), "Invalid decimalDE" );
+ ok(!method( "100,100.0.0" ), "Invalid decimalDE" );
+});
+*/
+
+test("date", function() {
+ var method = methodTest("date");
+ ok( method( "06/06/1990" ), "Valid date" );
+ ok( method( "6/6/06" ), "Valid date" );
+ ok(!method( "1990x-06-06" ), "Invalid date" );
+});
+
+test("dateISO", function() {
+ var method = methodTest("dateISO");
+ ok( method( "1990-06-06" ), "Valid date" );
+ ok( method( "1990/06/06" ), "Valid date" );
+ ok( method( "1990-6-6" ), "Valid date" );
+ ok( method( "1990/6/6" ), "Valid date" );
+ ok(!method( "1990-106-06" ), "Invalid date" );
+ ok(!method( "190-06-06" ), "Invalid date" );
+});
+
+/* disabled for now, need to figure out how to test localized methods
+test("dateDE", function() {
+ var method = methodTest("dateDE");
+ ok( method( "03.06.1984" ), "Valid dateDE" );
+ ok( method( "3.6.84" ), "Valid dateDE" );
+ ok(!method( "6-6-06" ), "Invalid dateDE" );
+ ok(!method( "1990-06-06" ), "Invalid dateDE" );
+ ok(!method( "06/06/1990" ), "Invalid dateDE" );
+ ok(!method( "6/6/06" ), "Invalid dateDE" );
+});
+*/
+
+test("required", function() {
+ var v = jQuery("#form").validate(),
+ method = $.validator.methods.required,
+ e = $('#text1, #text1b, #hidden2, #select1, #select2');
+ ok( method.call( v, e[0].value, e[0]), "Valid text input" );
+ ok(!method.call( v, e[1].value, e[1]), "Invalid text input" );
+ ok(!method.call( v, e[1].value, e[2]), "Invalid text input" );
+
+ ok(!method.call( v, e[2].value, e[3]), "Invalid select" );
+ ok( method.call( v, e[3].value, e[4]), "Valid select" );
+
+ e = $('#area1, #area2, #pw1, #pw2');
+ ok( method.call( v, e[0].value, e[0]), "Valid textarea" );
+ ok(!method.call( v, e[1].value, e[1]), "Invalid textarea" );
+ ok( method.call( v, e[2].value, e[2]), "Valid password input" );
+ ok(!method.call( v, e[3].value, e[3]), "Invalid password input" );
+
+ e = $('#radio1, #radio2, #radio3');
+ ok(!method.call( v, e[0].value, e[0]), "Invalid radio" );
+ ok( method.call( v, e[1].value, e[1]), "Valid radio" );
+ ok( method.call( v, e[2].value, e[2]), "Valid radio" );
+
+ e = $('#check1, #check2');
+ ok( method.call( v, e[0].value, e[0]), "Valid checkbox" );
+ ok(!method.call( v, e[1].value, e[1]), "Invalid checkbox" );
+
+ e = $('#select1, #select2, #select3, #select4');
+ ok(!method.call( v, e[0].value, e[0]), "Invalid select" );
+ ok( method.call( v, e[1].value, e[1]), "Valid select" );
+ ok( method.call( v, e[2].value, e[2]), "Valid select" );
+ ok( method.call( v, e[3].value, e[3]), "Valid select" );
+});
+
+test("required with dependencies", function() {
+ var v = jQuery("#form").validate(),
+ method = $.validator.methods.required,
+ e = $('#hidden2, #select1, #area2, #radio1, #check2');
+ ok( method.call( v, e[0].value, e[0], "asffsaa"), "Valid text input due to depencie not met" );
+ ok(!method.call( v, e[0].value, e[0], "input"), "Invalid text input" );
+ ok( method.call( v, e[0].value, e[0], function() { return false; }), "Valid text input due to depencie not met" );
+ ok(!method.call( v, e[0].value, e[0], function() { return true; }), "Invalid text input" );
+ ok( method.call( v, e[1].value, e[1], "asfsfa"), "Valid select due to dependency not met" );
+ ok(!method.call( v, e[1].value, e[1], "input"), "Invalid select" );
+ ok( method.call( v, e[2].value, e[2], "asfsafsfa"), "Valid textarea due to dependency not met" );
+ ok(!method.call( v, e[2].value, e[2], "input"), "Invalid textarea" );
+ ok( method.call( v, e[3].value, e[3], "asfsafsfa"), "Valid radio due to dependency not met" );
+ ok(!method.call( v, e[3].value, e[3], "input"), "Invalid radio" );
+ ok( method.call( v, e[4].value, e[4], "asfsafsfa"), "Valid checkbox due to dependency not met" );
+ ok(!method.call( v, e[4].value, e[4], "input"), "Invalid checkbox" );
+});
+
+test("minlength", function() {
+ var v = jQuery("#form").validate(),
+ method = $.validator.methods.minlength,
+ param = 2,
+ e = $('#text1, #text1c, #text2, #text3');
+ ok( method.call( v, e[0].value, e[0], param), "Valid text input" );
+ ok(!method.call( v, e[1].value, e[1], param), "Invalid text input" );
+ ok(!method.call( v, e[2].value, e[2], param), "Invalid text input" );
+ ok( method.call( v, e[3].value, e[3], param), "Valid text input" );
+
+ e = $('#check1, #check2, #check3');
+ ok(!method.call( v, e[0].value, e[0], param), "Valid checkbox" );
+ ok( method.call( v, e[1].value, e[1], param), "Valid checkbox" );
+ ok( method.call( v, e[2].value, e[2], param), "Invalid checkbox" );
+
+ e = $('#select1, #select2, #select3, #select4, #select5');
+ ok(method.call( v, e[0].value, e[0], param), "Valid select " + e[0].id );
+ ok(!method.call( v, e[1].value, e[1], param), "Invalid select " + e[1].id );
+ ok( method.call( v, e[2].value, e[2], param), "Valid select " + e[2].id );
+ ok( method.call( v, e[3].value, e[3], param), "Valid select " + e[3].id );
+ ok( method.call( v, e[4].value, e[4], param), "Valid select " + e[4].id );
+});
+
+test("maxlength", function() {
+ var v = jQuery("#form").validate();
+ var method = $.validator.methods.maxlength,
+ param = 4,
+ e = $('#text1, #text2, #text3');
+ ok( method.call( v, e[0].value, e[0], param), "Valid text input" );
+ ok( method.call( v, e[1].value, e[1], param), "Valid text input" );
+ ok(!method.call( v, e[2].value, e[2], param), "Invalid text input" );
+
+ e = $('#check1, #check2, #check3');
+ ok( method.call( v, e[0].value, e[0], param), "Valid checkbox" );
+ ok( method.call( v, e[1].value, e[1], param), "Invalid checkbox" );
+ ok(!method.call( v, e[2].value, e[2], param), "Invalid checkbox" );
+
+ e = $('#select1, #select2, #select3, #select4');
+ ok( method.call( v, e[0].value, e[0], param), "Valid select" );
+ ok( method.call( v, e[1].value, e[1], param), "Valid select" );
+ ok( method.call( v, e[2].value, e[2], param), "Valid select" );
+ ok(!method.call( v, e[3].value, e[3], param), "Invalid select" );
+});
+
+test("rangelength", function() {
+ var v = jQuery("#form").validate();
+ var method = $.validator.methods.rangelength,
+ param = [2, 4],
+ e = $('#text1, #text2, #text3');
+ ok( method.call( v, e[0].value, e[0], param), "Valid text input" );
+ ok(!method.call( v, e[1].value, e[1], param), "Invalid text input" );
+ ok(!method.call( v, e[2].value, e[2], param), "Invalid text input" );
+});
+
+test("min", function() {
+ var v = jQuery("#form").validate();
+ var method = $.validator.methods.min,
+ param = 8,
+ e = $('#value1, #value2, #value3');
+ ok(!method.call( v, e[0].value, e[0], param), "Invalid text input" );
+ ok( method.call( v, e[1].value, e[1], param), "Valid text input" );
+ ok( method.call( v, e[2].value, e[2], param), "Valid text input" );
+});
+
+test("max", function() {
+ var v = jQuery("#form").validate();
+ var method = $.validator.methods.max,
+ param = 12,
+ e = $('#value1, #value2, #value3');
+ ok( method.call( v, e[0].value, e[0], param), "Valid text input" );
+ ok( method.call( v, e[1].value, e[1], param), "Valid text input" );
+ ok(!method.call( v, e[2].value, e[2], param), "Invalid text input" );
+});
+
+test("range", function() {
+ var v = jQuery("#form").validate();
+ var method = $.validator.methods.range,
+ param = [4,12],
+ e = $('#value1, #value2, #value3');
+ ok(!method.call( v, e[0].value, e[0], param), "Invalid text input" );
+ ok( method.call( v, e[1].value, e[1], param), "Valid text input" );
+ ok(!method.call( v, e[2].value, e[2], param), "Invalid text input" );
+});
+
+test("equalTo", function() {
+ var v = jQuery("#form").validate();
+ var method = $.validator.methods.equalTo,
+ e = $('#text1, #text2');
+ ok( method.call( v, "Test", e[0], "#text1"), "Text input" );
+ ok( method.call( v, "T", e[1], "#text2"), "Another one" );
+});
+
+test("creditcard", function() {
+ var method = methodTest("creditcard");
+ ok( method( "446-667-651" ), "Valid creditcard number" );
+ ok( !method( "asdf" ), "Invalid creditcard number" );
+});
+
+test("accept", function() {
+ var method = methodTest("accept");
+ ok( method( "picture.gif" ), "Valid default accept type" );
+ ok( method( "picture.jpg" ), "Valid default accept type" );
+ ok( method( "picture.jpeg" ), "Valid default accept type" );
+ ok( method( "picture.png" ), "Valid default accept type" );
+ ok( !method( "picture.pgn" ), "Invalid default accept type" );
+
+ var v = jQuery("#form").validate(),
+ method = function(value, param) {
+ return $.validator.methods.accept.call(v, value, $('#text1')[0], param)
+ };
+ ok( method( "picture.doc", "doc"), "Valid custom accept type" );
+ ok( method( "picture.pdf", "doc|pdf"), "Valid custom accept type" );
+ ok( method( "picture.pdf", "pdf|doc"), "Valid custom accept type" );
+ ok( !method( "picture.pdf", "doc"), "Invalid custom accept type" );
+ ok( !method( "picture.doc", "pdf"), "Invalid custom accept type" );
+
+ ok( method( "picture.pdf", "doc,pdf"), "Valid custom accept type, comma seperated" );
+ ok( method( "picture.pdf", "pdf,doc"), "Valid custom accept type, comma seperated" );
+ ok( !method( "picture.pdf", "gop,top"), "Invalid custom accept type, comma seperated" );
+});
+
+test("remote", function() {
+ expect(7);
+ stop();
+ var e = $("#username");
+ var v = $("#userForm").validate({
+ rules: {
+ username: {
+ required: true,
+ remote: "users.php"
+ }
+ },
+ messages: {
+ username: {
+ required: "Please",
+ remote: jQuery.validator.format("{0} in use")
+ }
+ },
+ submitHandler: function() {
+ ok( false, "submitHandler may never be called when validating only elements");
+ }
+ });
+ $(document).ajaxStop(function() {
+ $(document).unbind("ajaxStop");
+ equals( 1, v.size(), "There must be one error" );
+ equals( "Peter in use", v.errorList[0].message );
+
+ $(document).ajaxStop(function() {
+ $(document).unbind("ajaxStop");
+ equals( 1, v.size(), "There must be one error" );
+ equals( "Peter2 in use", v.errorList[0].message );
+ start();
+ });
+ e.val("Peter2");
+ ok( !v.element(e), "new value, new request" );
+ });
+ ok( !v.element(e), "invalid element, nothing entered yet" );
+ e.val("Peter");
+ ok( !v.element(e), "still invalid, because remote validation must block until it returns" );
+});
+
+test("remote, customized ajax options", function() {
+ expect(2);
+ stop();
+ var v = $("#userForm").validate({
+ rules: {
+ username: {
+ required: true,
+ remote: {
+ url: "users.php",
+ type: "POST",
+ beforeSend: function(request, settings) {
+ same(settings.type, "POST");
+ same(settings.data, "username=asdf&email=email.com");
+ },
+ data: {
+ email: function() {
+ return "email.com";
+ }
+ },
+ complete: function() {
+ start();
+ }
+ }
+ }
+ }
+ });
+ $("#username").val("asdf");
+ $("#userForm").valid();
+});
+
+
+test("remote extensions", function() {
+ expect(5);
+ stop();
+ var e = $("#username");
+ var v = $("#userForm").validate({
+ rules: {
+ username: {
+ required: true,
+ remote: "users2.php"
+ }
+ },
+ messages: {
+ username: {
+ required: "Please"
+ }
+ },
+ submitHandler: function() {
+ ok( false, "submitHandler may never be called when validating only elements");
+ }
+ });
+ $(document).ajaxStop(function() {
+ $(document).unbind("ajaxStop");
+ equals( 1, v.size(), "There must be one error" );
+ equals( v.errorList[0].message, "asdf is already taken, please try something else" );
+ v.element(e);
+ equals( v.errorList[0].message, "asdf is already taken, please try something else", "message doesn't change on revalidation" );
+ start();
+ });
+ ok( !v.element(e), "invalid element, nothing entered yet" );
+ e.val("asdf");
+ ok( !v.element(e), "still invalid, because remote validation must block until it returns" );
+});
+
+module("additional methods");
+
+test("phone (us)", function() {
+ var method = methodTest("phoneUS");
+ ok( method( "1(212)-999-2345" ), "Valid us phone number" );
+ ok( method( "212 999 2344" ), "Valid us phone number" );
+ ok( method( "212-999-0983" ), "Valid us phone number" );
+ ok(!method( "111-123-5434" ), "Invalid us phone number" );
+ ok(!method( "212 123 4567" ), "Invalid us phone number" );
+});
+
+test("dateITA", function() {
+ var method = methodTest("dateITA");
+ ok( method( "01/01/1900" ), "Valid date ITA" );
+ ok(!method( "01/13/1990" ), "Invalid date ITA" );
+ ok(!method( "01.01.1900" ), "Invalid date ITA" );
+});
+
+test("time", function() {
+ var method = methodTest("time");
+ ok( method("00:00"), "Valid time, lower bound" );
+ ok( method("23:59"), "Valid time, upper bound" );
+ ok( !method("24:60"), "Invalid time" );
+ ok( !method("24:00"), "Invalid time" );
+ ok( !method("29:59"), "Invalid time" );
+ ok( !method("30:00"), "Invalid time" );
+});
+
+test("minWords", function() {
+ var method = methodTest("minWords");
+ ok( method("hello worlds", 2), "plain text, valid" );
+ ok( method("hello world", 2), "html, valid" );
+ ok( !method("hello", 2), "plain text, invalid" );
+ ok( !method("world ", 2), "html, invalid" );
+ ok( !method("world ", 2), "html, invalid" );
+});
+
+test("maxWords", function() {
+ var method = methodTest("maxWords");
+ ok( method("hello", 2), "plain text, valid" );
+ ok( method("world ", 2), "html, valid" );
+ ok( method("world ", 2), "html, valid" );
+ ok( !method("hello worlds", 2), "plain text, invalid" );
+ ok( !method("hello world", 2), "html, invalid" );
+});
+
+function testCardTypeByNumber(number, cardname, expected) {
+ $("#cardnumber").val(number);
+ var actual = $("#ccform").valid();
+ equals(actual, expected, $.format("Expect card number {0} to validate to {1}, actually validated to ", number, expected));
+}
+
+test('creditcardtypes, all', function() {
+ $("#ccform").validate({
+ rules: {
+ cardnumber: {
+ creditcard: true,
+ creditcardtypes: {
+ all: true
+ }
+ }
+ }
+ });
+
+ testCardTypeByNumber("4111-1111-1111-1111", "VISA", true)
+ testCardTypeByNumber("5111-1111-1111-1118", "MasterCard", true)
+ testCardTypeByNumber("6111-1111-1111-1116", "Discover", true)
+ testCardTypeByNumber("3400-0000-0000-009", "AMEX", true);
+
+ testCardTypeByNumber("4111-1111-1111-1110", "VISA", false)
+ testCardTypeByNumber("5432-1111-1111-1111", "MasterCard", false)
+ testCardTypeByNumber("6611-6611-6611-6611", "Discover", false)
+ testCardTypeByNumber("3777-7777-7777-7777", "AMEX", false)
+
+});
+
+test('creditcardtypes, visa', function() {
+ $("#ccform").validate({
+ rules: {
+ cardnumber: {
+ creditcard: true,
+ creditcardtypes: {
+ visa: true
+ }
+ }
+ }
+ });
+
+ testCardTypeByNumber("4111-1111-1111-1111", "VISA", true)
+ testCardTypeByNumber("5111-1111-1111-1118", "MasterCard", false)
+ testCardTypeByNumber("6111-1111-1111-1116", "Discover", false)
+ testCardTypeByNumber("3400-0000-0000-009", "AMEX", false);
+});
+
+test('creditcardtypes, mastercard', function() {
+ $("#ccform").validate({
+ rules: {
+ cardnumber: {
+ creditcard: true,
+ creditcardtypes: {
+ mastercard: true
+ }
+ }
+ }
+ });
+
+ testCardTypeByNumber("5111-1111-1111-1118", "MasterCard", true)
+ testCardTypeByNumber("6111-1111-1111-1116", "Discover", false)
+ testCardTypeByNumber("3400-0000-0000-009", "AMEX", false);
+ testCardTypeByNumber("4111-1111-1111-1111", "VISA", false);
+});
+
+})(jQuery);
\ No newline at end of file
diff --git a/app/assets/javascripts/jquery-validation/test/qunit/qunit.css b/app/assets/javascripts/jquery-validation/test/qunit/qunit.css
new file mode 100644
index 0000000..88cdda9
--- /dev/null
+++ b/app/assets/javascripts/jquery-validation/test/qunit/qunit.css
@@ -0,0 +1,205 @@
+/** Font Family and Sizes */
+
+#qunit-tests, #qunit-header, #qunit-banner, #qunit-testrunner-toolbar, #qunit-userAgent, #qunit-testresult {
+ font-family: "Helvetica Neue Light", "HelveticaNeue-Light", "Helvetica Neue", Calibri, Helvetica, Arial;
+}
+
+#qunit-testrunner-toolbar, #qunit-userAgent, #qunit-testresult, #qunit-tests li { font-size: small; }
+#qunit-tests { font-size: smaller; }
+
+
+/** Resets */
+
+#qunit-tests, #qunit-tests ol, #qunit-header, #qunit-banner, #qunit-userAgent, #qunit-testresult {
+ margin: 0;
+ padding: 0;
+}
+
+
+/** Header */
+
+#qunit-header {
+ padding: 0.5em 0 0.5em 1em;
+
+ color: #8699a4;
+ background-color: #0d3349;
+
+ font-size: 1.5em;
+ line-height: 1em;
+ font-weight: normal;
+
+ border-radius: 15px 15px 0 0;
+ -moz-border-radius: 15px 15px 0 0;
+ -webkit-border-top-right-radius: 15px;
+ -webkit-border-top-left-radius: 15px;
+}
+
+#qunit-header a {
+ text-decoration: none;
+ color: #c2ccd1;
+}
+
+#qunit-header a:hover,
+#qunit-header a:focus {
+ color: #fff;
+}
+
+#qunit-banner {
+ height: 5px;
+}
+
+#qunit-testrunner-toolbar {
+ padding: 0.5em 0 0.5em 2em;
+ color: #5E740B;
+ background-color: #eee;
+}
+
+#qunit-userAgent {
+ padding: 0.5em 0 0.5em 2.5em;
+ background-color: #2b81af;
+ color: #fff;
+ text-shadow: rgba(0, 0, 0, 0.5) 2px 2px 1px;
+}
+
+
+/** Tests: Pass/Fail */
+
+#qunit-tests {
+ list-style-position: inside;
+}
+
+#qunit-tests li {
+ padding: 0.4em 0.5em 0.4em 2.5em;
+ border-bottom: 1px solid #fff;
+ list-style-position: inside;
+}
+
+#qunit-tests.hidepass li.pass {
+ display: none;
+}
+
+#qunit-tests li strong {
+ cursor: pointer;
+}
+
+#qunit-tests ol {
+ margin-top: 0.5em;
+ padding: 0.5em;
+
+ background-color: #fff;
+
+ border-radius: 15px;
+ -moz-border-radius: 15px;
+ -webkit-border-radius: 15px;
+
+ box-shadow: inset 0px 2px 13px #999;
+ -moz-box-shadow: inset 0px 2px 13px #999;
+ -webkit-box-shadow: inset 0px 2px 13px #999;
+}
+
+#qunit-tests table {
+ border-collapse: collapse;
+ margin-top: .2em;
+}
+
+#qunit-tests th {
+ text-align: right;
+ vertical-align: top;
+ padding: 0 .5em 0 0;
+}
+
+#qunit-tests td {
+ vertical-align: top;
+}
+
+#qunit-tests pre {
+ margin: 0;
+ white-space: pre-wrap;
+ word-wrap: break-word;
+}
+
+#qunit-tests del {
+ background-color: #e0f2be;
+ color: #374e0c;
+ text-decoration: none;
+}
+
+#qunit-tests ins {
+ background-color: #ffcaca;
+ color: #500;
+ text-decoration: none;
+}
+
+/*** Test Counts */
+
+#qunit-tests b.counts { color: black; }
+#qunit-tests b.passed { color: #5E740B; }
+#qunit-tests b.failed { color: #710909; }
+
+#qunit-tests li li {
+ margin: 0.5em;
+ padding: 0.4em 0.5em 0.4em 0.5em;
+ background-color: #fff;
+ border-bottom: none;
+ list-style-position: inside;
+}
+
+/*** Passing Styles */
+
+#qunit-tests li li.pass {
+ color: #5E740B;
+ background-color: #fff;
+ border-left: 26px solid #C6E746;
+}
+
+#qunit-tests .pass { color: #528CE0; background-color: #D2E0E6; }
+#qunit-tests .pass .test-name { color: #366097; }
+
+#qunit-tests .pass .test-actual,
+#qunit-tests .pass .test-expected { color: #999999; }
+
+#qunit-banner.qunit-pass { background-color: #C6E746; }
+
+/*** Failing Styles */
+
+#qunit-tests li li.fail {
+ color: #710909;
+ background-color: #fff;
+ border-left: 26px solid #EE5757;
+}
+
+#qunit-tests > li:last-child {
+ border-radius: 0 0 15px 15px;
+ -moz-border-radius: 0 0 15px 15px;
+ -webkit-border-bottom-right-radius: 15px;
+ -webkit-border-bottom-left-radius: 15px;
+}
+
+#qunit-tests .fail { color: #000000; background-color: #EE5757; }
+#qunit-tests .fail .test-name,
+#qunit-tests .fail .module-name { color: #000000; }
+
+#qunit-tests .fail .test-actual { color: #EE5757; }
+#qunit-tests .fail .test-expected { color: green; }
+
+#qunit-banner.qunit-fail { background-color: #EE5757; }
+
+
+/** Result */
+
+#qunit-testresult {
+ padding: 0.5em 0.5em 0.5em 2.5em;
+
+ color: #2b81af;
+ background-color: #D2E0E6;
+
+ border-bottom: 1px solid white;
+}
+
+/** Fixture */
+
+#qunit-fixture {
+ position: absolute;
+ top: -10000px;
+ left: -10000px;
+}
diff --git a/app/assets/javascripts/jquery-validation/test/qunit/qunit.js b/app/assets/javascripts/jquery-validation/test/qunit/qunit.js
new file mode 100644
index 0000000..272b93a
--- /dev/null
+++ b/app/assets/javascripts/jquery-validation/test/qunit/qunit.js
@@ -0,0 +1,1428 @@
+/*
+ * QUnit - A JavaScript Unit Testing Framework
+ *
+ * http://docs.jquery.com/QUnit
+ *
+ * Copyright (c) 2011 John Resig, Jörn Zaefferer
+ * Dual licensed under the MIT (MIT-LICENSE.txt)
+ * or GPL (GPL-LICENSE.txt) licenses.
+ */
+
+(function(window) {
+
+var defined = {
+ setTimeout: typeof window.setTimeout !== "undefined",
+ sessionStorage: (function() {
+ try {
+ return !!sessionStorage.getItem;
+ } catch(e){
+ return false;
+ }
+ })()
+};
+
+var testId = 0;
+
+var Test = function(name, testName, expected, testEnvironmentArg, async, callback) {
+ this.name = name;
+ this.testName = testName;
+ this.expected = expected;
+ this.testEnvironmentArg = testEnvironmentArg;
+ this.async = async;
+ this.callback = callback;
+ this.assertions = [];
+};
+Test.prototype = {
+ init: function() {
+ var tests = id("qunit-tests");
+ if (tests) {
+ var b = document.createElement("strong");
+ b.innerHTML = "Running " + this.name;
+ var li = document.createElement("li");
+ li.appendChild( b );
+ li.className = "running";
+ li.id = this.id = "test-output" + testId++;
+ tests.appendChild( li );
+ }
+ },
+ setup: function() {
+ if (this.module != config.previousModule) {
+ if ( config.previousModule ) {
+ QUnit.moduleDone( {
+ name: config.previousModule,
+ failed: config.moduleStats.bad,
+ passed: config.moduleStats.all - config.moduleStats.bad,
+ total: config.moduleStats.all
+ } );
+ }
+ config.previousModule = this.module;
+ config.moduleStats = { all: 0, bad: 0 };
+ QUnit.moduleStart( {
+ name: this.module
+ } );
+ }
+
+ config.current = this;
+ this.testEnvironment = extend({
+ setup: function() {},
+ teardown: function() {}
+ }, this.moduleTestEnvironment);
+ if (this.testEnvironmentArg) {
+ extend(this.testEnvironment, this.testEnvironmentArg);
+ }
+
+ QUnit.testStart( {
+ name: this.testName
+ } );
+
+ // allow utility functions to access the current test environment
+ // TODO why??
+ QUnit.current_testEnvironment = this.testEnvironment;
+
+ try {
+ if ( !config.pollution ) {
+ saveGlobal();
+ }
+
+ this.testEnvironment.setup.call(this.testEnvironment);
+ } catch(e) {
+ QUnit.ok( false, "Setup failed on " + this.testName + ": " + e.message );
+ }
+ },
+ run: function() {
+ if ( this.async ) {
+ QUnit.stop();
+ }
+
+ if ( config.notrycatch ) {
+ this.callback.call(this.testEnvironment);
+ return;
+ }
+ try {
+ this.callback.call(this.testEnvironment);
+ } catch(e) {
+ fail("Test " + this.testName + " died, exception and test follows", e, this.callback);
+ QUnit.ok( false, "Died on test #" + (this.assertions.length + 1) + ": " + e.message + " - " + QUnit.jsDump.parse(e) );
+ // else next test will carry the responsibility
+ saveGlobal();
+
+ // Restart the tests if they're blocking
+ if ( config.blocking ) {
+ start();
+ }
+ }
+ },
+ teardown: function() {
+ try {
+ checkPollution();
+ this.testEnvironment.teardown.call(this.testEnvironment);
+ } catch(e) {
+ QUnit.ok( false, "Teardown failed on " + this.testName + ": " + e.message );
+ }
+ },
+ finish: function() {
+ if ( this.expected && this.expected != this.assertions.length ) {
+ QUnit.ok( false, "Expected " + this.expected + " assertions, but " + this.assertions.length + " were run" );
+ }
+
+ var good = 0, bad = 0,
+ tests = id("qunit-tests");
+
+ config.stats.all += this.assertions.length;
+ config.moduleStats.all += this.assertions.length;
+
+ if ( tests ) {
+ var ol = document.createElement("ol");
+
+ for ( var i = 0; i < this.assertions.length; i++ ) {
+ var assertion = this.assertions[i];
+
+ var li = document.createElement("li");
+ li.className = assertion.result ? "pass" : "fail";
+ li.innerHTML = assertion.message || (assertion.result ? "okay" : "failed");
+ ol.appendChild( li );
+
+ if ( assertion.result ) {
+ good++;
+ } else {
+ bad++;
+ config.stats.bad++;
+ config.moduleStats.bad++;
+ }
+ }
+
+ // store result when possible
+ QUnit.config.reorder && defined.sessionStorage && sessionStorage.setItem("qunit-" + this.testName, bad);
+
+ if (bad == 0) {
+ ol.style.display = "none";
+ }
+
+ var b = document.createElement("strong");
+ b.innerHTML = this.name + " (" + bad + " , " + good + " , " + this.assertions.length + ") ";
+
+ addEvent(b, "click", function() {
+ var next = b.nextSibling, display = next.style.display;
+ next.style.display = display === "none" ? "block" : "none";
+ });
+
+ addEvent(b, "dblclick", function(e) {
+ var target = e && e.target ? e.target : window.event.srcElement;
+ if ( target.nodeName.toLowerCase() == "span" || target.nodeName.toLowerCase() == "b" ) {
+ target = target.parentNode;
+ }
+ if ( window.location && target.nodeName.toLowerCase() === "strong" ) {
+ window.location = QUnit.url({ filter: getText([target]).replace(/\(.+\)$/, "").replace(/(^\s*|\s*$)/g, "") });
+ }
+ });
+
+ var li = id(this.id);
+ li.className = bad ? "fail" : "pass";
+ li.removeChild( li.firstChild );
+ li.appendChild( b );
+ li.appendChild( ol );
+
+ } else {
+ for ( var i = 0; i < this.assertions.length; i++ ) {
+ if ( !this.assertions[i].result ) {
+ bad++;
+ config.stats.bad++;
+ config.moduleStats.bad++;
+ }
+ }
+ }
+
+ try {
+ QUnit.reset();
+ } catch(e) {
+ fail("reset() failed, following Test " + this.testName + ", exception and reset fn follows", e, QUnit.reset);
+ }
+
+ QUnit.testDone( {
+ name: this.testName,
+ failed: bad,
+ passed: this.assertions.length - bad,
+ total: this.assertions.length
+ } );
+ },
+
+ queue: function() {
+ var test = this;
+ synchronize(function() {
+ test.init();
+ });
+ function run() {
+ // each of these can by async
+ synchronize(function() {
+ test.setup();
+ });
+ synchronize(function() {
+ test.run();
+ });
+ synchronize(function() {
+ test.teardown();
+ });
+ synchronize(function() {
+ test.finish();
+ });
+ }
+ // defer when previous test run passed, if storage is available
+ var bad = QUnit.config.reorder && defined.sessionStorage && +sessionStorage.getItem("qunit-" + this.testName);
+ if (bad) {
+ run();
+ } else {
+ synchronize(run);
+ };
+ }
+
+};
+
+var QUnit = {
+
+ // call on start of module test to prepend name to all tests
+ module: function(name, testEnvironment) {
+ config.currentModule = name;
+ config.currentModuleTestEnviroment = testEnvironment;
+ },
+
+ asyncTest: function(testName, expected, callback) {
+ if ( arguments.length === 2 ) {
+ callback = expected;
+ expected = 0;
+ }
+
+ QUnit.test(testName, expected, callback, true);
+ },
+
+ test: function(testName, expected, callback, async) {
+ var name = '' + testName + ' ', testEnvironmentArg;
+
+ if ( arguments.length === 2 ) {
+ callback = expected;
+ expected = null;
+ }
+ // is 2nd argument a testEnvironment?
+ if ( expected && typeof expected === 'object') {
+ testEnvironmentArg = expected;
+ expected = null;
+ }
+
+ if ( config.currentModule ) {
+ name = '' + config.currentModule + " : " + name;
+ }
+
+ if ( !validTest(config.currentModule + ": " + testName) ) {
+ return;
+ }
+
+ var test = new Test(name, testName, expected, testEnvironmentArg, async, callback);
+ test.module = config.currentModule;
+ test.moduleTestEnvironment = config.currentModuleTestEnviroment;
+ test.queue();
+ },
+
+ /**
+ * Specify the number of expected assertions to gurantee that failed test (no assertions are run at all) don't slip through.
+ */
+ expect: function(asserts) {
+ config.current.expected = asserts;
+ },
+
+ /**
+ * Asserts true.
+ * @example ok( "asdfasdf".length > 5, "There must be at least 5 chars" );
+ */
+ ok: function(a, msg) {
+ a = !!a;
+ var details = {
+ result: a,
+ message: msg
+ };
+ msg = escapeHtml(msg);
+ QUnit.log(details);
+ config.current.assertions.push({
+ result: a,
+ message: msg
+ });
+ },
+
+ /**
+ * Checks that the first two arguments are equal, with an optional message.
+ * Prints out both actual and expected values.
+ *
+ * Prefered to ok( actual == expected, message )
+ *
+ * @example equal( format("Received {0} bytes.", 2), "Received 2 bytes." );
+ *
+ * @param Object actual
+ * @param Object expected
+ * @param String message (optional)
+ */
+ equal: function(actual, expected, message) {
+ QUnit.push(expected == actual, actual, expected, message);
+ },
+
+ notEqual: function(actual, expected, message) {
+ QUnit.push(expected != actual, actual, expected, message);
+ },
+
+ deepEqual: function(actual, expected, message) {
+ QUnit.push(QUnit.equiv(actual, expected), actual, expected, message);
+ },
+
+ notDeepEqual: function(actual, expected, message) {
+ QUnit.push(!QUnit.equiv(actual, expected), actual, expected, message);
+ },
+
+ strictEqual: function(actual, expected, message) {
+ QUnit.push(expected === actual, actual, expected, message);
+ },
+
+ notStrictEqual: function(actual, expected, message) {
+ QUnit.push(expected !== actual, actual, expected, message);
+ },
+
+ raises: function(block, expected, message) {
+ var actual, ok = false;
+
+ if (typeof expected === 'string') {
+ message = expected;
+ expected = null;
+ }
+
+ try {
+ block();
+ } catch (e) {
+ actual = e;
+ }
+
+ if (actual) {
+ // we don't want to validate thrown error
+ if (!expected) {
+ ok = true;
+ // expected is a regexp
+ } else if (QUnit.objectType(expected) === "regexp") {
+ ok = expected.test(actual);
+ // expected is a constructor
+ } else if (actual instanceof expected) {
+ ok = true;
+ // expected is a validation function which returns true is validation passed
+ } else if (expected.call({}, actual) === true) {
+ ok = true;
+ }
+ }
+
+ QUnit.ok(ok, message);
+ },
+
+ start: function() {
+ config.semaphore--;
+ if (config.semaphore > 0) {
+ // don't start until equal number of stop-calls
+ return;
+ }
+ if (config.semaphore < 0) {
+ // ignore if start is called more often then stop
+ config.semaphore = 0;
+ }
+ // A slight delay, to avoid any current callbacks
+ if ( defined.setTimeout ) {
+ window.setTimeout(function() {
+ if ( config.timeout ) {
+ clearTimeout(config.timeout);
+ }
+
+ config.blocking = false;
+ process();
+ }, 13);
+ } else {
+ config.blocking = false;
+ process();
+ }
+ },
+
+ stop: function(timeout) {
+ config.semaphore++;
+ config.blocking = true;
+
+ if ( timeout && defined.setTimeout ) {
+ clearTimeout(config.timeout);
+ config.timeout = window.setTimeout(function() {
+ QUnit.ok( false, "Test timed out" );
+ QUnit.start();
+ }, timeout);
+ }
+ },
+
+ url: function( params ) {
+ params = extend( extend( {}, QUnit.urlParams ), params );
+ var querystring = "?",
+ key;
+ for ( key in params ) {
+ querystring += encodeURIComponent( key ) + "=" +
+ encodeURIComponent( params[ key ] ) + "&";
+ }
+ return window.location.pathname + querystring.slice( 0, -1 );
+ }
+};
+
+// Backwards compatibility, deprecated
+QUnit.equals = QUnit.equal;
+QUnit.same = QUnit.deepEqual;
+
+// Maintain internal state
+var config = {
+ // The queue of tests to run
+ queue: [],
+
+ // block until document ready
+ blocking: true,
+
+ // by default, run previously failed tests first
+ // very useful in combination with "Hide passed tests" checked
+ reorder: true,
+
+ noglobals: false,
+ notrycatch: false
+};
+
+// Load paramaters
+(function() {
+ var location = window.location || { search: "", protocol: "file:" },
+ params = location.search.slice( 1 ).split( "&" ),
+ length = params.length,
+ urlParams = {},
+ current;
+
+ if ( params[ 0 ] ) {
+ for ( var i = 0; i < length; i++ ) {
+ current = params[ i ].split( "=" );
+ current[ 0 ] = decodeURIComponent( current[ 0 ] );
+ // allow just a key to turn on a flag, e.g., test.html?noglobals
+ current[ 1 ] = current[ 1 ] ? decodeURIComponent( current[ 1 ] ) : true;
+ urlParams[ current[ 0 ] ] = current[ 1 ];
+ if ( current[ 0 ] in config ) {
+ config[ current[ 0 ] ] = current[ 1 ];
+ }
+ }
+ }
+
+ QUnit.urlParams = urlParams;
+ config.filter = urlParams.filter;
+
+ // Figure out if we're running the tests from a server or not
+ QUnit.isLocal = !!(location.protocol === 'file:');
+})();
+
+// Expose the API as global variables, unless an 'exports'
+// object exists, in that case we assume we're in CommonJS
+if ( typeof exports === "undefined" || typeof require === "undefined" ) {
+ extend(window, QUnit);
+ window.QUnit = QUnit;
+} else {
+ extend(exports, QUnit);
+ exports.QUnit = QUnit;
+}
+
+// define these after exposing globals to keep them in these QUnit namespace only
+extend(QUnit, {
+ config: config,
+
+ // Initialize the configuration options
+ init: function() {
+ extend(config, {
+ stats: { all: 0, bad: 0 },
+ moduleStats: { all: 0, bad: 0 },
+ started: +new Date,
+ updateRate: 1000,
+ blocking: false,
+ autostart: true,
+ autorun: false,
+ filter: "",
+ queue: [],
+ semaphore: 0
+ });
+
+ var tests = id( "qunit-tests" ),
+ banner = id( "qunit-banner" ),
+ result = id( "qunit-testresult" );
+
+ if ( tests ) {
+ tests.innerHTML = "";
+ }
+
+ if ( banner ) {
+ banner.className = "";
+ }
+
+ if ( result ) {
+ result.parentNode.removeChild( result );
+ }
+
+ if ( tests ) {
+ result = document.createElement( "p" );
+ result.id = "qunit-testresult";
+ result.className = "result";
+ tests.parentNode.insertBefore( result, tests );
+ result.innerHTML = 'Running... ';
+ }
+ },
+
+ /**
+ * Resets the test setup. Useful for tests that modify the DOM.
+ *
+ * If jQuery is available, uses jQuery's html(), otherwise just innerHTML.
+ */
+ reset: function() {
+ if ( window.jQuery ) {
+ jQuery( "#main, #qunit-fixture" ).html( config.fixture );
+ } else {
+ var main = id( 'main' ) || id( 'qunit-fixture' );
+ if ( main ) {
+ main.innerHTML = config.fixture;
+ }
+ }
+ },
+
+ /**
+ * Trigger an event on an element.
+ *
+ * @example triggerEvent( document.body, "click" );
+ *
+ * @param DOMElement elem
+ * @param String type
+ */
+ triggerEvent: function( elem, type, event ) {
+ if ( document.createEvent ) {
+ event = document.createEvent("MouseEvents");
+ event.initMouseEvent(type, true, true, elem.ownerDocument.defaultView,
+ 0, 0, 0, 0, 0, false, false, false, false, 0, null);
+ elem.dispatchEvent( event );
+
+ } else if ( elem.fireEvent ) {
+ elem.fireEvent("on"+type);
+ }
+ },
+
+ // Safe object type checking
+ is: function( type, obj ) {
+ return QUnit.objectType( obj ) == type;
+ },
+
+ objectType: function( obj ) {
+ if (typeof obj === "undefined") {
+ return "undefined";
+
+ // consider: typeof null === object
+ }
+ if (obj === null) {
+ return "null";
+ }
+
+ var type = Object.prototype.toString.call( obj )
+ .match(/^\[object\s(.*)\]$/)[1] || '';
+
+ switch (type) {
+ case 'Number':
+ if (isNaN(obj)) {
+ return "nan";
+ } else {
+ return "number";
+ }
+ case 'String':
+ case 'Boolean':
+ case 'Array':
+ case 'Date':
+ case 'RegExp':
+ case 'Function':
+ return type.toLowerCase();
+ }
+ if (typeof obj === "object") {
+ return "object";
+ }
+ return undefined;
+ },
+
+ push: function(result, actual, expected, message) {
+ var details = {
+ result: result,
+ message: message,
+ actual: actual,
+ expected: expected
+ };
+
+ message = escapeHtml(message) || (result ? "okay" : "failed");
+ message = '' + message + " ";
+ expected = escapeHtml(QUnit.jsDump.parse(expected));
+ actual = escapeHtml(QUnit.jsDump.parse(actual));
+ var output = message + 'Expected: ' + expected + ' ';
+ if (actual != expected) {
+ output += 'Result: ' + actual + ' ';
+ output += 'Diff: ' + QUnit.diff(expected, actual) +' ';
+ }
+ if (!result) {
+ var source = sourceFromStacktrace();
+ if (source) {
+ details.source = source;
+ output += 'Source: ' + source +' ';
+ }
+ }
+ output += "
";
+
+ QUnit.log(details);
+
+ config.current.assertions.push({
+ result: !!result,
+ message: output
+ });
+ },
+
+ // Logging callbacks; all receive a single argument with the listed properties
+ // run test/logs.html for any related changes
+ begin: function() {},
+ // done: { failed, passed, total, runtime }
+ done: function() {},
+ // log: { result, actual, expected, message }
+ log: function() {},
+ // testStart: { name }
+ testStart: function() {},
+ // testDone: { name, failed, passed, total }
+ testDone: function() {},
+ // moduleStart: { name }
+ moduleStart: function() {},
+ // moduleDone: { name, failed, passed, total }
+ moduleDone: function() {}
+});
+
+if ( typeof document === "undefined" || document.readyState === "complete" ) {
+ config.autorun = true;
+}
+
+addEvent(window, "load", function() {
+ QUnit.begin({});
+
+ // Initialize the config, saving the execution queue
+ var oldconfig = extend({}, config);
+ QUnit.init();
+ extend(config, oldconfig);
+
+ config.blocking = false;
+
+ var userAgent = id("qunit-userAgent");
+ if ( userAgent ) {
+ userAgent.innerHTML = navigator.userAgent;
+ }
+ var banner = id("qunit-header");
+ if ( banner ) {
+ banner.innerHTML = ' ' + banner.innerHTML + ' ' +
+ ' noglobals ' +
+ ' notrycatch ';
+ addEvent( banner, "change", function( event ) {
+ var params = {};
+ params[ event.target.name ] = event.target.checked ? true : undefined;
+ window.location = QUnit.url( params );
+ });
+ }
+
+ var toolbar = id("qunit-testrunner-toolbar");
+ if ( toolbar ) {
+ var filter = document.createElement("input");
+ filter.type = "checkbox";
+ filter.id = "qunit-filter-pass";
+ addEvent( filter, "click", function() {
+ var ol = document.getElementById("qunit-tests");
+ if ( filter.checked ) {
+ ol.className = ol.className + " hidepass";
+ } else {
+ var tmp = " " + ol.className.replace( /[\n\t\r]/g, " " ) + " ";
+ ol.className = tmp.replace(/ hidepass /, " ");
+ }
+ if ( defined.sessionStorage ) {
+ sessionStorage.setItem("qunit-filter-passed-tests", filter.checked ? "true" : "");
+ }
+ });
+ if ( defined.sessionStorage && sessionStorage.getItem("qunit-filter-passed-tests") ) {
+ filter.checked = true;
+ var ol = document.getElementById("qunit-tests");
+ ol.className = ol.className + " hidepass";
+ }
+ toolbar.appendChild( filter );
+
+ var label = document.createElement("label");
+ label.setAttribute("for", "qunit-filter-pass");
+ label.innerHTML = "Hide passed tests";
+ toolbar.appendChild( label );
+ }
+
+ var main = id('main') || id('qunit-fixture');
+ if ( main ) {
+ config.fixture = main.innerHTML;
+ }
+
+ if (config.autostart) {
+ QUnit.start();
+ }
+});
+
+function done() {
+ config.autorun = true;
+
+ // Log the last module results
+ if ( config.currentModule ) {
+ QUnit.moduleDone( {
+ name: config.currentModule,
+ failed: config.moduleStats.bad,
+ passed: config.moduleStats.all - config.moduleStats.bad,
+ total: config.moduleStats.all
+ } );
+ }
+
+ var banner = id("qunit-banner"),
+ tests = id("qunit-tests"),
+ runtime = +new Date - config.started,
+ passed = config.stats.all - config.stats.bad,
+ html = [
+ 'Tests completed in ',
+ runtime,
+ ' milliseconds. ',
+ '',
+ passed,
+ ' tests of ',
+ config.stats.all,
+ ' passed, ',
+ config.stats.bad,
+ ' failed.'
+ ].join('');
+
+ if ( banner ) {
+ banner.className = (config.stats.bad ? "qunit-fail" : "qunit-pass");
+ }
+
+ if ( tests ) {
+ id( "qunit-testresult" ).innerHTML = html;
+ }
+
+ QUnit.done( {
+ failed: config.stats.bad,
+ passed: passed,
+ total: config.stats.all,
+ runtime: runtime
+ } );
+}
+
+function validTest( name ) {
+ var filter = config.filter,
+ run = false;
+
+ if ( !filter ) {
+ return true;
+ }
+
+ not = filter.charAt( 0 ) === "!";
+ if ( not ) {
+ filter = filter.slice( 1 );
+ }
+
+ if ( name.indexOf( filter ) !== -1 ) {
+ return !not;
+ }
+
+ if ( not ) {
+ run = true;
+ }
+
+ return run;
+}
+
+// so far supports only Firefox, Chrome and Opera (buggy)
+// could be extended in the future to use something like https://github.com/csnover/TraceKit
+function sourceFromStacktrace() {
+ try {
+ throw new Error();
+ } catch ( e ) {
+ if (e.stacktrace) {
+ // Opera
+ return e.stacktrace.split("\n")[6];
+ } else if (e.stack) {
+ // Firefox, Chrome
+ return e.stack.split("\n")[4];
+ }
+ }
+}
+
+function escapeHtml(s) {
+ if (!s) {
+ return "";
+ }
+ s = s + "";
+ return s.replace(/[\&"<>\\]/g, function(s) {
+ switch(s) {
+ case "&": return "&";
+ case "\\": return "\\\\";
+ case '"': return '\"';
+ case "<": return "<";
+ case ">": return ">";
+ default: return s;
+ }
+ });
+}
+
+function synchronize( callback ) {
+ config.queue.push( callback );
+
+ if ( config.autorun && !config.blocking ) {
+ process();
+ }
+}
+
+function process() {
+ var start = (new Date()).getTime();
+
+ while ( config.queue.length && !config.blocking ) {
+ if ( config.updateRate <= 0 || (((new Date()).getTime() - start) < config.updateRate) ) {
+ config.queue.shift()();
+ } else {
+ window.setTimeout( process, 13 );
+ break;
+ }
+ }
+ if (!config.blocking && !config.queue.length) {
+ done();
+ }
+}
+
+function saveGlobal() {
+ config.pollution = [];
+
+ if ( config.noglobals ) {
+ for ( var key in window ) {
+ config.pollution.push( key );
+ }
+ }
+}
+
+function checkPollution( name ) {
+ var old = config.pollution;
+ saveGlobal();
+
+ var newGlobals = diff( old, config.pollution );
+ if ( newGlobals.length > 0 ) {
+ ok( false, "Introduced global variable(s): " + newGlobals.join(", ") );
+ config.current.expected++;
+ }
+
+ var deletedGlobals = diff( config.pollution, old );
+ if ( deletedGlobals.length > 0 ) {
+ ok( false, "Deleted global variable(s): " + deletedGlobals.join(", ") );
+ config.current.expected++;
+ }
+}
+
+// returns a new Array with the elements that are in a but not in b
+function diff( a, b ) {
+ var result = a.slice();
+ for ( var i = 0; i < result.length; i++ ) {
+ for ( var j = 0; j < b.length; j++ ) {
+ if ( result[i] === b[j] ) {
+ result.splice(i, 1);
+ i--;
+ break;
+ }
+ }
+ }
+ return result;
+}
+
+function fail(message, exception, callback) {
+ if ( typeof console !== "undefined" && console.error && console.warn ) {
+ console.error(message);
+ console.error(exception);
+ console.warn(callback.toString());
+
+ } else if ( window.opera && opera.postError ) {
+ opera.postError(message, exception, callback.toString);
+ }
+}
+
+function extend(a, b) {
+ for ( var prop in b ) {
+ if ( b[prop] === undefined ) {
+ delete a[prop];
+ } else {
+ a[prop] = b[prop];
+ }
+ }
+
+ return a;
+}
+
+function addEvent(elem, type, fn) {
+ if ( elem.addEventListener ) {
+ elem.addEventListener( type, fn, false );
+ } else if ( elem.attachEvent ) {
+ elem.attachEvent( "on" + type, fn );
+ } else {
+ fn();
+ }
+}
+
+function id(name) {
+ return !!(typeof document !== "undefined" && document && document.getElementById) &&
+ document.getElementById( name );
+}
+
+// Test for equality any JavaScript type.
+// Discussions and reference: http://philrathe.com/articles/equiv
+// Test suites: http://philrathe.com/tests/equiv
+// Author: Philippe Rathé
+QUnit.equiv = function () {
+
+ var innerEquiv; // the real equiv function
+ var callers = []; // stack to decide between skip/abort functions
+ var parents = []; // stack to avoiding loops from circular referencing
+
+ // Call the o related callback with the given arguments.
+ function bindCallbacks(o, callbacks, args) {
+ var prop = QUnit.objectType(o);
+ if (prop) {
+ if (QUnit.objectType(callbacks[prop]) === "function") {
+ return callbacks[prop].apply(callbacks, args);
+ } else {
+ return callbacks[prop]; // or undefined
+ }
+ }
+ }
+
+ var callbacks = function () {
+
+ // for string, boolean, number and null
+ function useStrictEquality(b, a) {
+ if (b instanceof a.constructor || a instanceof b.constructor) {
+ // to catch short annotaion VS 'new' annotation of a declaration
+ // e.g. var i = 1;
+ // var j = new Number(1);
+ return a == b;
+ } else {
+ return a === b;
+ }
+ }
+
+ return {
+ "string": useStrictEquality,
+ "boolean": useStrictEquality,
+ "number": useStrictEquality,
+ "null": useStrictEquality,
+ "undefined": useStrictEquality,
+
+ "nan": function (b) {
+ return isNaN(b);
+ },
+
+ "date": function (b, a) {
+ return QUnit.objectType(b) === "date" && a.valueOf() === b.valueOf();
+ },
+
+ "regexp": function (b, a) {
+ return QUnit.objectType(b) === "regexp" &&
+ a.source === b.source && // the regex itself
+ a.global === b.global && // and its modifers (gmi) ...
+ a.ignoreCase === b.ignoreCase &&
+ a.multiline === b.multiline;
+ },
+
+ // - skip when the property is a method of an instance (OOP)
+ // - abort otherwise,
+ // initial === would have catch identical references anyway
+ "function": function () {
+ var caller = callers[callers.length - 1];
+ return caller !== Object &&
+ typeof caller !== "undefined";
+ },
+
+ "array": function (b, a) {
+ var i, j, loop;
+ var len;
+
+ // b could be an object literal here
+ if ( ! (QUnit.objectType(b) === "array")) {
+ return false;
+ }
+
+ len = a.length;
+ if (len !== b.length) { // safe and faster
+ return false;
+ }
+
+ //track reference to avoid circular references
+ parents.push(a);
+ for (i = 0; i < len; i++) {
+ loop = false;
+ for(j=0;j= 0) {
+ type = "array";
+ } else {
+ type = typeof obj;
+ }
+ return type;
+ },
+ separator:function() {
+ return this.multiline ? this.HTML ? ' ' : '\n' : this.HTML ? ' ' : ' ';
+ },
+ indent:function( extra ) {// extra can be a number, shortcut for increasing-calling-decreasing
+ if ( !this.multiline )
+ return '';
+ var chr = this.indentChar;
+ if ( this.HTML )
+ chr = chr.replace(/\t/g,' ').replace(/ /g,' ');
+ return Array( this._depth_ + (extra||0) ).join(chr);
+ },
+ up:function( a ) {
+ this._depth_ += a || 1;
+ },
+ down:function( a ) {
+ this._depth_ -= a || 1;
+ },
+ setParser:function( name, parser ) {
+ this.parsers[name] = parser;
+ },
+ // The next 3 are exposed so you can use them
+ quote:quote,
+ literal:literal,
+ join:join,
+ //
+ _depth_: 1,
+ // This is the list of parsers, to modify them, use jsDump.setParser
+ parsers:{
+ window: '[Window]',
+ document: '[Document]',
+ error:'[ERROR]', //when no parser is found, shouldn't happen
+ unknown: '[Unknown]',
+ 'null':'null',
+ 'undefined':'undefined',
+ 'function':function( fn ) {
+ var ret = 'function',
+ name = 'name' in fn ? fn.name : (reName.exec(fn)||[])[1];//functions never have name in IE
+ if ( name )
+ ret += ' ' + name;
+ ret += '(';
+
+ ret = [ ret, QUnit.jsDump.parse( fn, 'functionArgs' ), '){'].join('');
+ return join( ret, QUnit.jsDump.parse(fn,'functionCode'), '}' );
+ },
+ array: array,
+ nodelist: array,
+ arguments: array,
+ object:function( map ) {
+ var ret = [ ];
+ QUnit.jsDump.up();
+ for ( var key in map )
+ ret.push( QUnit.jsDump.parse(key,'key') + ': ' + QUnit.jsDump.parse(map[key]) );
+ QUnit.jsDump.down();
+ return join( '{', ret, '}' );
+ },
+ node:function( node ) {
+ var open = QUnit.jsDump.HTML ? '<' : '<',
+ close = QUnit.jsDump.HTML ? '>' : '>';
+
+ var tag = node.nodeName.toLowerCase(),
+ ret = open + tag;
+
+ for ( var a in QUnit.jsDump.DOMAttrs ) {
+ var val = node[QUnit.jsDump.DOMAttrs[a]];
+ if ( val )
+ ret += ' ' + a + '=' + QUnit.jsDump.parse( val, 'attribute' );
+ }
+ return ret + close + open + '/' + tag + close;
+ },
+ functionArgs:function( fn ) {//function calls it internally, it's the arguments part of the function
+ var l = fn.length;
+ if ( !l ) return '';
+
+ var args = Array(l);
+ while ( l-- )
+ args[l] = String.fromCharCode(97+l);//97 is 'a'
+ return ' ' + args.join(', ') + ' ';
+ },
+ key:quote, //object calls it internally, the key part of an item in a map
+ functionCode:'[code]', //function calls it internally, it's the content of the function
+ attribute:quote, //node calls it internally, it's an html attribute value
+ string:quote,
+ date:quote,
+ regexp:literal, //regex
+ number:literal,
+ 'boolean':literal
+ },
+ DOMAttrs:{//attributes to dump from nodes, name=>realName
+ id:'id',
+ name:'name',
+ 'class':'className'
+ },
+ HTML:false,//if true, entities are escaped ( <, >, \t, space and \n )
+ indentChar:' ',//indentation unit
+ multiline:true //if true, items in a collection, are separated by a \n, else just a space.
+ };
+
+ return jsDump;
+})();
+
+// from Sizzle.js
+function getText( 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 += getText( elem.childNodes );
+ }
+ }
+
+ return ret;
+};
+
+/*
+ * Javascript Diff Algorithm
+ * By John Resig (http://ejohn.org/)
+ * Modified by Chu Alan "sprite"
+ *
+ * Released under the MIT license.
+ *
+ * More Info:
+ * http://ejohn.org/projects/javascript-diff-algorithm/
+ *
+ * Usage: QUnit.diff(expected, actual)
+ *
+ * QUnit.diff("the quick brown fox jumped over", "the quick fox jumps over") == "the quick brown fox jumped jumps over"
+ */
+QUnit.diff = (function() {
+ function diff(o, n){
+ var ns = new Object();
+ var os = new Object();
+
+ for (var i = 0; i < n.length; i++) {
+ if (ns[n[i]] == null)
+ ns[n[i]] = {
+ rows: new Array(),
+ o: null
+ };
+ ns[n[i]].rows.push(i);
+ }
+
+ for (var i = 0; i < o.length; i++) {
+ if (os[o[i]] == null)
+ os[o[i]] = {
+ rows: new Array(),
+ n: null
+ };
+ os[o[i]].rows.push(i);
+ }
+
+ for (var i in ns) {
+ if (ns[i].rows.length == 1 && typeof(os[i]) != "undefined" && os[i].rows.length == 1) {
+ n[ns[i].rows[0]] = {
+ text: n[ns[i].rows[0]],
+ row: os[i].rows[0]
+ };
+ o[os[i].rows[0]] = {
+ text: o[os[i].rows[0]],
+ row: ns[i].rows[0]
+ };
+ }
+ }
+
+ for (var i = 0; i < n.length - 1; i++) {
+ if (n[i].text != null && n[i + 1].text == null && n[i].row + 1 < o.length && o[n[i].row + 1].text == null &&
+ n[i + 1] == o[n[i].row + 1]) {
+ n[i + 1] = {
+ text: n[i + 1],
+ row: n[i].row + 1
+ };
+ o[n[i].row + 1] = {
+ text: o[n[i].row + 1],
+ row: i + 1
+ };
+ }
+ }
+
+ for (var i = n.length - 1; i > 0; i--) {
+ if (n[i].text != null && n[i - 1].text == null && n[i].row > 0 && o[n[i].row - 1].text == null &&
+ n[i - 1] == o[n[i].row - 1]) {
+ n[i - 1] = {
+ text: n[i - 1],
+ row: n[i].row - 1
+ };
+ o[n[i].row - 1] = {
+ text: o[n[i].row - 1],
+ row: i - 1
+ };
+ }
+ }
+
+ return {
+ o: o,
+ n: n
+ };
+ }
+
+ return function(o, n){
+ o = o.replace(/\s+$/, '');
+ n = n.replace(/\s+$/, '');
+ var out = diff(o == "" ? [] : o.split(/\s+/), n == "" ? [] : n.split(/\s+/));
+
+ var str = "";
+
+ var oSpace = o.match(/\s+/g);
+ if (oSpace == null) {
+ oSpace = [" "];
+ }
+ else {
+ oSpace.push(" ");
+ }
+ var nSpace = n.match(/\s+/g);
+ if (nSpace == null) {
+ nSpace = [" "];
+ }
+ else {
+ nSpace.push(" ");
+ }
+
+ if (out.n.length == 0) {
+ for (var i = 0; i < out.o.length; i++) {
+ str += '' + out.o[i] + oSpace[i] + "";
+ }
+ }
+ else {
+ if (out.n[0].text == null) {
+ for (n = 0; n < out.o.length && out.o[n].text == null; n++) {
+ str += '' + out.o[n] + oSpace[n] + "";
+ }
+ }
+
+ for (var i = 0; i < out.n.length; i++) {
+ if (out.n[i].text == null) {
+ str += '' + out.n[i] + nSpace[i] + " ";
+ }
+ else {
+ var pre = "";
+
+ for (n = out.n[i].row + 1; n < out.o.length && out.o[n].text == null; n++) {
+ pre += '' + out.o[n] + oSpace[n] + "";
+ }
+ str += " " + out.n[i].text + nSpace[i] + pre;
+ }
+ }
+ }
+
+ return str;
+ };
+})();
+
+})(this);
diff --git a/app/assets/javascripts/jquery-validation/test/rules.js b/app/assets/javascripts/jquery-validation/test/rules.js
new file mode 100644
index 0000000..3eaa377
--- /dev/null
+++ b/app/assets/javascripts/jquery-validation/test/rules.js
@@ -0,0 +1,267 @@
+module("rules");
+
+test("rules() - internal - input", function() {
+ var element = $('#firstname');
+ var v = $('#testForm1').validate();
+ same( element.rules(), { required: true, minlength: 2 } );
+});
+
+test("rules(), ignore method:false", function() {
+ var element = $('#firstnamec');
+ var v = $('#testForm1clean').validate({
+ rules: {
+ firstname: { required: false, minlength: 2 }
+ }
+ });
+ same( element.rules(), { minlength: 2 } );
+});
+
+test("rules() - internal - select", function() {
+ var element = $('#meal');
+ var v = $('#testForm3').validate();
+ same( element.rules(), {required: true} );
+});
+
+test("rules() - external", function() {
+ var element = $('#text1');
+ var v = $('#form').validate({
+ rules: {
+ action: {date: true, min: 5}
+ }
+ });
+ same( element.rules(), {date: true, min: 5} );
+});
+
+test("rules() - external - complete form", function() {
+ expect(1);
+
+ var methods = $.extend({}, $.validator.methods);
+ var messages = $.extend({}, $.validator.messages);
+
+ $.validator.addMethod("verifyTest", function() {
+ ok( true, "method executed" );
+ return true;
+ });
+ var v = $('#form').validate({
+ rules: {
+ action: {verifyTest: true}
+ }
+ });
+ v.form();
+
+ $.validator.methods = methods;
+ $.validator.messages = messages;
+});
+
+test("rules() - internal - input", function() {
+ var element = $('#form8input');
+ var v = $('#testForm8').validate();
+ same( element.rules(), {required: true, number: true, rangelength: [2, 8]});
+});
+
+test("rules(), merge min/max to range, minlength/maxlength to rangelength", function() {
+ jQuery.validator.autoCreateRanges = true;
+ var v = $("#testForm1clean").validate({
+ rules: {
+ firstname: {
+ min: 5,
+ max: 12
+ },
+ lastname: {
+ minlength: 2,
+ maxlength: 8
+ }
+ }
+ });
+ same( $("#firstnamec").rules(), {range: [5, 12]});
+
+ same( $("#lastnamec").rules(), {rangelength: [2, 8]} );
+ jQuery.validator.autoCreateRanges = false;
+});
+
+test("rules(), gurantee that required is at front", function() {
+ $("#testForm1").validate();
+ var v = $("#v2").validate();
+ $("#subformRequired").validate();
+ function flatRules(element) {
+ var result = [];
+ jQuery.each($(element).rules(), function(key, value) { result.push(key) });
+ return result.join(" ");
+ }
+ equals( "required minlength", flatRules("#firstname") );
+ equals( "required maxlength minlength", flatRules("#v2-i6") );
+ equals( "required maxlength", flatRules("#co_name") );
+
+ QUnit.reset();
+ jQuery.validator.autoCreateRanges = true;
+ v = $("#v2").validate();
+ equals( "required rangelength", flatRules("#v2-i6") );
+
+ $("#subformRequired").validate({
+ rules: {
+ co_name: "required"
+ }
+ });
+ $("#co_name").removeClass();
+ equals( "required maxlength", flatRules("#co_name") );
+ jQuery.validator.autoCreateRanges = false;
+});
+
+test("rules(), evaluate dynamic parameters", function() {
+ expect(2);
+ var v = $("#testForm1clean").validate({
+ rules: {
+ firstname: {
+ min: function(element) {
+ equals( $("#firstnamec")[0], element );
+ return 12;
+ }
+ }
+ }
+ });
+ same( $("#firstnamec").rules(), {min:12});
+});
+
+test("rules(), class and attribute combinations", function() {
+
+ $.validator.addMethod("customMethod1", function() {
+ return false;
+ }, "");
+ $.validator.addMethod("customMethod2", function() {
+ return false;
+ }, "");
+ var v = $("#v2").validate({
+ rules: {
+ 'v2-i7': {
+ required: true,
+ minlength: 2,
+ customMethod: true
+ }
+ }
+ });
+ same( $("#v2-i1").rules(), { required: true });
+ same( $("#v2-i2").rules(), { required: true, email: true });
+ same( $("#v2-i3").rules(), { url: true });
+ same( $("#v2-i4").rules(), { required: true, minlength: 2 });
+ same( $("#v2-i5").rules(), { required: true, minlength: 2, maxlength: 5, customMethod1: "123" });
+ jQuery.validator.autoCreateRanges = true;
+ same( $("#v2-i5").rules(), { required: true, customMethod1: "123", rangelength: [2, 5] });
+ same( $("#v2-i6").rules(), { required: true, customMethod2: true, rangelength: [2, 5] });
+ jQuery.validator.autoCreateRanges = false;
+ same( $("#v2-i7").rules(), { required: true, minlength: 2, customMethod: true });
+
+ delete $.validator.methods.customMethod1;
+ delete $.validator.messages.customMethod1;
+ delete $.validator.methods.customMethod2;
+ delete $.validator.messages.customMethod2;
+});
+
+test("rules(), dependency checks", function() {
+ var v = $("#testForm1clean").validate({
+ rules: {
+ firstname: {
+ min: {
+ param: 5,
+ depends: function(el) {
+ return /^a/.test($(el).val());
+ }
+ }
+ },
+ lastname: {
+ max: {
+ param: 12
+ },
+ email: {
+ depends: function() { return true; }
+ }
+ }
+ }
+ });
+
+ var rules = $("#firstnamec").rules();
+ equals( 0, v.objectLength(rules) );
+
+ $("#firstnamec").val('ab');
+ same( $("#firstnamec").rules(), {min:5});
+
+ same( $("#lastnamec").rules(), {max:12, email:true});
+});
+
+test("rules(), add and remove", function() {
+ $.validator.addMethod("customMethod1", function() {
+ return false;
+ }, "");
+ $("#v2").validate();
+ var removedAttrs = $("#v2-i5").removeClass("required").removeAttrs("minlength maxlength");
+ same( $("#v2-i5").rules(), { customMethod1: "123" });
+
+ $("#v2-i5").addClass("required").attr(removedAttrs);
+ same( $("#v2-i5").rules(), { required: true, minlength: 2, maxlength: 5, customMethod1: "123" });
+
+ $("#v2-i5").addClass("email").attr({min: 5});
+ same( $("#v2-i5").rules(), { required: true, email: true, minlength: 2, maxlength: 5, min: 5, customMethod1: "123" });
+
+ $("#v2-i5").removeClass("required email").removeAttrs("minlength maxlength customMethod1 min");
+ same( $("#v2-i5").rules(), {});
+
+ delete $.validator.methods.customMethod1;
+ delete $.validator.messages.customMethod1;
+});
+
+test("rules(), add and remove static rules", function() {
+ var v = $("#testForm1clean").validate({
+ rules: {
+ firstname: "required date"
+ }
+ });
+ same( $("#firstnamec").rules(), { required: true, date: true } );
+
+ $("#firstnamec").rules("remove", "date")
+ same( $("#firstnamec").rules(), { required: true } );
+ $("#firstnamec").rules("add", "email");
+ same( $("#firstnamec").rules(), { required: true, email: true } );
+
+ $("#firstnamec").rules("remove", "required");
+ same( $("#firstnamec").rules(), { email: true } );
+
+ same( $("#firstnamec").rules("remove"), { email: true } );
+ same( $("#firstnamec").rules(), { } );
+
+ $("#firstnamec").rules("add", "required email");
+ same( $("#firstnamec").rules(), { required: true, email: true } );
+
+
+ same( $("#lastnamec").rules(), {} );
+ $("#lastnamec").rules("add", "required");
+ $("#lastnamec").rules("add", {
+ minlength: 2
+ });
+ same( $("#lastnamec").rules(), { required: true, minlength: 2 } );
+
+
+ var removedRules = $("#lastnamec").rules("remove", "required email");
+ same( $("#lastnamec").rules(), { minlength: 2 } );
+ $("#lastnamec").rules("add", removedRules);
+ same( $("#lastnamec").rules(), { required: true, minlength: 2 } );
+});
+
+test("rules(), add messages", function() {
+ $("#firstnamec").attr("title", null);
+ var v = $("#testForm1clean").validate({
+ rules: {
+ firstname: "required"
+ }
+ });
+ $("#testForm1clean").valid();
+ $("#firstnamec").valid();
+ same( v.settings.messages.firstname, undefined );
+
+ $("#firstnamec").rules("add", {
+ messages: {
+ required: "required"
+ }
+ });
+
+ $("#firstnamec").valid();
+ same( v.errorList[0] && v.errorList[0].message, "required" );
+});
diff --git a/app/assets/javascripts/jquery-validation/test/selects/index.html b/app/assets/javascripts/jquery-validation/test/selects/index.html
new file mode 100644
index 0000000..8bc8f8f
--- /dev/null
+++ b/app/assets/javascripts/jquery-validation/test/selects/index.html
@@ -0,0 +1,444 @@
+
+
+
+
+
+Fun with jQuery
+
+
+
+
+
+
+
+
+
+
+
+Mission:
+
+
+CODE
+
+
+
+
+
+ Select One
+
+ United States
+ Canada
+ ----------
+ Afghanistan
+ Albania
+ Algeria
+
+ American Samoa
+ Andorra
+ Angola
+ Anguilla
+ Antarctica
+ Antigua and Barbuda
+
+ Argentina
+ Armenia
+ Aruba
+ Australia
+ Austria
+ Azerbaidjan
+
+ Bahamas
+ Bahrain
+ Bangladesh
+ Barbados
+ Belarus
+ Belgium
+
+ Belize
+ Benin
+ Bermuda
+ Bhutan
+ Bolivia
+ Bosnia-Herzegovina
+
+ Botswana
+ Bouvet Island
+ Brazil
+ British Indian Ocean Territory
+ Brunei Darussalam
+ Bulgaria
+
+ Burkina Faso
+ Burundi
+ Cambodia
+ Cameroon
+ Cape Verde
+ Cayman Islands
+
+ Central African Republic
+ Chad
+ Chile
+ China
+ Christmas Island
+ Cocos (Keeling) Islands
+
+ Colombia
+ Comoros
+ Congo
+ Cook Islands
+ Costa Rica
+ Croatia
+
+ Cuba
+ Cyprus
+ Czech Republic
+ Denmark
+ Djibouti
+ Dominica
+
+ Dominican Republic
+ East Timor
+ Ecuador
+ Egypt
+ El Salvador
+ Equatorial Guinea
+
+ Eritrea
+ Estonia
+ Ethiopia
+ Falkland Islands
+ Faroe Islands
+ Fiji
+
+ Finland
+ Former Czechoslovakia
+ Former USSR
+ France
+ France (European Territory)
+ French Guyana
+
+ French Southern Territories
+ Gabon
+ Gambia
+ Georgia
+ Germany
+ Ghana
+
+ Gibraltar
+ Great Britain
+ Greece
+ Greenland
+ Grenada
+ Guadeloupe (French)
+
+ Guam (USA)
+ Guatemala
+ Guinea
+ Guinea Bissau
+ Guyana
+ Haiti
+
+ Heard and McDonald Islands
+ Honduras
+ Hong Kong
+ Hungary
+ Iceland
+ India
+
+ Indonesia
+ International
+ Iran
+ Iraq
+ Ireland
+ Israel
+
+ Italy
+ Ivory Coast (Cote D'Ivoire)
+ Jamaica
+ Japan
+ Jordan
+ Kazakhstan
+
+ Kenya
+ Kiribati
+ Kuwait
+ Kyrgyzstan
+ Laos
+ Latvia
+
+ Lebanon
+ Lesotho
+ Liberia
+ Libya
+ Liechtenstein
+ Lithuania
+
+ Luxembourg
+ Macau
+ Macedonia
+ Madagascar
+ Malawi
+ Malaysia
+
+ Maldives
+ Mali
+ Malta
+ Marshall Islands
+ Martinique (French)
+ Mauritania
+
+ Mauritius
+ Mayotte
+ Mexico
+ Micronesia
+ Moldavia
+ Monaco
+
+ Mongolia
+ Montserrat
+ Morocco
+ Mozambique
+ Myanmar
+ Namibia
+
+ Nauru
+ Nepal
+ Netherlands
+ Netherlands Antilles
+ Neutral Zone
+ New Caledonia (French)
+
+ New Zealand
+ Nicaragua
+ Niger
+ Nigeria
+ Niue
+ Norfolk Island
+
+ North Korea
+ Northern Mariana Islands
+ Norway
+ Oman
+ Pakistan
+ Palau
+
+ Panama
+ Papua New Guinea
+ Paraguay
+ Peru
+ Philippines
+ Pitcairn Island
+
+ Poland
+ Polynesia (French)
+ Portugal
+ Puerto Rico
+ Qatar
+ Reunion (French)
+
+ Romania
+ Russian Federation
+ Rwanda
+ S. Georgia & S. Sandwich Isls.
+ Saint Helena
+ Saint Kitts & Nevis Anguilla
+
+ Saint Lucia
+ Saint Pierre and Miquelon
+ Saint Tome (Sao Tome) and Principe
+ Saint Vincent & Grenadines
+ Samoa
+ San Marino
+
+ Saudi Arabia
+ Senegal
+ Seychelles
+ Sierra Leone
+ Singapore
+ Slovak Republic
+
+ Slovenia
+ Solomon Islands
+ Somalia
+ South Africa
+ South Korea
+ Spain
+
+ Sri Lanka
+ Sudan
+ Suriname
+ Svalbard and Jan Mayen Islands
+ Swaziland
+ Sweden
+
+ Switzerland
+ Syria
+ Tadjikistan
+ Taiwan
+ Tanzania
+ Thailand
+
+ Togo
+ Tokelau
+ Tonga
+ Trinidad and Tobago
+ Tunisia
+ Turkey
+
+ Turkmenistan
+ Turks and Caicos Islands
+ Tuvalu
+ Uganda
+ Ukraine
+ United Arab Emirates
+
+ United Kingdom
+ Uruguay
+ USA Military
+ USA Minor Outlying Islands
+ Uzbekistan
+ Vanuatu
+
+ Vatican City State
+ Venezuela
+ Vietnam
+ Virgin Islands (British)
+ Virgin Islands (USA)
+ Wallis and Futuna Islands
+
+ Western Sahara
+ Yemen
+ Yugoslavia
+ Zaire
+ Zambia
+ Zimbabwe
+
+
+
+
+
+
+ Select One
+ Alberta
+ British Columbia
+ Manitoba
+
+ New Brunswick
+ Newfoundland
+ Northwest Territories
+ Nova Scotia
+ Nunavut
+ Ontario
+
+ Prince Edward Island
+ Quebec
+ Saskatchewan
+ Yukon Territory
+
+ Alaska
+ Alabama
+
+ Arkansas
+ Arizona
+ California
+ Colorado
+ Connecticut
+ District of Columbia
+
+ Delaware
+ Florida
+ Georgia
+ Hawaii
+ Iowa
+ Idaho
+
+ Illinois
+ Indiana
+ Kansas
+ Kentucky
+ Louisiana
+ Massachusetts
+
+ Maryland
+ Maine
+ Michigan
+ Minnesota
+ Missouri
+ Mississippi
+
+ Montana
+ North Carolina
+ North Dakota
+ Nebraska
+ New Hampshire
+ New Jersey
+
+ New Mexico
+ Nevada
+ New York
+ Ohio
+ Oklahoma
+ Oregon
+
+ Pennsylvania
+ Puerto Rico
+ Rhode Island
+ South Carolina
+ South Dakota
+ Tennessee
+
+ Texas
+ Utah
+ Virginia
+ Vermont
+ Washington
+ Wisconsin
+
+ West Virginia
+ Wyoming
+
+
+
+
+
+
+
+
diff --git a/app/assets/javascripts/jquery-validation/test/tabs.html b/app/assets/javascripts/jquery-validation/test/tabs.html
new file mode 100644
index 0000000..2fb8a00
--- /dev/null
+++ b/app/assets/javascripts/jquery-validation/test/tabs.html
@@ -0,0 +1,78 @@
+
+
+
+
+Test for jQuery validate() plugin
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/assets/javascripts/jquery-validation/test/test.js b/app/assets/javascripts/jquery-validation/test/test.js
new file mode 100644
index 0000000..8a8611b
--- /dev/null
+++ b/app/assets/javascripts/jquery-validation/test/test.js
@@ -0,0 +1,1124 @@
+window.sessionStorage && sessionStorage.clear();
+jQuery.validator.defaults.debug = true;
+
+module("validator");
+
+test("Constructor", function() {
+ var v1 = $("#testForm1").validate();
+ var v2 = $("#testForm1").validate();
+ equals( v1, v2, "Calling validate() multiple times must return the same validator instance" );
+ equals( v1.elements().length, 3, "validator elements" );
+});
+
+test("validate() without elements, with non-form elements", function() {
+ $("#doesn'texist").validate();
+});
+
+test("valid() plugin method", function() {
+ var form = $("#userForm");
+ form.validate();
+ ok ( !form.valid(), "Form isn't valid yet" );
+ var input = $("#username");
+ ok ( !input.valid(), "Input isn't valid either" );
+ input.val("Hello world");
+ ok ( form.valid(), "Form is now valid" );
+ ok ( input.valid(), "Input is valid, too" );
+});
+
+test("valid() plugin method", function() {
+ var form = $("#testForm1");
+ form.validate();
+ var inputs = form.find("input");
+ ok( !inputs.valid(), "all invalid" );
+ inputs.not(":first").val("ok");
+ ok( !inputs.valid(), "just one invalid" );
+ inputs.val("ok");
+ ok( inputs.valid(), "all valid" );
+});
+
+test("valid() plugin method, special handling for checkable groups", function() {
+ // rule is defined on first checkbox, must apply to others, too
+ var checkable = $("#checkable2");
+ ok( !checkable.valid(), "must be invalid, not checked yet" );
+ checkable.attr("checked", true);
+ ok( checkable.valid(), "valid, is now checked" );
+ checkable.attr("checked", false);
+ ok( !checkable.valid(), "invalid again" );
+ $("#checkable3").attr("checked", true);
+ ok( checkable.valid(), "valid, third box is checked" );
+});
+
+test("addMethod", function() {
+ expect( 3 );
+ $.validator.addMethod("hi", function(value) {
+ return value == "hi";
+ }, "hi me too");
+ var method = $.validator.methods.hi,
+ e = $('#text1')[0];
+ ok( !method(e.value, e), "Invalid" );
+ e.value = "hi";
+ ok( method(e.value, e), "Invalid" );
+ ok( jQuery.validator.messages.hi == "hi me too", "Check custom message" );
+});
+
+test("addMethod2", function() {
+ expect( 4 );
+ $.validator.addMethod("complicatedPassword", function(value, element, param) {
+ return this.optional(element) || /\D/.test(value) && /\d/.test(value)
+ }, "Your password must contain at least one number and one letter");
+ var v = jQuery("#form").validate({
+ rules: {
+ action: { complicatedPassword: true }
+ }
+ });
+ var rule = $.validator.methods.complicatedPassword,
+ e = $('#text1')[0];
+ e.value = "";
+ ok( v.element(e) === undefined, "Rule is optional, valid" );
+ equals( 0, v.size() );
+ e.value = "ko";
+ ok( !v.element(e), "Invalid, doesn't contain one of the required characters" );
+ e.value = "ko1";
+ ok( v.element(e) );
+});
+
+test("form(): simple", function() {
+ expect( 2 );
+ var form = $('#testForm1')[0];
+ var v = $(form).validate();
+ ok( !v.form(), 'Invalid form' );
+ $('#firstname').val("hi");
+ $('#lastname').val("hi");
+ ok( v.form(), 'Valid form' );
+});
+
+test("form(): checkboxes: min/required", function() {
+ expect( 3 );
+ var form = $('#testForm6')[0];
+ var v = $(form).validate();
+ ok( !v.form(), 'Invalid form' );
+ $('#form6check1').attr("checked", true);
+ ok( !v.form(), 'Invalid form' );
+ $('#form6check2').attr("checked", true);
+ ok( v.form(), 'Valid form' );
+});
+test("form(): selects: min/required", function() {
+ expect( 3 );
+ var form = $('#testForm7')[0];
+ var v = $(form).validate();
+ ok( !v.form(), 'Invalid form' );
+ $("#optionxa").attr("selected", true);
+ ok( !v.form(), 'Invalid form' );
+ $("#optionxb").attr("selected", true);
+ ok( v.form(), 'Valid form' );
+});
+
+test("form(): with equalTo", function() {
+ expect( 2 );
+ var form = $('#testForm5')[0];
+ var v = $(form).validate();
+ ok( !v.form(), 'Invalid form' );
+ $('#x1, #x2').val("hi");
+ ok( v.form(), 'Valid form' );
+});
+
+test("check(): simple", function() {
+ expect( 3 );
+ var element = $('#firstname')[0];
+ var v = $('#testForm1').validate();
+ ok( v.size() == 0, 'No errors yet' );
+ v.check(element);
+ ok( v.size() == 1, 'error exists' );
+ v.errorList = [];
+ $('#firstname').val("hi");
+ v.check(element);
+ ok( !v.size() == 1, 'No more errors' );
+});
+
+test("hide(): input", function() {
+ expect( 3 );
+ var errorLabel = $('#errorFirstname');
+ var element = $('#firstname')[0];
+ element.value ="bla";
+ var v = $('#testForm1').validate();
+ errorLabel.show();
+ ok( errorLabel.is(":visible"), "Error label visible before validation" );
+ ok( v.element(element) );
+ ok( errorLabel.is(":hidden"), "Error label not visible after validation" );
+});
+
+test("hide(): radio", function() {
+ expect( 2 );
+ var errorLabel = $('#agreeLabel');
+ var element = $('#agb')[0];
+ element.checked = true;
+ var v = $('#testForm2').validate({ errorClass: "xerror" });
+ errorLabel.show();
+ ok( errorLabel.is(":visible"), "Error label visible after validation" );
+ v.element(element);
+ ok( errorLabel.is(":hidden"), "Error label not visible after hiding it" );
+});
+
+test("hide(): errorWrapper", function() {
+ expect(2);
+ var errorLabel = $('#errorWrapper');
+ var element = $('#meal')[0];
+ element.selectedIndex = 1;
+
+ errorLabel.show();
+ ok( errorLabel.is(":visible"), "Error label visible after validation" );
+ var v = $('#testForm3').validate({ wrapper: "li", errorLabelContainer: $("#errorContainer") });
+ v.element(element);
+ ok( errorLabel.is(":hidden"), "Error label not visible after hiding it" );
+});
+
+test("hide(): container", function() {
+ expect(4);
+ var errorLabel = $('#errorContainer');
+ var element = $('#testForm3')[0];
+ var v = $('#testForm3').validate({ errorWrapper: "li", errorContainer: $("#errorContainer") });
+ v.form();
+ ok( errorLabel.is(":visible"), "Error label visible after validation" );
+ $('#meal')[0].selectedIndex = 1;
+ v.form();
+ ok( errorLabel.is(":hidden"), "Error label not visible after hiding it" );
+ $('#meal')[0].selectedIndex = -1;
+ v.element("#meal");
+ ok( errorLabel.is(":visible"), "Error label visible after validation" );
+ $('#meal')[0].selectedIndex = 1;
+ v.element("#meal");
+ ok( errorLabel.is(":hidden"), "Error label not visible after hiding it" );
+});
+
+test("valid()", function() {
+ expect(4);
+ var errorList = [{name:"meal",message:"foo", element:$("#meal")[0]}];
+ var v = $('#testForm3').validate();
+ ok( v.valid(), "No errors, must be valid" );
+ v.errorList = errorList;
+ ok( !v.valid(), "One error, must be invalid" );
+ QUnit.reset();
+ v = $('#testForm3').validate({ submitHandler: function() {
+ ok( false, "Submit handler was called" );
+ }});
+ ok( v.valid(), "No errors, must be valid and returning true, even with the submit handler" );
+ v.errorList = errorList;
+ ok( !v.valid(), "One error, must be invalid, no call to submit handler" );
+});
+
+test("submitHandler keeps submitting button", function() {
+ $("#userForm").validate({
+ debug: true,
+ submitHandler: function(form) {
+ // dunno how to test this better; this tests the implementation that uses a hidden input
+ var hidden = $(form).find("input:hidden")[0];
+ same(hidden.value, button.value)
+ same(hidden.name, button.name)
+ }
+ });
+ $("#username").val("bla");
+ var button = $("#userForm :submit")[0]
+ $(button).triggerHandler("click");
+ $("#userForm").submit();
+});
+
+test("showErrors()", function() {
+ expect( 4 );
+ var errorLabel = $('#errorFirstname').hide();
+ var element = $('#firstname')[0];
+ var v = $('#testForm1').validate();
+ ok( errorLabel.is(":hidden") );
+ equals( 0, $("label.error[for=lastname]").size() );
+ v.showErrors({"firstname": "required", "lastname": "bla"});
+ equals( true, errorLabel.is(":visible") );
+ equals( true, $("label.error[for=lastname]").is(":visible") );
+});
+
+test("showErrors(), allow empty string and null as default message", function() {
+ $("#userForm").validate({
+ rules: {
+ username: {
+ required: true,
+ minlength: 3
+ }
+ },
+ messages: {
+ username: {
+ required: "",
+ minlength: "too short"
+ }
+ }
+ });
+ ok( !$("#username").valid() );
+ equals( "", $("label.error[for=username]").text() );
+
+ $("#username").val("ab");
+ ok( !$("#username").valid() );
+ equals( "too short", $("label.error[for=username]").text() );
+
+ $("#username").val("abc");
+ ok( $("#username").valid() );
+ ok( $("label.error[for=username]").is(":hidden") );
+});
+
+test("showErrors() - external messages", function() {
+ expect( 4 );
+ var methods = $.extend({}, $.validator.methods);
+ var messages = $.extend({}, $.validator.messages);
+ $.validator.addMethod("foo", function() { return false; });
+ $.validator.addMethod("bar", function() { return false; });
+ equals( 0, $("#testForm4 label.error[for=f1]").size() );
+ equals( 0, $("#testForm4 label.error[for=f2]").size() );
+ var form = $('#testForm4')[0];
+ var v = $(form).validate({
+ messages: {
+ f1: "Please!",
+ f2: "Wohoo!"
+ }
+ });
+ v.form();
+ equals( $("#testForm4 label.error[for=f1]").text(), "Please!" );
+ equals( $("#testForm4 label.error[for=f2]").text(), "Wohoo!" );
+
+ $.validator.methods = methods;
+ $.validator.messages = messages;
+});
+
+test("showErrors() - custom handler", function() {
+ expect(5);
+ var v = $('#testForm1').validate({
+ showErrors: function(errorMap, errorList) {
+ equals( v, this );
+ equals( v.errorList, errorList );
+ equals( v.errorMap, errorMap );
+ equals( "buga", errorMap.firstname );
+ equals( "buga", errorMap.lastname );
+ }
+ });
+ v.form();
+});
+
+test("option: (un)highlight, default", function() {
+ $("#testForm1").validate();
+ var e = $("#firstname")
+ ok( !e.hasClass("error") );
+ ok( !e.hasClass("valid") );
+ e.valid()
+ ok( e.hasClass("error") );
+ ok( !e.hasClass("valid") );
+ e.val("hithere").valid()
+ ok( !e.hasClass("error") );
+ ok( e.hasClass("valid") );
+});
+
+test("option: (un)highlight, nothing", function() {
+ expect(3);
+ $("#testForm1").validate({
+ highlight: false,
+ unhighlight: false
+ });
+ var e = $("#firstname")
+ ok( !e.hasClass("error") );
+ e.valid()
+ ok( !e.hasClass("error") );
+ e.valid()
+ ok( !e.hasClass("error") );
+});
+
+test("option: (un)highlight, custom", function() {
+ expect(5);
+ $("#testForm1clean").validate({
+ highlight: function(element, errorClass) {
+ equals( "invalid", errorClass );
+ $(element).hide();
+ },
+ unhighlight: function(element, errorClass) {
+ equals( "invalid", errorClass )
+ $(element).show();
+ },
+ errorClass: "invalid",
+ rules: {
+ firstname: "required"
+ }
+ });
+ var e = $("#firstnamec")
+ ok( e.is(":visible") );
+ e.valid()
+ ok( !e.is(":visible") );
+ e.val("hithere").valid()
+ ok( e.is(":visible") );
+});
+
+test("option: (un)highlight, custom2", function() {
+ expect(6);
+ $("#testForm1").validate({
+ highlight: function(element, errorClass) {
+ $(element).addClass(errorClass);
+ $(element.form).find("label[for=" + element.id + "]").addClass(errorClass);
+ },
+ unhighlight: function(element, errorClass) {
+ $(element).removeClass(errorClass);
+ $(element.form).find("label[for=" + element.id + "]").removeClass(errorClass);
+ },
+ errorClass: "invalid"
+ });
+ var e = $("#firstname")
+ var l = $("#errorFirstname")
+ ok( !e.is(".invalid") );
+ ok( !l.is(".invalid") );
+ e.valid()
+ ok( e.is(".invalid") );
+ ok( l.is(".invalid") );
+ e.val("hithere").valid()
+ ok( !e.is(".invalid") );
+ ok( !l.is(".invalid") );
+});
+
+test("option: focusCleanup default false", function() {
+ var form = $("#userForm")
+ form.validate();
+ form.valid();
+ ok( form.is(":has(label.error[for=username]:visible)"));
+ $("#username").focus();
+ ok( form.is(":has(label.error[for=username]:visible)"));
+});
+
+test("option: focusCleanup true", function() {
+ var form = $("#userForm")
+ form.validate({
+ focusCleanup: true
+ });
+ form.valid();
+ ok( form.is(":has(label.error[for=username]:visible)") );
+ $("#username").focus().trigger("focusin");
+ ok( !form.is(":has(label.error[for=username]:visible)") );
+});
+
+test("option: focusCleanup with wrapper", function() {
+ var form = $("#userForm")
+ form.validate({
+ focusCleanup: true,
+ wrapper: "span"
+ });
+ form.valid();
+ ok( form.is(":has(span:visible:has(label.error[for=username]))") );
+ $("#username").focus().trigger("focusin");
+ ok( !form.is(":has(span:visible:has(label.error[for=username]))") );
+});
+
+test("elements() order", function() {
+ var container = $("#orderContainer");
+ var v = $("#elementsOrder").validate({
+ errorLabelContainer: container,
+ wrap: "li"
+ });
+ deepEqual( v.elements().map(function() {
+ return $(this).attr("id");
+ }).get(), ["order1", "order2", "order3", "order4", "order5", "order6"], "elements must be in document order" );
+ v.form();
+ deepEqual( container.children().map(function() {
+ return $(this).attr("for");
+ }).get(), ["order1", "order2", "order3", "order4", "order5", "order6"], "labels in error container must be in document order" );
+});
+
+test("defaultMessage(), empty title is ignored", function() {
+ var v = $("#userForm").validate();
+ equals( "This field is required.", v.defaultMessage($("#username")[0], "required") );
+});
+
+test("formatAndAdd", function() {
+ expect(4);
+ var v = $("#form").validate();
+ var fakeElement = { form: $("#form")[0], name: "bar" };
+ v.formatAndAdd(fakeElement, {method: "maxlength", parameters: 2})
+ equals( "Please enter no more than 2 characters.", v.errorList[0].message );
+ equals( "bar", v.errorList[0].element.name );
+
+ v.formatAndAdd(fakeElement, {method: "range", parameters:[2,4]})
+ equals( "Please enter a value between 2 and 4.", v.errorList[1].message );
+
+ v.formatAndAdd(fakeElement, {method: "range", parameters:[0,4]})
+ equals( "Please enter a value between 0 and 4.", v.errorList[2].message );
+});
+
+test("formatAndAdd2", function() {
+ expect(3);
+ var v = $("#form").validate();
+ var fakeElement = { form: $("#form")[0], name: "bar" };
+ jQuery.validator.messages.test1 = function(param, element) {
+ equals( v, this );
+ equals( 0, param );
+ return "element " + element.name + " is not valid";
+ };
+ v.formatAndAdd(fakeElement, {method: "test1", parameters: 0})
+ equals( "element bar is not valid", v.errorList[0].message );
+});
+
+test("formatAndAdd, auto detect substitution string", function() {
+ var v = $("#testForm1clean").validate({
+ rules: {
+ firstname: {
+ required: true,
+ rangelength: [5, 10]
+ }
+ },
+ messages: {
+ firstname: {
+ rangelength: "at least ${0}, up to {1}"
+ }
+ }
+ });
+ $("#firstnamec").val("abc");
+ v.form();
+ equals( "at least 5, up to 10", v.errorList[0].message );
+})
+
+test("error containers, simple", function() {
+ expect(14);
+ var container = $("#simplecontainer");
+ var v = $("#form").validate({
+ errorLabelContainer: container,
+ showErrors: function() {
+ container.find("h3").html( jQuery.validator.format("There are {0} errors in your form.", this.size()) );
+ this.defaultShowErrors();
+ }
+ });
+
+ v.prepareForm();
+ ok( v.valid(), "form is valid" );
+ equals( 0, container.find("label").length, "There should be no error labels" );
+ equals( "", container.find("h3").html() );
+
+ v.prepareForm();
+ v.errorList = [{message:"bar", element: {name:"foo"}}, {message: "necessary", element: {name:"required"}}];
+ ok( !v.valid(), "form is not valid after adding errors manually" );
+ v.showErrors();
+ equals( container.find("label").length, 2, "There should be two error labels" );
+ ok( container.is(":visible"), "Check that the container is visible" );
+ container.find("label").each(function() {
+ ok( $(this).is(":visible"), "Check that each label is visible" );
+ });
+ equals( "There are 2 errors in your form.", container.find("h3").html() );
+
+ v.prepareForm();
+ ok( v.valid(), "form is valid after a reset" );
+ v.showErrors();
+ equals( container.find("label").length, 2, "There should still be two error labels" );
+ ok( container.is(":hidden"), "Check that the container is hidden" );
+ container.find("label").each(function() {
+ ok( $(this).is(":hidden"), "Check that each label is hidden" );
+ });
+});
+
+test("error containers, with labelcontainer I", function() {
+ expect(16);
+ var container = $("#container"),
+ labelcontainer = $("#labelcontainer");
+ var v = $("#form").validate({
+ errorContainer: container,
+ errorLabelContainer: labelcontainer,
+ wrapper: "li"
+ });
+
+ ok( v.valid(), "form is valid" );
+ equals( 0, container.find("label").length, "There should be no error labels in the container" );
+ equals( 0, labelcontainer.find("label").length, "There should be no error labels in the labelcontainer" );
+ equals( 0, labelcontainer.find("li").length, "There should be no lis labels in the labelcontainer" );
+
+ v.errorList = [{message:"bar", element: {name:"foo"}}, {name: "required", message: "necessary", element: {name:"required"}}];
+ ok( !v.valid(), "form is not valid after adding errors manually" );
+ v.showErrors();
+ equals( 0, container.find("label").length, "There should be no error label in the container" );
+ equals( 2, labelcontainer.find("label").length, "There should be two error labels in the labelcontainer" );
+ equals( 2, labelcontainer.find("li").length, "There should be two error lis in the labelcontainer" );
+ ok( container.is(":visible"), "Check that the container is visible" );
+ ok( labelcontainer.is(":visible"), "Check that the labelcontainer is visible" );
+ var labels = labelcontainer.find("label").each(function() {
+ ok( $(this).is(":visible"), "Check that each label is visible1" );
+ equals( "li", $(this).parent()[0].tagName.toLowerCase(), "Check that each label is wrapped in an li" );
+ ok( $(this).parent("li").is(":visible"), "Check that each parent li is visible" );
+ });
+});
+
+test("errorcontainer, show/hide only on submit", function() {
+ expect(14);
+ var container = $("#container");
+ var labelContainer = $("#labelcontainer");
+ var v = $("#testForm1").bind("invalid-form.validate", function() {
+ ok( true, "invalid-form event triggered called" );
+ }).validate({
+ errorContainer: container,
+ errorLabelContainer: labelContainer,
+ showErrors: function() {
+ container.html( jQuery.validator.format("There are {0} errors in your form.", this.numberOfInvalids()) );
+ ok( true, "showErrors called" );
+ this.defaultShowErrors();
+ }
+ });
+ equals( "", container.html(), "must be empty" );
+ equals( "", labelContainer.html(), "must be empty" );
+ // validate whole form, both showErrors and invalidHandler must be called once
+ // preferably invalidHandler first, showErrors second
+ ok( !v.form(), "invalid form" );
+ equals( 2, labelContainer.find("label").length );
+ equals( "There are 2 errors in your form.", container.html() );
+ ok( labelContainer.is(":visible"), "must be visible" );
+ ok( container.is(":visible"), "must be visible" );
+
+ $("#firstname").val("hix").keyup();
+ $("#testForm1").triggerHandler("keyup", [jQuery.event.fix({ type: "keyup", target: $("#firstname")[0] })]);
+ equals( 1, labelContainer.find("label:visible").length );
+ equals( "There are 1 errors in your form.", container.html() );
+
+ $("#lastname").val("abc");
+ ok( v.form(), "Form now valid, trigger showErrors but not invalid-form" );
+});
+
+test("option invalidHandler", function() {
+ expect(1);
+ var v = $("#testForm1clean").validate({
+ invalidHandler: function() {
+ ok( true, "invalid-form event triggered called" );
+ start();
+ }
+ });
+ $("#usernamec").val("asdf").rules("add", { required: true, remote: "users.php" });
+ stop();
+ $("#testForm1clean").submit();
+});
+
+test("findByName()", function() {
+ deepEqual( new $.validator({}, document.getElementById("form")).findByName(document.getElementById("radio1").name).get(), $("#form").find("[name=radio1]").get() );
+});
+
+test("focusInvalid()", function() {
+ // TODO when using custom focusin, this is triggered just once
+ // TODO when using 1.4 focusin, triggered twice; fix once not testing against 1.3 anymore
+ // expect(1);
+ var inputs = $("#testForm1 input").focus(function() {
+ equals( inputs[0], this, "focused first element" );
+ });
+ var v = $("#testForm1").validate();
+ v.form();
+ v.focusInvalid();
+});
+
+test("findLastActive()", function() {
+ expect(3);
+ var v = $("#testForm1").validate();
+ ok( !v.findLastActive() );
+ v.form();
+ v.focusInvalid();
+ equals( v.findLastActive(), $("#firstname")[0] );
+ var lastActive = $("#lastname").trigger("focus").trigger("focusin")[0];
+ equals( v.lastActive, lastActive );
+});
+
+test("validating multiple checkboxes with 'required'", function() {
+ expect(3);
+ var checkboxes = $("#form input[name=check3]").attr("checked", false);
+ equal(checkboxes.size(), 5);
+ var v = $("#form").validate({
+ rules: {
+ check3: "required"
+ }
+ });
+ v.form();
+ equal(v.size(), 1);
+ checkboxes.filter(":last").attr("checked", true);
+ v.form();
+ equal(v.size(), 0);
+});
+
+test("dynamic form", function() {
+ var counter = 0;
+ function add() {
+ $(" ").appendTo("#testForm2");
+ }
+ function errors(expected, message) {
+ equals(expected, v.size(), message );
+ }
+ var v = $("#testForm2").validate();
+ v.form();
+ errors(1);
+ add();
+ v.form();
+ errors(2);
+ add();
+ v.form();
+ errors(3);
+ $("#testForm2 input[name=list1]").remove();
+ v.form();
+ errors(2);
+ add();
+ v.form();
+ errors(3);
+ $("#testForm2 input[name^=list]").remove();
+ v.form();
+ errors(1);
+ $("#agb").attr("disabled", true);
+ v.form();
+ errors(0);
+ $("#agb").attr("disabled", false);
+ v.form();
+ errors(1);
+});
+
+test("idOrName()", function() {
+ expect(4);
+ var v = $("#testForm1").validate();
+ equals( "form8input", v.idOrName( $("#form8input")[0] ) );
+ equals( "check", v.idOrName( $("#form6check1")[0] ) );
+ equals( "agree", v.idOrName( $("#agb")[0] ) );
+ equals( "button", v.idOrName( $("#form :button")[0] ) );
+});
+
+test("resetForm()", function() {
+ function errors(expected, message) {
+ equals(expected, v.size(), message );
+ }
+ var v = $("#testForm1").validate();
+ v.form();
+ errors(2);
+ $("#firstname").val("hiy");
+ v.resetForm();
+ errors(0);
+ equals("", $("#firstname").val(), "form plugin is included, therefor resetForm must also reset inputs, not only errors");
+});
+
+test("message from title", function() {
+ var v = $("#withTitle").validate();
+ v.checkForm();
+ equals(v.errorList[0].message, "fromtitle", "title not used");
+});
+
+test("ignoreTitle", function() {
+ var v = $("#withTitle").validate({ignoreTitle:true});
+ v.checkForm();
+ equals(v.errorList[0].message, $.validator.messages["required"], "title used when it should have been ignored");
+});
+
+test("ajaxSubmit", function() {
+ expect(1);
+ stop();
+ $("#user").val("Peter");
+ $("#password").val("foobar");
+ jQuery("#signupForm").validate({
+ submitHandler: function(form) {
+ jQuery(form).ajaxSubmit({
+ success: function(response) {
+ equals("Hi Peter, welcome back.", response);
+ start();
+ }
+ });
+ }
+ });
+ jQuery("#signupForm").triggerHandler("submit");
+});
+
+
+module("misc");
+
+test("success option", function() {
+ expect(7);
+ equals( "", $("#firstname").val() );
+ var v = $("#testForm1").validate({
+ success: "valid"
+ });
+ var label = $("#testForm1 label");
+ ok( label.is(".error") );
+ ok( !label.is(".valid") );
+ v.form();
+ ok( label.is(".error") );
+ ok( !label.is(".valid") );
+ $("#firstname").val("hi");
+ v.form();
+ ok( label.is(".error") );
+ ok( label.is(".valid") );
+});
+
+test("success option2", function() {
+ expect(5);
+ equals( "", $("#firstname").val() );
+ var v = $("#testForm1").validate({
+ success: "valid"
+ });
+ var label = $("#testForm1 label");
+ ok( label.is(".error") );
+ ok( !label.is(".valid") );
+ $("#firstname").val("hi");
+ v.form();
+ ok( label.is(".error") );
+ ok( label.is(".valid") );
+});
+
+test("success option3", function() {
+ expect(5);
+ equals( "", $("#firstname").val() );
+ $("#errorFirstname").remove();
+ var v = $("#testForm1").validate({
+ success: "valid"
+ });
+ equals( 0, $("#testForm1 label").size() );
+ $("#firstname").val("hi");
+ v.form();
+ var labels = $("#testForm1 label");
+ equals( 3, labels.size() );
+ ok( labels.eq(0).is(".valid") );
+ ok( !labels.eq(1).is(".valid") );
+});
+
+test("successlist", function() {
+ var v = $("#form").validate({ success: "xyz" });
+ v.form();
+ equals(0, v.successList.length);
+});
+
+test("success isn't called for optional elements", function() {
+ expect(4);
+ equals( "", $("#firstname").removeClass().val() );
+ $("#something").remove();
+ $("#lastname").remove();
+ $("#errorFirstname").remove();
+ var v = $("#testForm1").validate({
+ success: function() {
+ ok( false, "don't call success for optional elements!" );
+ },
+ rules: {
+ firstname: "email"
+ }
+ });
+ equals( 0, $("#testForm1 label").size() );
+ v.form();
+ equals( 0, $("#testForm1 label").size() );
+ $("#firstname").valid();
+ equals( 0, $("#testForm1 label").size() );
+});
+
+test("all rules are evaluated even if one returns a dependency-mistmatch", function() {
+ expect(6);
+ equals( "", $("#firstname").removeClass().val() );
+ $("#lastname").remove();
+ $("#errorFirstname").remove();
+ $.validator.addMethod("custom1", function() {
+ ok( true, "custom method must be evaluated" );
+ return true;
+ }, "");
+ var v = $("#testForm1").validate({
+ rules: {
+ firstname: {email:true, custom1: true}
+ }
+ });
+ equals( 0, $("#testForm1 label").size() );
+ v.form();
+ equals( 0, $("#testForm1 label").size() );
+ $("#firstname").valid();
+ equals( 0, $("#testForm1 label").size() );
+
+ delete $.validator.methods.custom1;
+ delete $.validator.messages.custom1;
+});
+
+test("messages", function() {
+ var m = jQuery.validator.messages;
+ equals( "Please enter no more than 0 characters.", m.maxlength(0) );
+ equals( "Please enter at least 1 characters.", m.minlength(1) );
+ equals( "Please enter a value between 1 and 2 characters long.", m.rangelength([1, 2]) );
+ equals( "Please enter a value less than or equal to 1.", m.max(1) );
+ equals( "Please enter a value greater than or equal to 0.", m.min(0) );
+ equals( "Please enter a value between 1 and 2.", m.range([1, 2]) );
+});
+
+test("jQuery.validator.format", function() {
+ equals( "Please enter a value between 0 and 1.", jQuery.validator.format("Please enter a value between {0} and {1}.", 0, 1) );
+ equals( "0 is too fast! Enter a value smaller then 0 and at least -15", jQuery.validator.format("{0} is too fast! Enter a value smaller then {0} and at least {1}", 0, -15) );
+ var template = jQuery.validator.format("{0} is too fast! Enter a value smaller then {0} and at least {1}");
+ equals( "0 is too fast! Enter a value smaller then 0 and at least -15", template(0, -15) );
+ template = jQuery.validator.format("Please enter a value between {0} and {1}.");
+ equals( "Please enter a value between 1 and 2.", template([1, 2]) );
+});
+
+test("option: ignore", function() {
+ var v = $("#testForm1").validate({
+ ignore: "[name=lastname]"
+ });
+ v.form();
+ equals( 1, v.size() );
+});
+
+test("option: subformRequired", function() {
+ jQuery.validator.addMethod("billingRequired", function(value, element) {
+ if ($("#bill_to_co").is(":checked"))
+ return $(element).parents("#subform").length;
+ return !this.optional(element);
+ }, "");
+ var v = $("#subformRequired").validate();
+ v.form();
+ equals( 1, v.size() );
+ $("#bill_to_co").attr("checked", false);
+ v.form();
+ equals( 2, v.size() );
+
+ delete $.validator.methods.billingRequired;
+ delete $.validator.messages.billingRequired;
+});
+
+module("expressions");
+
+test("expression: :blank", function() {
+ var e = $("#lastname")[0];
+ equals( 1, $(e).filter(":blank").length );
+ e.value = " ";
+ equals( 1, $(e).filter(":blank").length );
+ e.value = " "
+ equals( 1, $(e).filter(":blank").length );
+ e.value= " a ";
+ equals( 0, $(e).filter(":blank").length );
+});
+
+test("expression: :filled", function() {
+ var e = $("#lastname")[0];
+ equals( 0, $(e).filter(":filled").length );
+ e.value = " ";
+ equals( 0, $(e).filter(":filled").length );
+ e.value = " "
+ equals( 0, $(e).filter(":filled").length );
+ e.value= " a ";
+ equals( 1, $(e).filter(":filled").length );
+});
+
+test("expression: :unchecked", function() {
+ var e = $("#check2")[0];
+ equals( 1, $(e).filter(":unchecked").length );
+ e.checked = true;
+ equals( 0, $(e).filter(":unchecked").length );
+ e.checked = false;
+ equals( 1, $(e).filter(":unchecked").length );
+});
+
+module("events");
+
+test("validate on blur", function() {
+ function errors(expected, message) {
+ equals(v.size(), expected, message );
+ }
+ function labels(expected) {
+ equals(v.errors().filter(":visible").size(), expected);
+ }
+ function blur(target) {
+ target.trigger("blur").trigger("focusout");
+ }
+ $("#errorFirstname").hide();
+ var e = $("#firstname");
+ var v = $("#testForm1").validate();
+ $("#something").val("");
+ blur(e);
+ errors(0, "No value yet, required is skipped on blur");
+ labels(0);
+ e.val("h");
+ blur(e);
+ errors(1, "Required was ignored, but as something was entered, check other rules, minlength isn't met");
+ labels(1);
+ e.val("hh");
+ blur(e);
+ errors(0, "All is fine");
+ labels(0);
+ e.val("");
+ v.form();
+ errors(3, "Submit checks all rules, both fields invalid");
+ labels(3);
+ blur(e);
+ errors(1, "Blurring the field results in emptying the error list first, then checking the invalid field: its still invalid, don't remove the error" );
+ labels(3);
+ e.val("h");
+ blur(e);
+ errors(1, "Entering a single character fulfills required, but not minlength: 2, still invalid");
+ labels(3);
+ e.val("hh");
+ blur(e);
+ errors(0, "Both required and minlength are met, no errors left");
+ labels(2);
+});
+
+test("validate on keyup", function() {
+ function errors(expected, message) {
+ equals(expected, v.size(), message );
+ }
+ function keyup(target) {
+ target.trigger("keyup");
+ }
+ var e = $("#firstname");
+ var v = $("#testForm1").validate();
+ keyup(e);
+ errors(0, "No value, no errors");
+ e.val("a");
+ keyup(e);
+ errors(0, "Value, but not invalid");
+ e.val("");
+ v.form();
+ errors(2, "Both invalid");
+ keyup(e);
+ errors(1, "Only one field validated, still invalid");
+ e.val("hh");
+ keyup(e);
+ errors(0, "Not invalid anymore");
+ e.val("h");
+ keyup(e);
+ errors(1, "Field didn't loose focus, so validate again, invalid");
+ e.val("hh");
+ keyup(e);
+ errors(0, "Valid");
+});
+
+test("validate on not keyup, only blur", function() {
+ function errors(expected, message) {
+ equals(expected, v.size(), message );
+ }
+ var e = $("#firstname");
+ var v = $("#testForm1").validate({
+ onkeyup: false
+ });
+ errors(0);
+ e.val("a");
+ e.trigger("keyup");
+ e.keyup();
+ errors(0);
+ e.trigger("blur").trigger("focusout");
+ errors(1);
+});
+
+test("validate on keyup and blur", function() {
+ function errors(expected, message) {
+ equals(expected, v.size(), message );
+ }
+ var e = $("#firstname");
+ var v = $("#testForm1").validate();
+ errors(0);
+ e.val("a");
+ e.trigger("keyup");
+ errors(0);
+ e.trigger("blur").trigger("focusout");
+ errors(1);
+});
+
+test("validate email on keyup and blur", function() {
+ function errors(expected, message) {
+ equals(expected, v.size(), message );
+ }
+ var e = $("#firstname");
+ var v = $("#testForm1").validate();
+ v.form();
+ errors(2);
+ e.val("a");
+ e.trigger("keyup");
+ errors(1);
+ e.val("aa");
+ e.trigger("keyup");
+ errors(0);
+});
+
+test("validate checkbox on click", function() {
+ function errors(expected, message) {
+ equals(expected, v.size(), message );
+ }
+ function trigger(element) {
+ element.click();
+ // triggered click event screws up checked-state in 1.4
+ element.valid();
+ }
+ var e = $("#check2");
+ var v = $("#form").validate({
+ rules: {
+ check2: "required"
+ }
+ });
+ trigger(e);
+ errors(0);
+ trigger(e);
+ equals( false, v.form() );
+ errors(1);
+ trigger(e);
+ errors(0);
+ trigger(e);
+ errors(1);
+});
+
+test("validate multiple checkbox on click", function() {
+ function errors(expected, message) {
+ equals(expected, v.size(), message );
+ }
+ function trigger(element) {
+ element.click();
+ // triggered click event screws up checked-state in 1.4
+ element.valid();
+ }
+ var e1 = $("#check1").attr("checked", false);
+ var e2 = $("#check1b");
+ var v = $("#form").validate({
+ rules: {
+ check: {
+ required: true,
+ minlength: 2
+ }
+ }
+ });
+ trigger(e1);
+ trigger(e2);
+ errors(0);
+ trigger(e2);
+ equals( false, v.form() );
+ errors(1);
+ trigger(e2);
+ errors(0);
+ trigger(e2);
+ errors(1);
+});
+
+test("validate radio on click", function() {
+ function errors(expected, message) {
+ equals(expected, v.size(), message );
+ }
+ function trigger(element) {
+ element.click();
+ // triggered click event screws up checked-state in 1.4
+ element.valid();
+ }
+ var e1 = $("#radio1");
+ var e2 = $("#radio1a");
+ var v = $("#form").validate({
+ rules: {
+ radio1: "required"
+ }
+ });
+ errors(0);
+ equals( false, v.form() );
+ errors(1);
+ trigger(e2);
+ errors(0);
+ trigger(e1);
+ errors(0);
+});
+
+module("ajax");
+
+test("check the serverside script works", function() {
+ stop();
+ $.getJSON("users.php", {value: 'asd'}, function(response) {
+ ok( response, "yet available" );
+ $.getJSON("users.php", {username: "asdf"}, function(response) {
+ ok( !response, "already taken" );
+ start();
+ });
+ });
+});
+
+test("check the serverside script works2", function() {
+ stop();
+ $.getJSON("users2.php", {value: 'asd'}, function(response) {
+ ok( response, "yet available" );
+ $.getJSON("users.php", {username: "asdf"}, function(response) {
+ ok( !response, "asdf is already taken, please try something else" );
+ start();
+ });
+ });
+});
diff --git a/app/assets/javascripts/jquery-validation/test/users.php b/app/assets/javascripts/jquery-validation/test/users.php
new file mode 100644
index 0000000..08b8fd5
--- /dev/null
+++ b/app/assets/javascripts/jquery-validation/test/users.php
@@ -0,0 +1,11 @@
+
\ No newline at end of file
diff --git a/app/assets/javascripts/jquery-validation/test/users2.php b/app/assets/javascripts/jquery-validation/test/users2.php
new file mode 100644
index 0000000..3a185cd
--- /dev/null
+++ b/app/assets/javascripts/jquery-validation/test/users2.php
@@ -0,0 +1,11 @@
+
\ No newline at end of file
diff --git a/app/assets/javascripts/jquery-validation/todo b/app/assets/javascripts/jquery-validation/todo
new file mode 100644
index 0000000..702a496
--- /dev/null
+++ b/app/assets/javascripts/jquery-validation/todo
@@ -0,0 +1,172 @@
+1.3
+---
+
+- checkout datejs.com for a proper date implementation -> complete but very heavy parser, currently overkill
+
+- rewrite required-method to use jQuery's extended val() on selects[/radios/checkboxes]
+- consider a field-validator object that encapsulates a single element and all methods working on it
+- export API browser
+- add example/support for other URL schemes like svn://....
+- document min/max/range methods for checkboxes/selects
+
+/**
+ * Return false, if the element is
+ *
+ * - some kind of text input and its value is too short
+ *
+ * - a set of checkboxes has not enough boxes checked
+ *
+ * - a select and has not enough options selected
+ *
+ * Works with all kind of text inputs, checkboxes and select.
+ *
+ * @example
+ * @desc Declares an optional input element with at least 5 characters (or none at all).
+ *
+ * @example
+ * @desc Declares an input element that must have at least 5 characters.
+ *
+ * @example
+ * Spam
+ *
+ *
+ * Spam via E-Mail
+ *
+ *
+ *
+ * Spam via Phone
+ *
+ *
+ *
+ * Spam via Mail
+ *
+ * Please select at least two types of spam.
+ *
+ * @desc Specifies a group of checkboxes. To validate, at least two checkboxes must be selected.
+ *
+ * @param Number min
+ * @name jQuery.validator.methods.minLength
+ * @type Boolean
+ * @cat Plugins/Validate/Methods
+ */
+
+ /**
+ * Return false, if the element is
+ *
+ * - some kind of text input and its value is too short or too long
+ *
+ * - a set of checkboxes has not enough or too many boxes checked
+ *
+ * - a select and has not enough or too many options selected
+ *
+ * Works with all kind of text inputs, checkboxes and selects.
+ *
+ * @example
+ * @desc Declares an optional input element with at least 3 and at most 5 characters (or none at all).
+ *
+ * @example
+ * @desc Declares an input element that must have at least 3 and at most 5 characters.
+ *
+ * @example
+ * Mercedes SL
+ * Opel Corsa
+ * VW Polo
+ * Titanic Skoda
+ *
+ * @desc Specifies a select that must have at least two but no more than three options selected.
+ *
+ * @param Array min/max
+ * @name jQuery.validator.methods.rangeLength
+ * @type Boolean
+ * @cat Plugins/Validate/Methods
+ */
+
+- document numberOfInvalids and hideErrors
+
+/**
+ * Returns the number of invalid elements in the form.
+ *
+ * @example $("#myform").validate({
+ * showErrors: function() {
+ * $("#summary").html("Your form contains " + this.numberOfInvalids() + " errors, see details below.");
+ * this.defaultShowErrors();
+ * }
+ * });
+ * @desc Specifies a custom showErrors callback that updates the number of invalid elements each
+ * time the form or a single element is validated.
+ *
+ * @name jQuery.validator.prototype.numberOfInvalids
+ * @type Number
+ */
+
+ /**
+ * Hides all error messages in this form.
+ *
+ * @example var validator = $("#myform").validate();
+ * $(".cancel").click(function() {
+ * validator.hideErrors();
+ * });
+ * @desc Specifies a custom showErrors callback that updates the number of invalid elements each
+ * time the form or a single element is validated.
+ *
+ * @name jQuery.validator.prototype.hideErrors
+ */
+
+- remove deprecated methods
+
+- css references
+ - http://test5.caribmedia.com/CSS/Secrets/members/michiel/floating-forms.html
+ - http://paularmstrongdesigns.com/projects/awesomeform/
+ - http://dnevnikeklektika.com/uni-form/
+
+- consider validation on page load, disabling required-checks
+- completely rework showErrors: manually settings errors is currently extremely flawed and utterly useless, eg. errors disappear if some other validation is triggered
+- add custom event to remote validation for adding more parameters
+
+- document focusInvalid()
+- document validation lifecycle: setup (add event handlers), run validation (prepare form, validate elements, display errors/submit form)
+ -> show where the user can hook in via callbacks
+
+- AND depedency: specify multiple expressions as an array
+
+- add custom events for form and elements instead of more callbacks (additional options/callbacks)
+ - beforeValidation: Callback, called before doing any validation
+ - beforeSubmit: Callback, called before submitting the form (default submit or calling submitHandler, if specified)
+
+- animations!!
+- ajax validation:
+ - in combination with autocomplete (mustmatch company name, fill out address details, validate required)
+ - validate zip code in comparison to address, if match and state is missing, fill out state
+- strong password check/integration: http://phiras.wordpress.com/2007/04/08/password-strength-meter-a-jquery-plugin/
+
+- stop firefox password manager to popup before validation - check mozilla bug tracker?
+
+- overload addMethod with a Option-variant:
+$.validator.addMethod({
+ name: "custom",
+ message: "blablabla",
+ parameteres: false,
+ handler: function() { ... }
+});
+
+ Examples:
+ - wordpress comment form, make it a drop-in method
+ - ajaxForm() integration
+ - ajaxSubmit with rules-option, more/less options to ajaxSubmit
+ - watermark integration http://digitalbush.com/projects/watermark-input-plugin
+ - datepicker integration
+ - timepicker integration ( http://labs.perifer.se/timedatepicker/ )
+ - integration with CakePHP ( https://trac.cakephp.org/ticket/2359 )
+ - integration with tabs: http://www.netix.sk/forms/test.html
+ - intergration with rich-text-editors (FCKEditor, Codepress)
+ http://www.fyneworks.com/jquery/FCKEditor/
+
+2.0
+---
+- attachValidation, removeValidation, validate (with UI), valid (without UI)
+- (re)move current addMethod implementation
+- move rules plugin option
+- move metadata support
+- make validate method chainable
+ -> provide an accessor for the validator if necessary at all
+- move a few default methods to additionals, eg. dateXXX, creditcard, definitely accept
\ No newline at end of file
diff --git a/app/assets/javascripts/jquery-validation/version.txt b/app/assets/javascripts/jquery-validation/version.txt
new file mode 100644
index 0000000..27f9cd3
--- /dev/null
+++ b/app/assets/javascripts/jquery-validation/version.txt
@@ -0,0 +1 @@
+1.8.0
diff --git a/app/assets/javascripts/jquery.ba-bbq.min.js b/app/assets/javascripts/jquery.ba-bbq.min.js
new file mode 100644
index 0000000..bcbf248
--- /dev/null
+++ b/app/assets/javascripts/jquery.ba-bbq.min.js
@@ -0,0 +1,18 @@
+/*
+ * jQuery BBQ: Back Button & Query Library - v1.2.1 - 2/17/2010
+ * http://benalman.com/projects/jquery-bbq-plugin/
+ *
+ * Copyright (c) 2010 "Cowboy" Ben Alman
+ * Dual licensed under the MIT and GPL licenses.
+ * http://benalman.com/about/license/
+ */
+(function($,p){var i,m=Array.prototype.slice,r=decodeURIComponent,a=$.param,c,l,v,b=$.bbq=$.bbq||{},q,u,j,e=$.event.special,d="hashchange",A="querystring",D="fragment",y="elemUrlAttr",g="location",k="href",t="src",x=/^.*\?|#.*$/g,w=/^.*\#/,h,C={};function E(F){return typeof F==="string"}function B(G){var F=m.call(arguments,1);return function(){return G.apply(this,F.concat(m.call(arguments)))}}function n(F){return F.replace(/^[^#]*#?(.*)$/,"$1")}function o(F){return F.replace(/(?:^[^?#]*\?([^#]*).*$)?.*/,"$1")}function f(H,M,F,I,G){var O,L,K,N,J;if(I!==i){K=F.match(H?/^([^#]*)\#?(.*)$/:/^([^#?]*)\??([^#]*)(#?.*)/);J=K[3]||"";if(G===2&&E(I)){L=I.replace(H?w:x,"")}else{N=l(K[2]);I=E(I)?l[H?D:A](I):I;L=G===2?I:G===1?$.extend({},I,N):$.extend({},N,I);L=a(L);if(H){L=L.replace(h,r)}}O=K[1]+(H?"#":L||!K[1]?"?":"")+L+J}else{O=M(F!==i?F:p[g][k])}return O}a[A]=B(f,0,o);a[D]=c=B(f,1,n);c.noEscape=function(G){G=G||"";var F=$.map(G.split(""),encodeURIComponent);h=new RegExp(F.join("|"),"g")};c.noEscape(",/");$.deparam=l=function(I,F){var H={},G={"true":!0,"false":!1,"null":null};$.each(I.replace(/\+/g," ").split("&"),function(L,Q){var K=Q.split("="),P=r(K[0]),J,O=H,M=0,R=P.split("]["),N=R.length-1;if(/\[/.test(R[0])&&/\]$/.test(R[N])){R[N]=R[N].replace(/\]$/,"");R=R.shift().split("[").concat(R);N=R.length-1}else{N=0}if(K.length===2){J=r(K[1]);if(F){J=J&&!isNaN(J)?+J:J==="undefined"?i:G[J]!==i?G[J]:J}if(N){for(;M<=N;M++){P=R[M]===""?O.length:R[M];O=O[P]=M ').hide().insertAfter("body")[0].contentWindow;q=function(){return a(n.document[c][l])};o=function(u,s){if(u!==s){var t=n.document;t.open().close();t[c].hash="#"+u}};o(a())}}m.start=function(){if(r){return}var t=a();o||p();(function s(){var v=a(),u=q(t);if(v!==t){o(t=v,u);$(i).trigger(d)}else{if(u!==t){i[c][l]=i[c][l].replace(/#.*/,"")+"#"+u}}r=setTimeout(s,$[d+"Delay"])})()};m.stop=function(){if(!n){r&&clearTimeout(r);r=0}};return m})()})(jQuery,this);
\ No newline at end of file
diff --git a/app/assets/javascripts/jquery.ba-hashchange.js b/app/assets/javascripts/jquery.ba-hashchange.js
new file mode 100644
index 0000000..47105f4
--- /dev/null
+++ b/app/assets/javascripts/jquery.ba-hashchange.js
@@ -0,0 +1,390 @@
+/*!
+ * jQuery hashchange event - v1.3 - 7/21/2010
+ * http://benalman.com/projects/jquery-hashchange-plugin/
+ *
+ * Copyright (c) 2010 "Cowboy" Ben Alman
+ * Dual licensed under the MIT and GPL licenses.
+ * http://benalman.com/about/license/
+ */
+
+// Script: jQuery hashchange event
+//
+// *Version: 1.3, Last updated: 7/21/2010*
+//
+// Project Home - http://benalman.com/projects/jquery-hashchange-plugin/
+// GitHub - http://github.com/cowboy/jquery-hashchange/
+// Source - http://github.com/cowboy/jquery-hashchange/raw/master/jquery.ba-hashchange.js
+// (Minified) - http://github.com/cowboy/jquery-hashchange/raw/master/jquery.ba-hashchange.min.js (0.8kb gzipped)
+//
+// About: License
+//
+// Copyright (c) 2010 "Cowboy" Ben Alman,
+// Dual licensed under the MIT and GPL licenses.
+// http://benalman.com/about/license/
+//
+// About: Examples
+//
+// These working examples, complete with fully commented code, illustrate a few
+// ways in which this plugin can be used.
+//
+// hashchange event - http://benalman.com/code/projects/jquery-hashchange/examples/hashchange/
+// document.domain - http://benalman.com/code/projects/jquery-hashchange/examples/document_domain/
+//
+// About: Support and Testing
+//
+// Information about what version or versions of jQuery this plugin has been
+// tested with, what browsers it has been tested in, and where the unit tests
+// reside (so you can test it yourself).
+//
+// jQuery Versions - 1.2.6, 1.3.2, 1.4.1, 1.4.2
+// Browsers Tested - Internet Explorer 6-8, Firefox 2-4, Chrome 5-6, Safari 3.2-5,
+// Opera 9.6-10.60, iPhone 3.1, Android 1.6-2.2, BlackBerry 4.6-5.
+// Unit Tests - http://benalman.com/code/projects/jquery-hashchange/unit/
+//
+// About: Known issues
+//
+// While this jQuery hashchange event implementation is quite stable and
+// robust, there are a few unfortunate browser bugs surrounding expected
+// hashchange event-based behaviors, independent of any JavaScript
+// window.onhashchange abstraction. See the following examples for more
+// information:
+//
+// Chrome: Back Button - http://benalman.com/code/projects/jquery-hashchange/examples/bug-chrome-back-button/
+// Firefox: Remote XMLHttpRequest - http://benalman.com/code/projects/jquery-hashchange/examples/bug-firefox-remote-xhr/
+// WebKit: Back Button in an Iframe - http://benalman.com/code/projects/jquery-hashchange/examples/bug-webkit-hash-iframe/
+// Safari: Back Button from a different domain - http://benalman.com/code/projects/jquery-hashchange/examples/bug-safari-back-from-diff-domain/
+//
+// Also note that should a browser natively support the window.onhashchange
+// event, but not report that it does, the fallback polling loop will be used.
+//
+// About: Release History
+//
+// 1.3 - (7/21/2010) Reorganized IE6/7 Iframe code to make it more
+// "removable" for mobile-only development. Added IE6/7 document.title
+// support. Attempted to make Iframe as hidden as possible by using
+// techniques from http://www.paciellogroup.com/blog/?p=604. Added
+// support for the "shortcut" format $(window).hashchange( fn ) and
+// $(window).hashchange() like jQuery provides for built-in events.
+// Renamed jQuery.hashchangeDelay to and
+// lowered its default value to 50. Added
+// and properties plus document-domain.html
+// file to address access denied issues when setting document.domain in
+// IE6/7.
+// 1.2 - (2/11/2010) Fixed a bug where coming back to a page using this plugin
+// from a page on another domain would cause an error in Safari 4. Also,
+// IE6/7 Iframe is now inserted after the body (this actually works),
+// which prevents the page from scrolling when the event is first bound.
+// Event can also now be bound before DOM ready, but it won't be usable
+// before then in IE6/7.
+// 1.1 - (1/21/2010) Incorporated document.documentMode test to fix IE8 bug
+// where browser version is incorrectly reported as 8.0, despite
+// inclusion of the X-UA-Compatible IE=EmulateIE7 meta tag.
+// 1.0 - (1/9/2010) Initial Release. Broke out the jQuery BBQ event.special
+// window.onhashchange functionality into a separate plugin for users
+// who want just the basic event & back button support, without all the
+// extra awesomeness that BBQ provides. This plugin will be included as
+// part of jQuery BBQ, but also be available separately.
+
+(function($,window,undefined){
+ '$:nomunge'; // Used by YUI compressor.
+
+ // Reused string.
+ var str_hashchange = 'hashchange',
+
+ // Method / object references.
+ doc = document,
+ fake_onhashchange,
+ special = $.event.special,
+
+ // Does the browser support window.onhashchange? Note that IE8 running in
+ // IE7 compatibility mode reports true for 'onhashchange' in window, even
+ // though the event isn't supported, so also test document.documentMode.
+ doc_mode = doc.documentMode,
+ supports_onhashchange = 'on' + str_hashchange in window && ( doc_mode === undefined || doc_mode > 7 );
+
+ // Get location.hash (or what you'd expect location.hash to be) sans any
+ // leading #. Thanks for making this necessary, Firefox!
+ function get_fragment( url ) {
+ url = url || location.href;
+ return '#' + url.replace( /^[^#]*#?(.*)$/, '$1' );
+ };
+
+ // Method: jQuery.fn.hashchange
+ //
+ // Bind a handler to the window.onhashchange event or trigger all bound
+ // window.onhashchange event handlers. This behavior is consistent with
+ // jQuery's built-in event handlers.
+ //
+ // Usage:
+ //
+ // > jQuery(window).hashchange( [ handler ] );
+ //
+ // Arguments:
+ //
+ // handler - (Function) Optional handler to be bound to the hashchange
+ // event. This is a "shortcut" for the more verbose form:
+ // jQuery(window).bind( 'hashchange', handler ). If handler is omitted,
+ // all bound window.onhashchange event handlers will be triggered. This
+ // is a shortcut for the more verbose
+ // jQuery(window).trigger( 'hashchange' ). These forms are described in
+ // the section.
+ //
+ // Returns:
+ //
+ // (jQuery) The initial jQuery collection of elements.
+
+ // Allow the "shortcut" format $(elem).hashchange( fn ) for binding and
+ // $(elem).hashchange() for triggering, like jQuery does for built-in events.
+ $.fn[ str_hashchange ] = function( fn ) {
+ return fn ? this.bind( str_hashchange, fn ) : this.trigger( str_hashchange );
+ };
+
+ // Property: jQuery.fn.hashchange.delay
+ //
+ // The numeric interval (in milliseconds) at which the
+ // polling loop executes. Defaults to 50.
+
+ // Property: jQuery.fn.hashchange.domain
+ //
+ // If you're setting document.domain in your JavaScript, and you want hash
+ // history to work in IE6/7, not only must this property be set, but you must
+ // also set document.domain BEFORE jQuery is loaded into the page. This
+ // property is only applicable if you are supporting IE6/7 (or IE8 operating
+ // in "IE7 compatibility" mode).
+ //
+ // In addition, the property must be set to the
+ // path of the included "document-domain.html" file, which can be renamed or
+ // modified if necessary (note that the document.domain specified must be the
+ // same in both your main JavaScript as well as in this file).
+ //
+ // Usage:
+ //
+ // jQuery.fn.hashchange.domain = document.domain;
+
+ // Property: jQuery.fn.hashchange.src
+ //
+ // If, for some reason, you need to specify an Iframe src file (for example,
+ // when setting document.domain as in ), you can
+ // do so using this property. Note that when using this property, history
+ // won't be recorded in IE6/7 until the Iframe src file loads. This property
+ // is only applicable if you are supporting IE6/7 (or IE8 operating in "IE7
+ // compatibility" mode).
+ //
+ // Usage:
+ //
+ // jQuery.fn.hashchange.src = 'path/to/file.html';
+
+ $.fn[ str_hashchange ].delay = 50;
+ /*
+ $.fn[ str_hashchange ].domain = null;
+ $.fn[ str_hashchange ].src = null;
+ */
+
+ // Event: hashchange event
+ //
+ // Fired when location.hash changes. In browsers that support it, the native
+ // HTML5 window.onhashchange event is used, otherwise a polling loop is
+ // initialized, running every milliseconds to
+ // see if the hash has changed. In IE6/7 (and IE8 operating in "IE7
+ // compatibility" mode), a hidden Iframe is created to allow the back button
+ // and hash-based history to work.
+ //
+ // Usage as described in :
+ //
+ // > // Bind an event handler.
+ // > jQuery(window).hashchange( function(e) {
+ // > var hash = location.hash;
+ // > ...
+ // > });
+ // >
+ // > // Manually trigger the event handler.
+ // > jQuery(window).hashchange();
+ //
+ // A more verbose usage that allows for event namespacing:
+ //
+ // > // Bind an event handler.
+ // > jQuery(window).bind( 'hashchange', function(e) {
+ // > var hash = location.hash;
+ // > ...
+ // > });
+ // >
+ // > // Manually trigger the event handler.
+ // > jQuery(window).trigger( 'hashchange' );
+ //
+ // Additional Notes:
+ //
+ // * The polling loop and Iframe are not created until at least one handler
+ // is actually bound to the 'hashchange' event.
+ // * If you need the bound handler(s) to execute immediately, in cases where
+ // a location.hash exists on page load, via bookmark or page refresh for
+ // example, use jQuery(window).hashchange() or the more verbose
+ // jQuery(window).trigger( 'hashchange' ).
+ // * The event can be bound before DOM ready, but since it won't be usable
+ // before then in IE6/7 (due to the necessary Iframe), recommended usage is
+ // to bind it inside a DOM ready handler.
+
+ // Override existing $.event.special.hashchange methods (allowing this plugin
+ // to be defined after jQuery BBQ in BBQ's source code).
+ special[ str_hashchange ] = $.extend( special[ str_hashchange ], {
+
+ // Called only when the first 'hashchange' event is bound to window.
+ setup: function() {
+ // If window.onhashchange is supported natively, there's nothing to do..
+ if ( supports_onhashchange ) { return false; }
+
+ // Otherwise, we need to create our own. And we don't want to call this
+ // until the user binds to the event, just in case they never do, since it
+ // will create a polling loop and possibly even a hidden Iframe.
+ $( fake_onhashchange.start );
+ },
+
+ // Called only when the last 'hashchange' event is unbound from window.
+ teardown: function() {
+ // If window.onhashchange is supported natively, there's nothing to do..
+ if ( supports_onhashchange ) { return false; }
+
+ // Otherwise, we need to stop ours (if possible).
+ $( fake_onhashchange.stop );
+ }
+
+ });
+
+ // fake_onhashchange does all the work of triggering the window.onhashchange
+ // event for browsers that don't natively support it, including creating a
+ // polling loop to watch for hash changes and in IE 6/7 creating a hidden
+ // Iframe to enable back and forward.
+ fake_onhashchange = (function(){
+ var self = {},
+ timeout_id,
+
+ // Remember the initial hash so it doesn't get triggered immediately.
+ last_hash = get_fragment(),
+
+ fn_retval = function(val){ return val; },
+ history_set = fn_retval,
+ history_get = fn_retval;
+
+ // Start the polling loop.
+ self.start = function() {
+ timeout_id || poll();
+ };
+
+ // Stop the polling loop.
+ self.stop = function() {
+ timeout_id && clearTimeout( timeout_id );
+ timeout_id = undefined;
+ };
+
+ // This polling loop checks every $.fn.hashchange.delay milliseconds to see
+ // if location.hash has changed, and triggers the 'hashchange' event on
+ // window when necessary.
+ function poll() {
+ var hash = get_fragment(),
+ history_hash = history_get( last_hash );
+
+ if ( hash !== last_hash ) {
+ history_set( last_hash = hash, history_hash );
+
+ $(window).trigger( str_hashchange );
+
+ } else if ( history_hash !== last_hash ) {
+ location.href = location.href.replace( /#.*/, '' ) + history_hash;
+ }
+
+ timeout_id = setTimeout( poll, $.fn[ str_hashchange ].delay );
+ };
+
+ // vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
+ // vvvvvvvvvvvvvvvvvvv REMOVE IF NOT SUPPORTING IE6/7/8 vvvvvvvvvvvvvvvvvvv
+ // vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
+ $.browser.msie && !supports_onhashchange && (function(){
+ // Not only do IE6/7 need the "magical" Iframe treatment, but so does IE8
+ // when running in "IE7 compatibility" mode.
+
+ var iframe,
+ iframe_src;
+
+ // When the event is bound and polling starts in IE 6/7, create a hidden
+ // Iframe for history handling.
+ self.start = function(){
+ if ( !iframe ) {
+ iframe_src = $.fn[ str_hashchange ].src;
+ iframe_src = iframe_src && iframe_src + get_fragment();
+
+ // Create hidden Iframe. Attempt to make Iframe as hidden as possible
+ // by using techniques from http://www.paciellogroup.com/blog/?p=604.
+ iframe = $('').hide()
+
+ // When Iframe has completely loaded, initialize the history and
+ // start polling.
+ .one( 'load', function(){
+ iframe_src || history_set( get_fragment() );
+ poll();
+ })
+
+ // Load Iframe src if specified, otherwise nothing.
+ .attr( 'src', iframe_src || 'javascript:0' )
+
+ // Append Iframe after the end of the body to prevent unnecessary
+ // initial page scrolling (yes, this works).
+ .insertAfter( 'body' )[0].contentWindow;
+
+ // Whenever `document.title` changes, update the Iframe's title to
+ // prettify the back/next history menu entries. Since IE sometimes
+ // errors with "Unspecified error" the very first time this is set
+ // (yes, very useful) wrap this with a try/catch block.
+ doc.onpropertychange = function(){
+ try {
+ if ( event.propertyName === 'title' ) {
+ iframe.document.title = doc.title;
+ }
+ } catch(e) {}
+ };
+
+ }
+ };
+
+ // Override the "stop" method since an IE6/7 Iframe was created. Even
+ // if there are no longer any bound event handlers, the polling loop
+ // is still necessary for back/next to work at all!
+ self.stop = fn_retval;
+
+ // Get history by looking at the hidden Iframe's location.hash.
+ history_get = function() {
+ return get_fragment( iframe.location.href );
+ };
+
+ // Set a new history item by opening and then closing the Iframe
+ // document, *then* setting its location.hash. If document.domain has
+ // been set, update that as well.
+ history_set = function( hash, history_hash ) {
+ var iframe_doc = iframe.document,
+ domain = $.fn[ str_hashchange ].domain;
+
+ if ( hash !== history_hash ) {
+ // Update Iframe with any initial `document.title` that might be set.
+ iframe_doc.title = doc.title;
+
+ // Opening the Iframe's document after it has been closed is what
+ // actually adds a history entry.
+ iframe_doc.open();
+
+ // Set document.domain for the Iframe document as well, if necessary.
+ domain && iframe_doc.write( '' );
+
+ 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);
diff --git a/app/assets/javascripts/jquery.cookie.js b/app/assets/javascripts/jquery.cookie.js
new file mode 100644
index 0000000..6df1fac
--- /dev/null
+++ b/app/assets/javascripts/jquery.cookie.js
@@ -0,0 +1,96 @@
+/**
+ * Cookie plugin
+ *
+ * Copyright (c) 2006 Klaus Hartl (stilbuero.de)
+ * Dual licensed under the MIT and GPL licenses:
+ * http://www.opensource.org/licenses/mit-license.php
+ * http://www.gnu.org/licenses/gpl.html
+ *
+ */
+
+/**
+ * Create a cookie with the given name and value and other optional parameters.
+ *
+ * @example $.cookie('the_cookie', 'the_value');
+ * @desc Set the value of a cookie.
+ * @example $.cookie('the_cookie', 'the_value', { expires: 7, path: '/', domain: 'jquery.com', secure: true });
+ * @desc Create a cookie with all available options.
+ * @example $.cookie('the_cookie', 'the_value');
+ * @desc Create a session cookie.
+ * @example $.cookie('the_cookie', null);
+ * @desc Delete a cookie by passing null as value. Keep in mind that you have to use the same path and domain
+ * used when the cookie was set.
+ *
+ * @param String name The name of the cookie.
+ * @param String value The value of the cookie.
+ * @param Object options An object literal containing key/value pairs to provide optional cookie attributes.
+ * @option Number|Date expires Either an integer specifying the expiration date from now on in days or a Date object.
+ * If a negative value is specified (e.g. a date in the past), the cookie will be deleted.
+ * If set to null or omitted, the cookie will be a session cookie and will not be retained
+ * when the the browser exits.
+ * @option String path The value of the path atribute of the cookie (default: path of page that created the cookie).
+ * @option String domain The value of the domain attribute of the cookie (default: domain of page that created the cookie).
+ * @option Boolean secure If true, the secure attribute of the cookie will be set and the cookie transmission will
+ * require a secure protocol (like HTTPS).
+ * @type undefined
+ *
+ * @name $.cookie
+ * @cat Plugins/Cookie
+ * @author Klaus Hartl/klaus.hartl@stilbuero.de
+ */
+
+/**
+ * Get the value of a cookie with the given name.
+ *
+ * @example $.cookie('the_cookie');
+ * @desc Get the value of a cookie.
+ *
+ * @param String name The name of the cookie.
+ * @return The value of the cookie.
+ * @type String
+ *
+ * @name $.cookie
+ * @cat Plugins/Cookie
+ * @author Klaus Hartl/klaus.hartl@stilbuero.de
+ */
+jQuery.cookie = function(name, value, options) {
+ if (typeof value != 'undefined') { // name and value given, set cookie
+ 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(); // use expires attribute, max-age is not supported by IE
+ }
+ // CAUTION: Needed to parenthesize options.path and options.domain
+ // in the following expressions, otherwise they evaluate to undefined
+ // in the packed version for some reason...
+ 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 { // only name given, get cookie
+ var cookieValue = null;
+ if (document.cookie && document.cookie != '') {
+ var cookies = document.cookie.split(';');
+ for (var i = 0; i < cookies.length; i++) {
+ var cookie = jQuery.trim(cookies[i]);
+ // Does this cookie string begin with the name we want?
+ if (cookie.substring(0, name.length + 1) == (name + '=')) {
+ cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
+ break;
+ }
+ }
+ }
+ return cookieValue;
+ }
+};
\ No newline at end of file
diff --git a/app/assets/javascripts/jquery.cycle.all.min.js b/app/assets/javascripts/jquery.cycle.all.min.js
new file mode 100644
index 0000000..ebb4955
--- /dev/null
+++ b/app/assets/javascripts/jquery.cycle.all.min.js
@@ -0,0 +1,27 @@
+/*
+ * jQuery Cycle Plugin (with Transition Definitions)
+ * Examples and documentation at: http://jquery.malsup.com/cycle/
+ * Copyright (c) 2007-2009 M. Alsup
+ * Version: 2.73 (04-NOV-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(i){var l="2.73";if(i.support==undefined){i.support={opacity:!(i.browser.msie)}}function a(q){if(i.fn.cycle.debug){f(q)}}function f(){if(window.console&&window.console.log){window.console.log("[cycle] "+Array.prototype.join.call(arguments," "))}}i.fn.cycle=function(r,q){var s={s:this.selector,c:this.context};if(this.length===0&&r!="stop"){if(!i.isReady&&s.s){f("DOM not ready, queuing slideshow");i(function(){i(s.s,s.c).cycle(r,q)});return this}f("terminating; zero elements found by selector"+(i.isReady?"":" (DOM not ready)"));return this}return this.each(function(){var w=m(this,r,q);if(w===false){return}if(this.cycleTimeout){clearTimeout(this.cycleTimeout)}this.cycleTimeout=this.cyclePause=0;var x=i(this);var y=w.slideExpr?i(w.slideExpr,this):x.children();var u=y.get();if(u.length<2){f("terminating; too few slides: "+u.length);return}var t=k(x,y,u,w,s);if(t===false){return}var v=t.continuous?10:h(t.currSlide,t.nextSlide,t,!t.rev);if(v){v+=(t.delay||0);if(v<10){v=10}a("first timeout: "+v);this.cycleTimeout=setTimeout(function(){e(u,t,0,!t.rev)},v)}})};function m(q,t,r){if(q.cycleStop==undefined){q.cycleStop=0}if(t===undefined||t===null){t={}}if(t.constructor==String){switch(t){case"stop":q.cycleStop++;if(q.cycleTimeout){clearTimeout(q.cycleTimeout)}q.cycleTimeout=0;i(q).removeData("cycle.opts");return false;case"pause":q.cyclePause=1;return false;case"resume":q.cyclePause=0;if(r===true){t=i(q).data("cycle.opts");if(!t){f("options not found, can not resume");return false}if(q.cycleTimeout){clearTimeout(q.cycleTimeout);q.cycleTimeout=0}e(t.elements,t,1,1)}return false;case"prev":case"next":var u=i(q).data("cycle.opts");if(!u){f('options not found, "prev/next" ignored');return false}i.fn.cycle[t](u);return false;default:t={fx:t}}return t}else{if(t.constructor==Number){var s=t;t=i(q).data("cycle.opts");if(!t){f("options not found, can not advance slide");return false}if(s<0||s>=t.elements.length){f("invalid slide index: "+s);return false}t.nextSlide=s;if(q.cycleTimeout){clearTimeout(q.cycleTimeout);q.cycleTimeout=0}if(typeof r=="string"){t.oneTimeFx=r}e(t.elements,t,1,s>=t.currSlide);return false}}return t}function b(q,r){if(!i.support.opacity&&r.cleartype&&q.style.filter){try{q.style.removeAttribute("filter")}catch(s){}}}function k(y,J,u,t,E){var C=i.extend({},i.fn.cycle.defaults,t||{},i.metadata?y.metadata():i.meta?y.data():{});if(C.autostop){C.countdown=C.autostopCount||u.length}var r=y[0];y.data("cycle.opts",C);C.$cont=y;C.stopCount=r.cycleStop;C.elements=u;C.before=C.before?[C.before]:[];C.after=C.after?[C.after]:[];C.after.unshift(function(){C.busy=0});if(!i.support.opacity&&C.cleartype){C.after.push(function(){b(this,C)})}if(C.continuous){C.after.push(function(){e(u,C,0,!C.rev)})}n(C);if(!i.support.opacity&&C.cleartype&&!C.cleartypeNoBg){g(J)}if(y.css("position")=="static"){y.css("position","relative")}if(C.width){y.width(C.width)}if(C.height&&C.height!="auto"){y.height(C.height)}if(C.startingSlide){C.startingSlide=parseInt(C.startingSlide)}if(C.random){C.randomMap=[];for(var H=0;H=u.length){C.startingSlide=0}}C.currSlide=C.startingSlide=C.startingSlide||0;var x=C.startingSlide;J.css({position:"absolute",top:0,left:0}).hide().each(function(w){var L=x?w>=x?u.length-(w-x):x-w:u.length-w;i(this).css("z-index",L)});i(u[x]).css("opacity",1).show();b(u[x],C);if(C.fit&&C.width){J.width(C.width)}if(C.fit&&C.height&&C.height!="auto"){J.height(C.height)}var D=C.containerResize&&!y.innerHeight();if(D){var v=0,B=0;for(var F=0;Fv?A:v;B=I>B?I:B}if(v>0&&B>0){y.css({width:v+"px",height:B+"px"})}}if(C.pause){y.hover(function(){this.cyclePause++},function(){this.cyclePause--})}if(c(C)===false){return false}var s=false;t.requeueAttempts=t.requeueAttempts||0;J.each(function(){var N=i(this);this.cycleH=(C.fit&&C.height)?C.height:N.height();this.cycleW=(C.fit&&C.width)?C.width:N.width();if(N.is("img")){var L=(i.browser.msie&&this.cycleW==28&&this.cycleH==30&&!this.complete);var O=(i.browser.mozilla&&this.cycleW==34&&this.cycleH==19&&!this.complete);var M=(i.browser.opera&&((this.cycleW==42&&this.cycleH==19)||(this.cycleW==37&&this.cycleH==17))&&!this.complete);var w=(this.cycleH==0&&this.cycleW==0&&!this.complete);if(L||O||M||w){if(E.s&&C.requeueOnImageNotLoaded&&++t.requeueAttempts<100){f(t.requeueAttempts," - img slide not loaded, requeuing slideshow: ",this.src,this.cycleW,this.cycleH);setTimeout(function(){i(E.s,E.c).cycle(t)},C.requeueTimeout);s=true;return false}else{f("could not determine size of image: "+this.src,this.cycleW,this.cycleH)}}}return true});if(s){return false}C.cssBefore=C.cssBefore||{};C.animIn=C.animIn||{};C.animOut=C.animOut||{};J.not(":eq("+x+")").css(C.cssBefore);if(C.cssFirst){i(J[x]).css(C.cssFirst)}if(C.timeout){C.timeout=parseInt(C.timeout);if(C.speed.constructor==String){C.speed=i.fx.speeds[C.speed]||parseInt(C.speed)}if(!C.sync){C.speed=C.speed/2}while((C.timeout-C.speed)<250){C.timeout+=C.speed}}if(C.easing){C.easeIn=C.easeOut=C.easing}if(!C.speedIn){C.speedIn=C.speed}if(!C.speedOut){C.speedOut=C.speed}C.slideCount=u.length;C.currSlide=C.lastSlide=x;if(C.random){C.nextSlide=C.currSlide;if(++C.randomIndex==u.length){C.randomIndex=0}C.nextSlide=C.randomMap[C.randomIndex]}else{C.nextSlide=C.startingSlide>=(u.length-1)?0:C.startingSlide+1}if(!C.multiFx){var G=i.fn.cycle.transitions[C.fx];if(i.isFunction(G)){G(y,J,C)}else{if(C.fx!="custom"&&!C.multiFx){f("unknown transition: "+C.fx,"; slideshow terminating");return false}}}var z=J[x];if(C.before.length){C.before[0].apply(z,[z,z,C,true])}if(C.after.length>1){C.after[1].apply(z,[z,z,C,true])}if(C.next){i(C.next).bind(C.prevNextEvent,function(){return o(C,C.rev?-1:1)})}if(C.prev){i(C.prev).bind(C.prevNextEvent,function(){return o(C,C.rev?1:-1)})}if(C.pager){d(u,C)}j(C,u);return C}function n(q){q.original={before:[],after:[]};q.original.cssBefore=i.extend({},q.cssBefore);q.original.cssAfter=i.extend({},q.cssAfter);q.original.animIn=i.extend({},q.animIn);q.original.animOut=i.extend({},q.animOut);i.each(q.before,function(){q.original.before.push(this)});i.each(q.after,function(){q.original.after.push(this)})}function c(w){var u,s,r=i.fn.cycle.transitions;if(w.fx.indexOf(",")>0){w.multiFx=true;w.fxs=w.fx.replace(/\s*/g,"").split(",");for(u=0;u=q.fxs.length){q.lastFx=0}v=q.fxs[q.lastFx];q.currFx=v}if(q.oneTimeFx){v=q.oneTimeFx;q.oneTimeFx=null}i.fn.cycle.resetState(q,v);if(q.before.length){i.each(q.before,function(B,C){if(u.cycleStop!=q.stopCount){return}C.apply(z,[A,z,q,y])})}var s=function(){i.each(q.after,function(B,C){if(u.cycleStop!=q.stopCount){return}C.apply(z,[A,z,q,y])})};if(q.nextSlide!=q.currSlide){q.busy=1;if(q.fxFn){q.fxFn(A,z,q,s,y)}else{if(i.isFunction(i.fn.cycle[q.fx])){i.fn.cycle[q.fx](A,z,q,s)}else{i.fn.cycle.custom(A,z,q,s,w&&q.fastOnEvent)}}}q.lastSlide=q.currSlide;if(q.random){q.currSlide=q.nextSlide;if(++q.randomIndex==x.length){q.randomIndex=0}q.nextSlide=q.randomMap[q.randomIndex]}else{var t=(q.nextSlide+1)==x.length;q.nextSlide=t?0:q.nextSlide+1;q.currSlide=t?x.length-1:q.nextSlide-1}if(q.pager){i.fn.cycle.updateActivePagerLink(q.pager,q.currSlide)}}var r=0;if(q.timeout&&!q.continuous){r=h(A,z,q,y)}else{if(q.continuous&&u.cyclePause){r=10}}if(r>0){u.cycleTimeout=setTimeout(function(){e(x,q,0,!q.rev)},r)}}i.fn.cycle.updateActivePagerLink=function(q,r){i(q).each(function(){i(this).find("a").removeClass("activeSlide").filter("a:eq("+r+")").addClass("activeSlide")})};function h(v,s,u,r){if(u.timeoutFn){var q=u.timeoutFn(v,s,u,r);while((q-u.speed)<250){q+=u.speed}a("calculated timeout: "+q+"; speed: "+u.speed);if(q!==false){return q}}return u.timeout}i.fn.cycle.next=function(q){o(q,q.rev?-1:1)};i.fn.cycle.prev=function(q){o(q,q.rev?1:-1)};function o(r,u){var q=r.elements;var t=r.$cont[0],s=t.cycleTimeout;if(s){clearTimeout(s);t.cycleTimeout=0}if(r.random&&u<0){r.randomIndex--;if(--r.randomIndex==-2){r.randomIndex=q.length-2}else{if(r.randomIndex==-1){r.randomIndex=q.length-1}}r.nextSlide=r.randomMap[r.randomIndex]}else{if(r.random){if(++r.randomIndex==q.length){r.randomIndex=0}r.nextSlide=r.randomMap[r.randomIndex]}else{r.nextSlide=r.currSlide+u;if(r.nextSlide<0){if(r.nowrap){return false}r.nextSlide=q.length-1}else{if(r.nextSlide>=q.length){if(r.nowrap){return false}r.nextSlide=0}}}}if(i.isFunction(r.prevNextClick)){r.prevNextClick(u>0,r.nextSlide,q[r.nextSlide])}e(q,r,1,u>=0);return false}function d(r,s){var q=i(s.pager);i.each(r,function(t,u){i.fn.cycle.createPagerAnchor(t,u,q,r,s)});i.fn.cycle.updateActivePagerLink(s.pager,s.startingSlide)}i.fn.cycle.createPagerAnchor=function(u,v,s,t,w){var r;if(i.isFunction(w.pagerAnchorBuilder)){r=w.pagerAnchorBuilder(u,v)}else{r=''+(u+1)+" "}if(!r){return}var x=i(r);if(x.parents("body").length===0){var q=[];if(s.length>1){s.each(function(){var y=x.clone(true);i(this).append(y);q.push(y[0])});x=i(q)}else{x.appendTo(s)}}x.bind(w.pagerEvent,function(A){A.preventDefault();w.nextSlide=u;var z=w.$cont[0],y=z.cycleTimeout;if(y){clearTimeout(y);z.cycleTimeout=0}if(i.isFunction(w.pagerClick)){w.pagerClick(w.nextSlide,t[w.nextSlide])}e(t,w,1,w.currSlideq?u-q:t.slideCount-q}else{r=u=0){var u=t.match(/\d+/g);return"#"+r(u[0])+r(u[1])+r(u[2])}if(t&&t!="transparent"){return t}}return"#ffffff"}s.each(function(){i(this).css("background-color",q(this))})}i.fn.cycle.commonReset=function(v,t,u,r,s,q){i(u.elements).not(v).hide();u.cssBefore.opacity=1;u.cssBefore.display="block";if(r!==false&&t.cycleW>0){u.cssBefore.width=t.cycleW}if(s!==false&&t.cycleH>0){u.cssBefore.height=t.cycleH}u.cssAfter=u.cssAfter||{};u.cssAfter.display="none";i(v).css("zIndex",u.slideCount+(q===true?1:0));i(t).css("zIndex",u.slideCount+(q===true?0:1))};i.fn.cycle.custom=function(B,v,q,s,r){var A=i(B),w=i(v);var t=q.speedIn,z=q.speedOut,u=q.easeIn,y=q.easeOut;w.css(q.cssBefore);if(r){if(typeof r=="number"){t=z=r}else{t=z=1}u=y=null}var x=function(){w.animate(q.animIn,t,u,s)};A.animate(q.animOut,z,y,function(){if(q.cssAfter){A.css(q.cssAfter)}if(!q.sync){x()}});if(q.sync){x()}};i.fn.cycle.transitions={fade:function(r,s,q){s.not(":eq("+q.currSlide+")").css("opacity",0);q.before.push(function(v,t,u){i.fn.cycle.commonReset(v,t,u);u.cssBefore.opacity=0});q.animIn={opacity:1};q.animOut={opacity:0};q.cssBefore={top:0,left:0}}};i.fn.cycle.ver=function(){return l};i.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:!i.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(a){a.fn.cycle.transitions.none=function(c,d,b){b.fxFn=function(g,e,f,h){a(e).show();a(g).hide();h()}};a.fn.cycle.transitions.scrollUp=function(d,e,c){d.css("overflow","hidden");c.before.push(a.fn.cycle.commonReset);var b=d.height();c.cssBefore={top:b,left:0};c.cssFirst={top:0};c.animIn={top:0};c.animOut={top:-b}};a.fn.cycle.transitions.scrollDown=function(d,e,c){d.css("overflow","hidden");c.before.push(a.fn.cycle.commonReset);var b=d.height();c.cssFirst={top:0};c.cssBefore={top:-b,left:0};c.animIn={top:0};c.animOut={top:b}};a.fn.cycle.transitions.scrollLeft=function(d,e,c){d.css("overflow","hidden");c.before.push(a.fn.cycle.commonReset);var b=d.width();c.cssFirst={left:0};c.cssBefore={left:b,top:0};c.animIn={left:0};c.animOut={left:0-b}};a.fn.cycle.transitions.scrollRight=function(d,e,c){d.css("overflow","hidden");c.before.push(a.fn.cycle.commonReset);var b=d.width();c.cssFirst={left:0};c.cssBefore={left:-b,top:0};c.animIn={left:0};c.animOut={left:b}};a.fn.cycle.transitions.scrollHorz=function(c,d,b){c.css("overflow","hidden").width();b.before.push(function(h,f,g,e){a.fn.cycle.commonReset(h,f,g);g.cssBefore.left=e?(f.cycleW-1):(1-f.cycleW);g.animOut.left=e?-h.cycleW:h.cycleW});b.cssFirst={left:0};b.cssBefore={top:0};b.animIn={left:0};b.animOut={top:0}};a.fn.cycle.transitions.scrollVert=function(c,d,b){c.css("overflow","hidden");b.before.push(function(h,f,g,e){a.fn.cycle.commonReset(h,f,g);g.cssBefore.top=e?(1-f.cycleH):(f.cycleH-1);g.animOut.top=e?h.cycleH:-h.cycleH});b.cssFirst={top:0};b.cssBefore={left:0};b.animIn={top:0};b.animOut={left:0}};a.fn.cycle.transitions.slideX=function(c,d,b){b.before.push(function(g,e,f){a(f.elements).not(g).hide();a.fn.cycle.commonReset(g,e,f,false,true);f.animIn.width=e.cycleW});b.cssBefore={left:0,top:0,width:0};b.animIn={width:"show"};b.animOut={width:0}};a.fn.cycle.transitions.slideY=function(c,d,b){b.before.push(function(g,e,f){a(f.elements).not(g).hide();a.fn.cycle.commonReset(g,e,f,true,false);f.animIn.height=e.cycleH});b.cssBefore={left:0,top:0,height:0};b.animIn={height:"show"};b.animOut={height:0}};a.fn.cycle.transitions.shuffle=function(e,f,d){var c,b=e.css("overflow","visible").width();f.css({left:0,top:0});d.before.push(function(i,g,h){a.fn.cycle.commonReset(i,g,h,true,true,true)});if(!d.speedAdjusted){d.speed=d.speed/2;d.speedAdjusted=true}d.random=0;d.shuffle=d.shuffle||{left:-b,top:15};d.els=[];for(c=0;c $1');
+ }
+ }
+ return newText;
+ };
+})(jQuery);
diff --git a/app/assets/javascripts/jquery.fancybox-1.3.4.pack.js b/app/assets/javascripts/jquery.fancybox-1.3.4.pack.js
new file mode 100644
index 0000000..c41676c
--- /dev/null
+++ b/app/assets/javascripts/jquery.fancybox-1.3.4.pack.js
@@ -0,0 +1,46 @@
+/*
+ * FancyBox - jQuery Plugin
+ * Simple and fancy lightbox alternative
+ *
+ * Examples and documentation at: http://fancybox.net
+ *
+ * Copyright (c) 2008 - 2010 Janis Skarnelis
+ * That said, it is hardly a one-person project. Many people have submitted bugs, code, and offered their advice freely. Their support is greatly appreciated.
+ *
+ * Version: 1.3.4 (11/11/2010)
+ * Requires: jQuery v1.3+
+ *
+ * Dual licensed under the MIT and GPL licenses:
+ * http://www.opensource.org/licenses/mit-license.php
+ * http://www.gnu.org/licenses/gpl.html
+ */
+
+;(function(b){var m,t,u,f,D,j,E,n,z,A,q=0,e={},o=[],p=0,d={},l=[],G=null,v=new Image,J=/\.(jpg|gif|png|bmp|jpeg)(.*)?$/i,W=/[^\.]\.(swf)\s*$/i,K,L=1,y=0,s="",r,i,h=false,B=b.extend(b("
")[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+"
":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);
diff --git a/app/assets/javascripts/jquery.form.js b/app/assets/javascripts/jquery.form.js
new file mode 100644
index 0000000..b1916b5
--- /dev/null
+++ b/app/assets/javascripts/jquery.form.js
@@ -0,0 +1,1076 @@
+/*!
+ * jQuery Form Plugin
+ * version: 3.10 (20-JUL-2012)
+ * @requires jQuery v1.3.2 or later
+ *
+ * Examples and documentation at: http://malsup.com/jquery/form/
+ * Project repository: https://github.com/malsup/form
+ * Dual licensed under the MIT and GPL licenses:
+ * http://malsup.github.com/mit-license.txt
+ * http://malsup.github.com/gpl-license-v2.txt
+ */
+/*global ActiveXObject alert */
+;(function($) {
+"use strict";
+
+/*
+ Usage Note:
+ -----------
+ Do not use both ajaxSubmit and ajaxForm on the same form. These
+ functions are mutually exclusive. Use ajaxSubmit if you want
+ to bind your own submit handler to the form. For example,
+
+ $(document).ready(function() {
+ $('#myForm').on('submit', function(e) {
+ e.preventDefault(); // <-- important
+ $(this).ajaxSubmit({
+ target: '#output'
+ });
+ });
+ });
+
+ Use ajaxForm when you want the plugin to manage all the event binding
+ for you. For example,
+
+ $(document).ready(function() {
+ $('#myForm').ajaxForm({
+ target: '#output'
+ });
+ });
+
+ You can also use ajaxForm with delegation (requires jQuery v1.7+), so the
+ form does not have to exist when you invoke ajaxForm:
+
+ $('#myForm').ajaxForm({
+ delegation: true,
+ target: '#output'
+ });
+
+ When using ajaxForm, the ajaxSubmit function will be invoked for you
+ at the appropriate time.
+*/
+
+/**
+ * Feature detection
+ */
+var feature = {};
+feature.fileapi = $(" ").get(0).files !== undefined;
+feature.formdata = window.FormData !== undefined;
+
+/**
+ * ajaxSubmit() provides a mechanism for immediately submitting
+ * an HTML form using AJAX.
+ */
+$.fn.ajaxSubmit = function(options) {
+ /*jshint scripturl:true */
+
+ // fast fail if nothing selected (http://dev.jquery.com/ticket/2752)
+ if (!this.length) {
+ log('ajaxSubmit: skipping submit process - no element selected');
+ return this;
+ }
+
+ var method, action, url, $form = this;
+
+ if (typeof options == 'function') {
+ options = { success: options };
+ }
+
+ method = this.attr('method');
+ action = this.attr('action');
+ url = (typeof action === 'string') ? $.trim(action) : '';
+ url = url || window.location.href || '';
+ if (url) {
+ // clean url (don't include hash vaue)
+ url = (url.match(/^([^#]+)/)||[])[1];
+ }
+
+ options = $.extend(true, {
+ url: url,
+ success: $.ajaxSettings.success,
+ type: method || 'GET',
+ iframeSrc: /^https/i.test(window.location.href || '') ? 'javascript:false' : 'about:blank'
+ }, options);
+
+ // hook for manipulating the form data before it is extracted;
+ // convenient for use with rich editors like tinyMCE or FCKEditor
+ var veto = {};
+ this.trigger('form-pre-serialize', [this, options, veto]);
+ if (veto.veto) {
+ log('ajaxSubmit: submit vetoed via form-pre-serialize trigger');
+ return this;
+ }
+
+ // provide opportunity to alter form data before it is serialized
+ if (options.beforeSerialize && options.beforeSerialize(this, options) === false) {
+ log('ajaxSubmit: submit aborted via beforeSerialize callback');
+ return this;
+ }
+
+ var traditional = options.traditional;
+ if ( traditional === undefined ) {
+ traditional = $.ajaxSettings.traditional;
+ }
+
+ var elements = [];
+ var qx, a = this.formToArray(options.semantic, elements);
+ if (options.data) {
+ options.extraData = options.data;
+ qx = $.param(options.data, traditional);
+ }
+
+ // give pre-submit callback an opportunity to abort the submit
+ if (options.beforeSubmit && options.beforeSubmit(a, this, options) === false) {
+ log('ajaxSubmit: submit aborted via beforeSubmit callback');
+ return this;
+ }
+
+ // fire vetoable 'validate' event
+ this.trigger('form-submit-validate', [a, this, options, veto]);
+ if (veto.veto) {
+ log('ajaxSubmit: submit vetoed via form-submit-validate trigger');
+ return this;
+ }
+
+ var q = $.param(a, traditional);
+ if (qx) {
+ q = ( q ? (q + '&' + qx) : qx );
+ }
+ if (options.type.toUpperCase() == 'GET') {
+ options.url += (options.url.indexOf('?') >= 0 ? '&' : '?') + q;
+ options.data = null; // data is null for 'get'
+ }
+ else {
+ options.data = q; // data is the query string for 'post'
+ }
+
+ var callbacks = [];
+ if (options.resetForm) {
+ callbacks.push(function() { $form.resetForm(); });
+ }
+ if (options.clearForm) {
+ callbacks.push(function() { $form.clearForm(options.includeHidden); });
+ }
+
+ // perform a load on the target only if dataType is not provided
+ if (!options.dataType && options.target) {
+ var oldSuccess = options.success || function(){};
+ callbacks.push(function(data) {
+ var fn = options.replaceTarget ? 'replaceWith' : 'html';
+ $(options.target)[fn](data).each(oldSuccess, arguments);
+ });
+ }
+ else if (options.success) {
+ callbacks.push(options.success);
+ }
+
+ options.success = function(data, status, xhr) { // jQuery 1.4+ passes xhr as 3rd arg
+ var context = options.context || options; // jQuery 1.4+ supports scope context
+ for (var i=0, max=callbacks.length; i < max; i++) {
+ callbacks[i].apply(context, [data, status, xhr || $form, $form]);
+ }
+ };
+
+ // are there files to upload?
+ var fileInputs = $('input:file:enabled[value]', this); // [value] (issue #113)
+ var hasFileInputs = fileInputs.length > 0;
+ var mp = 'multipart/form-data';
+ var multipart = ($form.attr('enctype') == mp || $form.attr('encoding') == mp);
+
+ var fileAPI = feature.fileapi && feature.formdata;
+ log("fileAPI :" + fileAPI);
+ var shouldUseFrame = (hasFileInputs || multipart) && !fileAPI;
+
+ // options.iframe allows user to force iframe mode
+ // 06-NOV-09: now defaulting to iframe mode if file input is detected
+ if (options.iframe !== false && (options.iframe || shouldUseFrame)) {
+ // hack to fix Safari hang (thanks to Tim Molendijk for this)
+ // see: http://groups.google.com/group/jquery-dev/browse_thread/thread/36395b7ab510dd5d
+ if (options.closeKeepAlive) {
+ $.get(options.closeKeepAlive, function() {
+ fileUploadIframe(a);
+ });
+ }
+ else {
+ fileUploadIframe(a);
+ }
+ }
+ else if ((hasFileInputs || multipart) && fileAPI) {
+ fileUploadXhr(a);
+ }
+ else {
+ $.ajax(options);
+ }
+
+ // clear element array
+ for (var k=0; k < elements.length; k++)
+ elements[k] = null;
+
+ // fire 'notify' event
+ this.trigger('form-submit-notify', [this, options]);
+ return this;
+
+ // XMLHttpRequest Level 2 file uploads (big hat tip to francois2metz)
+ function fileUploadXhr(a) {
+ var formdata = new FormData();
+
+ for (var i=0; i < a.length; i++) {
+ formdata.append(a[i].name, a[i].value);
+ }
+
+ if (options.extraData) {
+ for (var p in options.extraData)
+ if (options.extraData.hasOwnProperty(p))
+ formdata.append(p, options.extraData[p]);
+ }
+
+ options.data = null;
+
+ var s = $.extend(true, {}, $.ajaxSettings, options, {
+ contentType: false,
+ processData: false,
+ cache: false,
+ type: 'POST'
+ });
+
+ if (options.uploadProgress) {
+ // workaround because jqXHR does not expose upload property
+ s.xhr = function() {
+ var xhr = jQuery.ajaxSettings.xhr();
+ if (xhr.upload) {
+ xhr.upload.onprogress = function(event) {
+ var percent = 0;
+ var position = event.loaded || event.position; /*event.position is deprecated*/
+ var total = event.total;
+ if (event.lengthComputable) {
+ percent = Math.ceil(position / total * 100);
+ }
+ options.uploadProgress(event, position, total, percent);
+ };
+ }
+ return xhr;
+ };
+ }
+
+ s.data = null;
+ var beforeSend = s.beforeSend;
+ s.beforeSend = function(xhr, o) {
+ o.data = formdata;
+ if(beforeSend)
+ beforeSend.call(this, xhr, o);
+ };
+ $.ajax(s);
+ }
+
+ // private function for handling file uploads (hat tip to YAHOO!)
+ function fileUploadIframe(a) {
+ var form = $form[0], el, i, s, g, id, $io, io, xhr, sub, n, timedOut, timeoutHandle;
+ var useProp = !!$.fn.prop;
+
+ if ($(':input[name=submit],:input[id=submit]', form).length) {
+ // if there is an input with a name or id of 'submit' then we won't be
+ // able to invoke the submit fn on the form (at least not x-browser)
+ alert('Error: Form elements must not have name or id of "submit".');
+ return;
+ }
+
+ if (a) {
+ // ensure that every serialized input is still enabled
+ for (i=0; i < elements.length; i++) {
+ el = $(elements[i]);
+ if ( useProp )
+ el.prop('disabled', false);
+ else
+ el.removeAttr('disabled');
+ }
+ }
+
+ s = $.extend(true, {}, $.ajaxSettings, options);
+ s.context = s.context || s;
+ id = 'jqFormIO' + (new Date().getTime());
+ if (s.iframeTarget) {
+ $io = $(s.iframeTarget);
+ n = $io.attr('name');
+ if (!n)
+ $io.attr('name', id);
+ else
+ id = n;
+ }
+ else {
+ $io = $('');
+ $io.css({ position: 'absolute', top: '-1000px', left: '-1000px' });
+ }
+ io = $io[0];
+
+
+ xhr = { // mock object
+ aborted: 0,
+ responseText: null,
+ responseXML: null,
+ status: 0,
+ statusText: 'n/a',
+ getAllResponseHeaders: function() {},
+ getResponseHeader: function() {},
+ setRequestHeader: function() {},
+ abort: function(status) {
+ var e = (status === 'timeout' ? 'timeout' : 'aborted');
+ log('aborting upload... ' + e);
+ this.aborted = 1;
+ $io.attr('src', s.iframeSrc); // abort op in progress
+ xhr.error = e;
+ if (s.error)
+ s.error.call(s.context, xhr, e, status);
+ if (g)
+ $.event.trigger("ajaxError", [xhr, s, e]);
+ if (s.complete)
+ s.complete.call(s.context, xhr, e);
+ }
+ };
+
+ g = s.global;
+ // trigger ajax global events so that activity/block indicators work like normal
+ if (g && 0 === $.active++) {
+ $.event.trigger("ajaxStart");
+ }
+ if (g) {
+ $.event.trigger("ajaxSend", [xhr, s]);
+ }
+
+ if (s.beforeSend && s.beforeSend.call(s.context, xhr, s) === false) {
+ if (s.global) {
+ $.active--;
+ }
+ return;
+ }
+ if (xhr.aborted) {
+ return;
+ }
+
+ // add submitting element to data if we know it
+ sub = form.clk;
+ if (sub) {
+ n = sub.name;
+ if (n && !sub.disabled) {
+ s.extraData = s.extraData || {};
+ s.extraData[n] = sub.value;
+ if (sub.type == "image") {
+ s.extraData[n+'.x'] = form.clk_x;
+ s.extraData[n+'.y'] = form.clk_y;
+ }
+ }
+ }
+
+ var CLIENT_TIMEOUT_ABORT = 1;
+ var SERVER_ABORT = 2;
+
+ function getDoc(frame) {
+ var doc = frame.contentWindow ? frame.contentWindow.document : frame.contentDocument ? frame.contentDocument : frame.document;
+ return doc;
+ }
+
+ // Rails CSRF hack (thanks to Yvan Barthelemy)
+ var csrf_token = $('meta[name=csrf-token]').attr('content');
+ var csrf_param = $('meta[name=csrf-param]').attr('content');
+ if (csrf_param && csrf_token) {
+ s.extraData = s.extraData || {};
+ s.extraData[csrf_param] = csrf_token;
+ }
+
+ // take a breath so that pending repaints get some cpu time before the upload starts
+ function doSubmit() {
+ // make sure form attrs are set
+ var t = $form.attr('target'), a = $form.attr('action');
+
+ // update form attrs in IE friendly way
+ form.setAttribute('target',id);
+ if (!method) {
+ form.setAttribute('method', 'POST');
+ }
+ if (a != s.url) {
+ form.setAttribute('action', s.url);
+ }
+
+ // ie borks in some cases when setting encoding
+ if (! s.skipEncodingOverride && (!method || /post/i.test(method))) {
+ $form.attr({
+ encoding: 'multipart/form-data',
+ enctype: 'multipart/form-data'
+ });
+ }
+
+ // support timout
+ if (s.timeout) {
+ timeoutHandle = setTimeout(function() { timedOut = true; cb(CLIENT_TIMEOUT_ABORT); }, s.timeout);
+ }
+
+ // look for server aborts
+ function checkState() {
+ try {
+ var state = getDoc(io).readyState;
+ log('state = ' + state);
+ if (state && state.toLowerCase() == 'uninitialized')
+ setTimeout(checkState,50);
+ }
+ catch(e) {
+ log('Server abort: ' , e, ' (', e.name, ')');
+ cb(SERVER_ABORT);
+ if (timeoutHandle)
+ clearTimeout(timeoutHandle);
+ timeoutHandle = undefined;
+ }
+ }
+
+ // add "extra" data to form if provided in options
+ var extraInputs = [];
+ try {
+ if (s.extraData) {
+ for (var n in s.extraData) {
+ if (s.extraData.hasOwnProperty(n)) {
+ extraInputs.push(
+ $(' ').attr('value',s.extraData[n])
+ .appendTo(form)[0]);
+ }
+ }
+ }
+
+ if (!s.iframeTarget) {
+ // add iframe to doc and submit the form
+ $io.appendTo('body');
+ if (io.attachEvent)
+ io.attachEvent('onload', cb);
+ else
+ io.addEventListener('load', cb, false);
+ }
+ setTimeout(checkState,15);
+ form.submit();
+ }
+ finally {
+ // reset attrs and remove "extra" input elements
+ form.setAttribute('action',a);
+ if(t) {
+ form.setAttribute('target', t);
+ } else {
+ $form.removeAttr('target');
+ }
+ $(extraInputs).remove();
+ }
+ }
+
+ if (s.forceSync) {
+ doSubmit();
+ }
+ else {
+ setTimeout(doSubmit, 10); // this lets dom updates render
+ }
+
+ var data, doc, domCheckCount = 50, callbackProcessed;
+
+ function cb(e) {
+ if (xhr.aborted || callbackProcessed) {
+ return;
+ }
+ try {
+ doc = getDoc(io);
+ }
+ catch(ex) {
+ log('cannot access response document: ', ex);
+ e = SERVER_ABORT;
+ }
+ if (e === CLIENT_TIMEOUT_ABORT && xhr) {
+ xhr.abort('timeout');
+ return;
+ }
+ else if (e == SERVER_ABORT && xhr) {
+ xhr.abort('server abort');
+ return;
+ }
+
+ if (!doc || doc.location.href == s.iframeSrc) {
+ // response not received yet
+ if (!timedOut)
+ return;
+ }
+ if (io.detachEvent)
+ io.detachEvent('onload', cb);
+ else
+ io.removeEventListener('load', cb, false);
+
+ var status = 'success', errMsg;
+ try {
+ if (timedOut) {
+ throw 'timeout';
+ }
+
+ var isXml = s.dataType == 'xml' || doc.XMLDocument || $.isXMLDoc(doc);
+ log('isXml='+isXml);
+ if (!isXml && window.opera && (doc.body === null || !doc.body.innerHTML)) {
+ if (--domCheckCount) {
+ // in some browsers (Opera) the iframe DOM is not always traversable when
+ // the onload callback fires, so we loop a bit to accommodate
+ log('requeing onLoad callback, DOM not available');
+ setTimeout(cb, 250);
+ return;
+ }
+ // let this fall through because server response could be an empty document
+ //log('Could not access iframe DOM after mutiple tries.');
+ //throw 'DOMException: not available';
+ }
+
+ //log('response detected');
+ var docRoot = doc.body ? doc.body : doc.documentElement;
+ xhr.responseText = docRoot ? docRoot.innerHTML : null;
+ xhr.responseXML = doc.XMLDocument ? doc.XMLDocument : doc;
+ if (isXml)
+ s.dataType = 'xml';
+ xhr.getResponseHeader = function(header){
+ var headers = {'content-type': s.dataType};
+ return headers[header];
+ };
+ // support for XHR 'status' & 'statusText' emulation :
+ if (docRoot) {
+ xhr.status = Number( docRoot.getAttribute('status') ) || xhr.status;
+ xhr.statusText = docRoot.getAttribute('statusText') || xhr.statusText;
+ }
+
+ var dt = (s.dataType || '').toLowerCase();
+ var scr = /(json|script|text)/.test(dt);
+ if (scr || s.textarea) {
+ // see if user embedded response in textarea
+ var ta = doc.getElementsByTagName('textarea')[0];
+ if (ta) {
+ xhr.responseText = ta.value;
+ // support for XHR 'status' & 'statusText' emulation :
+ xhr.status = Number( ta.getAttribute('status') ) || xhr.status;
+ xhr.statusText = ta.getAttribute('statusText') || xhr.statusText;
+ }
+ else if (scr) {
+ // account for browsers injecting pre around json response
+ var pre = doc.getElementsByTagName('pre')[0];
+ var b = doc.getElementsByTagName('body')[0];
+ if (pre) {
+ xhr.responseText = pre.textContent ? pre.textContent : pre.innerText;
+ }
+ else if (b) {
+ xhr.responseText = b.textContent ? b.textContent : b.innerText;
+ }
+ }
+ }
+ else if (dt == 'xml' && !xhr.responseXML && xhr.responseText) {
+ xhr.responseXML = toXml(xhr.responseText);
+ }
+
+ try {
+ data = httpData(xhr, dt, s);
+ }
+ catch (e) {
+ status = 'parsererror';
+ xhr.error = errMsg = (e || status);
+ }
+ }
+ catch (e) {
+ log('error caught: ',e);
+ status = 'error';
+ xhr.error = errMsg = (e || status);
+ }
+
+ if (xhr.aborted) {
+ log('upload aborted');
+ status = null;
+ }
+
+ if (xhr.status) { // we've set xhr.status
+ status = (xhr.status >= 200 && xhr.status < 300 || xhr.status === 304) ? 'success' : 'error';
+ }
+
+ // ordering of these callbacks/triggers is odd, but that's how $.ajax does it
+ if (status === 'success') {
+ if (s.success)
+ s.success.call(s.context, data, 'success', xhr);
+ if (g)
+ $.event.trigger("ajaxSuccess", [xhr, s]);
+ }
+ else if (status) {
+ if (errMsg === undefined)
+ errMsg = xhr.statusText;
+ if (s.error)
+ s.error.call(s.context, xhr, status, errMsg);
+ if (g)
+ $.event.trigger("ajaxError", [xhr, s, errMsg]);
+ }
+
+ if (g)
+ $.event.trigger("ajaxComplete", [xhr, s]);
+
+ if (g && ! --$.active) {
+ $.event.trigger("ajaxStop");
+ }
+
+ if (s.complete)
+ s.complete.call(s.context, xhr, status);
+
+ callbackProcessed = true;
+ if (s.timeout)
+ clearTimeout(timeoutHandle);
+
+ // clean up
+ setTimeout(function() {
+ if (!s.iframeTarget)
+ $io.remove();
+ xhr.responseXML = null;
+ }, 100);
+ }
+
+ var toXml = $.parseXML || function(s, doc) { // use parseXML if available (jQuery 1.5+)
+ if (window.ActiveXObject) {
+ doc = new ActiveXObject('Microsoft.XMLDOM');
+ doc.async = 'false';
+ doc.loadXML(s);
+ }
+ else {
+ doc = (new DOMParser()).parseFromString(s, 'text/xml');
+ }
+ return (doc && doc.documentElement && doc.documentElement.nodeName != 'parsererror') ? doc : null;
+ };
+ var parseJSON = $.parseJSON || function(s) {
+ /*jslint evil:true */
+ return window['eval']('(' + s + ')');
+ };
+
+ var httpData = function( xhr, type, s ) { // mostly lifted from jq1.4.4
+
+ var ct = xhr.getResponseHeader('content-type') || '',
+ xml = type === 'xml' || !type && ct.indexOf('xml') >= 0,
+ data = xml ? xhr.responseXML : xhr.responseText;
+
+ if (xml && data.documentElement.nodeName === 'parsererror') {
+ if ($.error)
+ $.error('parsererror');
+ }
+ if (s && s.dataFilter) {
+ data = s.dataFilter(data, type);
+ }
+ if (typeof data === 'string') {
+ if (type === 'json' || !type && ct.indexOf('json') >= 0) {
+ data = parseJSON(data);
+ } else if (type === "script" || !type && ct.indexOf("javascript") >= 0) {
+ $.globalEval(data);
+ }
+ }
+ return data;
+ };
+ }
+};
+
+/**
+ * ajaxForm() provides a mechanism for fully automating form submission.
+ *
+ * The advantages of using this method instead of ajaxSubmit() are:
+ *
+ * 1: This method will include coordinates for elements (if the element
+ * is used to submit the form).
+ * 2. This method will include the submit element's name/value data (for the element that was
+ * used to submit the form).
+ * 3. This method binds the submit() method to the form for you.
+ *
+ * The options argument for ajaxForm works exactly as it does for ajaxSubmit. ajaxForm merely
+ * passes the options argument along after properly binding events for submit elements and
+ * the form itself.
+ */
+$.fn.ajaxForm = function(options) {
+ options = options || {};
+ options.delegation = options.delegation && $.isFunction($.fn.on);
+
+ // in jQuery 1.3+ we can fix mistakes with the ready state
+ if (!options.delegation && this.length === 0) {
+ var o = { s: this.selector, c: this.context };
+ if (!$.isReady && o.s) {
+ log('DOM not ready, queuing ajaxForm');
+ $(function() {
+ $(o.s,o.c).ajaxForm(options);
+ });
+ return this;
+ }
+ // is your DOM ready? http://docs.jquery.com/Tutorials:Introducing_$(document).ready()
+ log('terminating; zero elements found by selector' + ($.isReady ? '' : ' (DOM not ready)'));
+ return this;
+ }
+
+ if ( options.delegation ) {
+ $(document)
+ .off('submit.form-plugin', this.selector, doAjaxSubmit)
+ .off('click.form-plugin', this.selector, captureSubmittingElement)
+ .on('submit.form-plugin', this.selector, options, doAjaxSubmit)
+ .on('click.form-plugin', this.selector, options, captureSubmittingElement);
+ return this;
+ }
+
+ return this.ajaxFormUnbind()
+ .bind('submit.form-plugin', options, doAjaxSubmit)
+ .bind('click.form-plugin', options, captureSubmittingElement);
+};
+
+// private event handlers
+function doAjaxSubmit(e) {
+ /*jshint validthis:true */
+ var options = e.data;
+ if (!e.isDefaultPrevented()) { // if event has been canceled, don't proceed
+ e.preventDefault();
+ $(this).ajaxSubmit(options);
+ }
+}
+
+function captureSubmittingElement(e) {
+ /*jshint validthis:true */
+ var target = e.target;
+ var $el = $(target);
+ if (!($el.is(":submit,input:image"))) {
+ // is this a child element of the submit el? (ex: a span within a button)
+ var t = $el.closest(':submit');
+ if (t.length === 0) {
+ return;
+ }
+ target = t[0];
+ }
+ var form = this;
+ form.clk = target;
+ if (target.type == 'image') {
+ if (e.offsetX !== undefined) {
+ form.clk_x = e.offsetX;
+ form.clk_y = e.offsetY;
+ } else if (typeof $.fn.offset == 'function') {
+ var offset = $el.offset();
+ form.clk_x = e.pageX - offset.left;
+ form.clk_y = e.pageY - offset.top;
+ } else {
+ form.clk_x = e.pageX - target.offsetLeft;
+ form.clk_y = e.pageY - target.offsetTop;
+ }
+ }
+ // clear form vars
+ setTimeout(function() { form.clk = form.clk_x = form.clk_y = null; }, 100);
+}
+
+
+// ajaxFormUnbind unbinds the event handlers that were bound by ajaxForm
+$.fn.ajaxFormUnbind = function() {
+ return this.unbind('submit.form-plugin click.form-plugin');
+};
+
+/**
+ * formToArray() gathers form element data into an array of objects that can
+ * be passed to any of the following ajax functions: $.get, $.post, or load.
+ * Each object in the array has both a 'name' and 'value' property. An example of
+ * an array for a simple login form might be:
+ *
+ * [ { name: 'username', value: 'jresig' }, { name: 'password', value: 'secret' } ]
+ *
+ * It is this array that is passed to pre-submit callback functions provided to the
+ * ajaxSubmit() and ajaxForm() methods.
+ */
+$.fn.formToArray = function(semantic, elements) {
+ var a = [];
+ if (this.length === 0) {
+ return a;
+ }
+
+ var form = this[0];
+ var els = semantic ? form.getElementsByTagName('*') : form.elements;
+ if (!els) {
+ return a;
+ }
+
+ var i,j,n,v,el,max,jmax;
+ for(i=0, max=els.length; i < max; i++) {
+ el = els[i];
+ n = el.name;
+ if (!n) {
+ continue;
+ }
+
+ if (semantic && form.clk && el.type == "image") {
+ // handle image inputs on the fly when semantic == true
+ if(!el.disabled && form.clk == el) {
+ a.push({name: n, value: $(el).val(), type: el.type });
+ a.push({name: n+'.x', value: form.clk_x}, {name: n+'.y', value: form.clk_y});
+ }
+ continue;
+ }
+
+ v = $.fieldValue(el, true);
+ if (v && v.constructor == Array) {
+ if (elements)
+ elements.push(el);
+ for(j=0, jmax=v.length; j < jmax; j++) {
+ a.push({name: n, value: v[j]});
+ }
+ }
+ else if (feature.fileapi && el.type == 'file' && !el.disabled) {
+ if (elements)
+ elements.push(el);
+ var files = el.files;
+ if (files.length) {
+ for (j=0; j < files.length; j++) {
+ a.push({name: n, value: files[j], type: el.type});
+ }
+ }
+ else {
+ // #180
+ a.push({ name: n, value: '', type: el.type });
+ }
+ }
+ else if (v !== null && typeof v != 'undefined') {
+ if (elements)
+ elements.push(el);
+ a.push({name: n, value: v, type: el.type, required: el.required});
+ }
+ }
+
+ if (!semantic && form.clk) {
+ // input type=='image' are not found in elements array! handle it here
+ var $input = $(form.clk), input = $input[0];
+ n = input.name;
+ if (n && !input.disabled && input.type == 'image') {
+ a.push({name: n, value: $input.val()});
+ a.push({name: n+'.x', value: form.clk_x}, {name: n+'.y', value: form.clk_y});
+ }
+ }
+ return a;
+};
+
+/**
+ * Serializes form data into a 'submittable' string. This method will return a string
+ * in the format: name1=value1&name2=value2
+ */
+$.fn.formSerialize = function(semantic) {
+ //hand off to jQuery.param for proper encoding
+ return $.param(this.formToArray(semantic));
+};
+
+/**
+ * Serializes all field elements in the jQuery object into a query string.
+ * This method will return a string in the format: name1=value1&name2=value2
+ */
+$.fn.fieldSerialize = function(successful) {
+ var a = [];
+ this.each(function() {
+ var n = this.name;
+ if (!n) {
+ return;
+ }
+ var v = $.fieldValue(this, successful);
+ if (v && v.constructor == Array) {
+ for (var i=0,max=v.length; i < max; i++) {
+ a.push({name: n, value: v[i]});
+ }
+ }
+ else if (v !== null && typeof v != 'undefined') {
+ a.push({name: this.name, value: v});
+ }
+ });
+ //hand off to jQuery.param for proper encoding
+ return $.param(a);
+};
+
+/**
+ * Returns the value(s) of the element in the matched set. For example, consider the following form:
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ * var v = $(':text').fieldValue();
+ * // if no values are entered into the text inputs
+ * v == ['','']
+ * // if values entered into the text inputs are 'foo' and 'bar'
+ * v == ['foo','bar']
+ *
+ * var v = $(':checkbox').fieldValue();
+ * // if neither checkbox is checked
+ * v === undefined
+ * // if both checkboxes are checked
+ * v == ['B1', 'B2']
+ *
+ * var v = $(':radio').fieldValue();
+ * // if neither radio is checked
+ * v === undefined
+ * // if first radio is checked
+ * v == ['C1']
+ *
+ * The successful argument controls whether or not the field element must be 'successful'
+ * (per http://www.w3.org/TR/html4/interact/forms.html#successful-controls).
+ * The default value of the successful argument is true. If this value is false the value(s)
+ * for each element is returned.
+ *
+ * Note: This method *always* returns an array. If no valid value can be determined the
+ * array will be empty, otherwise it will contain one or more values.
+ */
+$.fn.fieldValue = function(successful) {
+ for (var val=[], i=0, max=this.length; i < max; i++) {
+ var el = this[i];
+ var v = $.fieldValue(el, successful);
+ if (v === null || typeof v == 'undefined' || (v.constructor == Array && !v.length)) {
+ continue;
+ }
+ if (v.constructor == Array)
+ $.merge(val, v);
+ else
+ val.push(v);
+ }
+ return val;
+};
+
+/**
+ * Returns the value of the field element.
+ */
+$.fieldValue = function(el, successful) {
+ var n = el.name, t = el.type, tag = el.tagName.toLowerCase();
+ if (successful === undefined) {
+ successful = true;
+ }
+
+ if (successful && (!n || el.disabled || t == 'reset' || t == 'button' ||
+ (t == 'checkbox' || t == 'radio') && !el.checked ||
+ (t == 'submit' || t == 'image') && el.form && el.form.clk != el ||
+ tag == 'select' && el.selectedIndex == -1)) {
+ return null;
+ }
+
+ if (tag == 'select') {
+ var index = el.selectedIndex;
+ if (index < 0) {
+ return null;
+ }
+ var a = [], ops = el.options;
+ var one = (t == 'select-one');
+ var max = (one ? index+1 : ops.length);
+ for(var i=(one ? index : 0); i < max; i++) {
+ var op = ops[i];
+ if (op.selected) {
+ var v = op.value;
+ if (!v) { // extra pain for IE...
+ v = (op.attributes && op.attributes['value'] && !(op.attributes['value'].specified)) ? op.text : op.value;
+ }
+ if (one) {
+ return v;
+ }
+ a.push(v);
+ }
+ }
+ return a;
+ }
+ return $(el).val();
+};
+
+/**
+ * Clears the form data. Takes the following actions on the form's input fields:
+ * - input text fields will have their 'value' property set to the empty string
+ * - select elements will have their 'selectedIndex' property set to -1
+ * - checkbox and radio inputs will have their 'checked' property set to false
+ * - inputs of type submit, button, reset, and hidden will *not* be effected
+ * - button elements will *not* be effected
+ */
+$.fn.clearForm = function(includeHidden) {
+ return this.each(function() {
+ $('input,select,textarea', this).clearFields(includeHidden);
+ });
+};
+
+/**
+ * Clears the selected form elements.
+ */
+$.fn.clearFields = $.fn.clearInputs = function(includeHidden) {
+ var re = /^(?:color|date|datetime|email|month|number|password|range|search|tel|text|time|url|week)$/i; // 'hidden' is not in this list
+ return this.each(function() {
+ var t = this.type, tag = this.tagName.toLowerCase();
+ if (re.test(t) || tag == 'textarea') {
+ this.value = '';
+ }
+ else if (t == 'checkbox' || t == 'radio') {
+ this.checked = false;
+ }
+ else if (tag == 'select') {
+ this.selectedIndex = -1;
+ }
+ else if (includeHidden) {
+ // includeHidden can be the valud true, or it can be a selector string
+ // indicating a special test; for example:
+ // $('#myForm').clearForm('.special:hidden')
+ // the above would clean hidden inputs that have the class of 'special'
+ if ( (includeHidden === true && /hidden/.test(t)) ||
+ (typeof includeHidden == 'string' && $(this).is(includeHidden)) )
+ this.value = '';
+ }
+ });
+};
+
+/**
+ * Resets the form data. Causes all form elements to be reset to their original value.
+ */
+$.fn.resetForm = function() {
+ return this.each(function() {
+ // guard against an input with the name of 'reset'
+ // note that IE reports the reset function as an 'object'
+ if (typeof this.reset == 'function' || (typeof this.reset == 'object' && !this.reset.nodeType)) {
+ this.reset();
+ }
+ });
+};
+
+/**
+ * Enables or disables any matching elements.
+ */
+$.fn.enable = function(b) {
+ if (b === undefined) {
+ b = true;
+ }
+ return this.each(function() {
+ this.disabled = !b;
+ });
+};
+
+/**
+ * Checks/unchecks any matching checkboxes or radio buttons and
+ * selects/deselects and matching option elements.
+ */
+$.fn.selected = function(select) {
+ if (select === undefined) {
+ select = true;
+ }
+ return this.each(function() {
+ var t = this.type;
+ if (t == 'checkbox' || t == 'radio') {
+ this.checked = select;
+ }
+ else if (this.tagName.toLowerCase() == 'option') {
+ var $sel = $(this).parent('select');
+ if (select && $sel[0] && $sel[0].type == 'select-one') {
+ // deselect all other options
+ $sel.find('option').selected(false);
+ }
+ this.selected = select;
+ }
+ });
+};
+
+// expose debug var
+$.fn.ajaxSubmit.debug = false;
+
+// helper fn for console logging
+function log() {
+ if (!$.fn.ajaxSubmit.debug)
+ return;
+ var msg = '[jquery.form] ' + Array.prototype.join.call(arguments,'');
+ if (window.console && window.console.log) {
+ window.console.log(msg);
+ }
+ else if (window.opera && window.opera.postError) {
+ window.opera.postError(msg);
+ }
+}
+
+})(jQuery);
diff --git a/app/assets/javascripts/jquery.noconflict.js b/app/assets/javascripts/jquery.noconflict.js
new file mode 100644
index 0000000..e4b4d81
--- /dev/null
+++ b/app/assets/javascripts/jquery.noconflict.js
@@ -0,0 +1 @@
+var $j = jQuery.noConflict();
diff --git a/app/assets/javascripts/jquery.scrollTo.js b/app/assets/javascripts/jquery.scrollTo.js
new file mode 100644
index 0000000..eec31e1
--- /dev/null
+++ b/app/assets/javascripts/jquery.scrollTo.js
@@ -0,0 +1,215 @@
+/**
+ * jQuery.ScrollTo
+ * Copyright (c) 2007-2009 Ariel Flesler - aflesler(at)gmail(dot)com | http://flesler.blogspot.com
+ * Dual licensed under MIT and GPL.
+ * Date: 5/25/2009
+ *
+ * @projectDescription Easy element scrolling using jQuery.
+ * http://flesler.blogspot.com/2007/10/jqueryscrollto.html
+ * Works with jQuery +1.2.6. Tested on FF 2/3, IE 6/7/8, Opera 9.5/6, Safari 3, Chrome 1 on WinXP.
+ *
+ * @author Ariel Flesler
+ * @version 1.4.2
+ *
+ * @id jQuery.scrollTo
+ * @id jQuery.fn.scrollTo
+ * @param {String, Number, DOMElement, jQuery, Object} target Where to scroll the matched elements.
+ * The different options for target are:
+ * - A number position (will be applied to all axes).
+ * - A string position ('44', '100px', '+=90', etc ) will be applied to all axes
+ * - A jQuery/DOM element ( logically, child of the element to scroll )
+ * - A string selector, that will be relative to the element to scroll ( 'li:eq(2)', etc )
+ * - A hash { top:x, left:y }, x and y can be any kind of number/string like above.
+* - A percentage of the container's dimension/s, for example: 50% to go to the middle.
+ * - The string 'max' for go-to-end.
+ * @param {Number} duration The OVERALL length of the animation, this argument can be the settings object instead.
+ * @param {Object,Function} settings Optional set of settings or the onAfter callback.
+ * @option {String} axis Which axis must be scrolled, use 'x', 'y', 'xy' or 'yx'.
+ * @option {Number} duration The OVERALL length of the animation.
+ * @option {String} easing The easing method for the animation.
+ * @option {Boolean} margin If true, the margin of the target element will be deducted from the final position.
+ * @option {Object, Number} offset Add/deduct from the end position. One number for both axes or { top:x, left:y }.
+ * @option {Object, Number} over Add/deduct the height/width multiplied by 'over', can be { top:x, left:y } when using both axes.
+ * @option {Boolean} queue If true, and both axis are given, the 2nd axis will only be animated after the first one ends.
+ * @option {Function} onAfter Function to be called after the scrolling ends.
+ * @option {Function} onAfterFirst If queuing is activated, this function will be called after the first scrolling ends.
+ * @return {jQuery} Returns the same jQuery object, for chaining.
+ *
+ * @desc Scroll to a fixed position
+ * @example $('div').scrollTo( 340 );
+ *
+ * @desc Scroll relatively to the actual position
+ * @example $('div').scrollTo( '+=340px', { axis:'y' } );
+ *
+ * @dec Scroll using a selector (relative to the scrolled element)
+ * @example $('div').scrollTo( 'p.paragraph:eq(2)', 500, { easing:'swing', queue:true, axis:'xy' } );
+ *
+ * @ Scroll to a DOM element (same for jQuery object)
+ * @example var second_child = document.getElementById('container').firstChild.nextSibling;
+ * $('#container').scrollTo( second_child, { duration:500, axis:'x', onAfter:function(){
+ * alert('scrolled!!');
+ * }});
+ *
+ * @desc Scroll on both axes, to different values
+ * @example $('div').scrollTo( { top: 300, left:'+=200' }, { axis:'xy', offset:-20 } );
+ */
+;(function( $ ){
+
+ var $scrollTo = $.scrollTo = function( target, duration, settings ){
+ $(window).scrollTo( target, duration, settings );
+ };
+
+ $scrollTo.defaults = {
+ axis:'xy',
+ duration: parseFloat($.fn.jquery) >= 1.3 ? 0 : 1
+ };
+
+ // Returns the element that needs to be animated to scroll the window.
+ // Kept for backwards compatibility (specially for localScroll & serialScroll)
+ $scrollTo.window = function( scope ){
+ return $(window)._scrollable();
+ };
+
+ // Hack, hack, hack :)
+ // Returns the real elements to scroll (supports window/iframes, documents and regular nodes)
+ $.fn._scrollable = function(){
+ return this.map(function(){
+ var elem = this,
+ isWin = !elem.nodeName || $.inArray( elem.nodeName.toLowerCase(), ['iframe','#document','html','body'] ) != -1;
+
+ if( !isWin )
+ return elem;
+
+ var doc = (elem.contentWindow || elem).document || elem.ownerDocument || elem;
+
+ return $.browser.safari || doc.compatMode == 'BackCompat' ?
+ doc.body :
+ doc.documentElement;
+ });
+ };
+
+ $.fn.scrollTo = function( target, duration, settings ){
+ if( typeof duration == 'object' ){
+ settings = duration;
+ duration = 0;
+ }
+ if( typeof settings == 'function' )
+ settings = { onAfter:settings };
+
+ if( target == 'max' )
+ target = 9e9;
+
+ settings = $.extend( {}, $scrollTo.defaults, settings );
+ // Speed is still recognized for backwards compatibility
+ duration = duration || settings.speed || settings.duration;
+ // Make sure the settings are given right
+ settings.queue = settings.queue && settings.axis.length > 1;
+
+ if( settings.queue )
+ // Let's keep the overall duration
+ duration /= 2;
+ settings.offset = both( settings.offset );
+ settings.over = both( settings.over );
+
+ return this._scrollable().each(function(){
+ var elem = this,
+ $elem = $(elem),
+ targ = target, toff, attr = {},
+ win = $elem.is('html,body');
+
+ switch( typeof targ ){
+ // A number will pass the regex
+ case 'number':
+ case 'string':
+ if( /^([+-]=)?\d+(\.\d+)?(px|%)?$/.test(targ) ){
+ targ = both( targ );
+ // We are done
+ break;
+ }
+ // Relative selector, no break!
+ targ = $(targ,this);
+ case 'object':
+ // DOMElement / jQuery
+ if( targ.is || targ.style )
+ // Get the real position of the target
+ toff = (targ = $(targ)).offset();
+ }
+ $.each( settings.axis.split(''), function( i, axis ){
+ var Pos = axis == 'x' ? 'Left' : 'Top',
+ pos = Pos.toLowerCase(),
+ key = 'scroll' + Pos,
+ old = elem[key],
+ max = $scrollTo.max(elem, axis);
+
+ if( toff ){// jQuery / DOMElement
+ attr[key] = toff[pos] + ( win ? 0 : old - $elem.offset()[pos] );
+
+ // If it's a dom element, reduce the margin
+ if( settings.margin ){
+ attr[key] -= parseInt(targ.css('margin'+Pos)) || 0;
+ attr[key] -= parseInt(targ.css('border'+Pos+'Width')) || 0;
+ }
+
+ attr[key] += settings.offset[pos] || 0;
+
+ if( settings.over[pos] )
+ // Scroll to a fraction of its width/height
+ attr[key] += targ[axis=='x'?'width':'height']() * settings.over[pos];
+ }else{
+ var val = targ[pos];
+ // Handle percentage values
+ attr[key] = val.slice && val.slice(-1) == '%' ?
+ parseFloat(val) / 100 * max
+ : val;
+ }
+
+ // Number or 'number'
+ if( /^\d+$/.test(attr[key]) )
+ // Check the limits
+ attr[key] = attr[key] <= 0 ? 0 : Math.min( attr[key], max );
+
+ // Queueing axes
+ if( !i && settings.queue ){
+ // Don't waste time animating, if there's no need.
+ if( old != attr[key] )
+ // Intermediate animation
+ animate( settings.onAfterFirst );
+ // Don't animate this axis again in the next iteration.
+ delete attr[key];
+ }
+ });
+
+ animate( settings.onAfter );
+
+ function animate( callback ){
+ $elem.animate( attr, duration, settings.easing, callback && function(){
+ callback.call(this, target, settings);
+ });
+ };
+
+ }).end();
+ };
+
+ // Max scrolling position, works on quirks mode
+ // It only fails (not too badly) on IE, quirks mode.
+ $scrollTo.max = function( elem, axis ){
+ var Dim = axis == 'x' ? 'Width' : 'Height',
+ scroll = 'scroll'+Dim;
+
+ if( !$(elem).is('html,body') )
+ return elem[scroll] - $(elem)[Dim.toLowerCase()]();
+
+ var size = 'client' + Dim,
+ html = elem.ownerDocument.documentElement,
+ body = elem.ownerDocument.body;
+
+ return Math.max( html[scroll], body[scroll] )
+ - Math.min( html[size] , body[size] );
+
+ };
+
+ function both( val ){
+ return typeof val == 'object' ? val : { top:val, left:val };
+ };
+
+})( jQuery );
\ No newline at end of file
diff --git a/app/assets/javascripts/jquery.scrollabletab.js b/app/assets/javascripts/jquery.scrollabletab.js
new file mode 100644
index 0000000..f89f8ad
--- /dev/null
+++ b/app/assets/javascripts/jquery.scrollabletab.js
@@ -0,0 +1,277 @@
+/**
+ * jQuery.ScrollableTab - Scrolling multiple tabs.
+ * @copyright (c) 2010 Astun Technology Ltd - http://www.astuntechnology.com
+ * Dual licensed under MIT and GPL.
+ * Date: 28/04/2010
+ * @author Aamir Afridi - aamirafridi(at)gmail(dot)com | http://www.aamirafridi.com
+ * @version 1.01
+ */
+
+;(function($){
+ //Global plugin settings
+ var settings = {
+ 'animationSpeed' : 100, //The speed in which the tabs will animate/scroll
+ 'closable' : false, //Make tabs closable
+ 'resizable' : false, //Alow resizing the tabs container
+ 'resizeHandles' : 'e,s,se', //Resizable in North, East and NorthEast directions
+ 'loadLastTab':false, //When tabs loaded, scroll to the last tab - default is the first tab
+ 'easing':'swing' //The easing equation
+ }
+
+ $.fn.scrollabletab = function(options){
+ //Check if scrollto plugin is available - (pasted the plugin at the end of this plugin)
+ //if(!$.fn.scrollTo) return alert('Error:\nScrollTo plugin not available.');
+
+ return this.each(function(){
+ var o = $.extend({}, settings, options), //Extend the options if any provided
+ $tabs = $(this),
+ $tabsNav = $tabs.find('.ui-tabs-nav'),
+ $nav;//will save the refrence for the wrapper having next and previous buttons
+
+ //Adjust the css class
+ //$tabsNav.removeClass('ui-corner-all').addClass('ui-corner-top');
+ $tabs.css({'padding':2, 'position':'relative'});
+ //$tabsNav.css('position','inherit');
+
+ //Wrap inner items
+ $tabs.wrap('
').find('.ui-tabs-nav').css('overflow','hidden').wrapInner('
');
+
+ var $widthChecker = $tabs.find('.stWidthChecker'),
+ $itemContainer = $tabs.find('.stTabsInnerWrapper'),
+ $tabsWrapper = $tabs.parents('#stTabswrapper').width($tabs.outerWidth(true));
+ //Fixing safari bug
+ if($.browser.safari)
+ {
+ $tabsWrapper.width($tabs.width()+6);
+ }
+ //alert($tabsWrapper.width());
+ if(o.resizable)
+ {
+ if(!!$.fn.resizable)
+ {
+ $tabsWrapper.resizable({
+ minWidth : $tabsWrapper.width(),
+ maxWidth : $tabsWrapper.width()*2,
+ minHeight : $tabsWrapper.height(),
+ maxHeight : $tabsWrapper.height()*2,
+ handles : o.resizeHandles,
+ alsoResize: $tabs,
+ //start : function(){ },
+ resize: function(){
+ $tabs.trigger('resized');
+ }
+ //stop: function(){ $tabs.trigger('scrollToTab',$tabsNav.find('li.ui-tabs-selected')); }
+ });
+ }
+ else
+ {
+ alert('Error:\nCannot be resizable because "jQuery.resizable" plugin is not available.');
+ }
+ }
+
+
+ //Add navigation icons
+ //Total height of nav/2 - total height of arrow/2
+ var arrowsTopMargin = (parseInt(parseInt($tabsNav.innerHeight(true)/2)-8)),
+ arrowsCommonCss={'cursor':'pointer','z-index':1000,'position':'absolute','top':3,'height':$tabsNav.outerHeight()-($.browser.safari ? 2 : 1)};
+ $tabsWrapper.prepend(
+ $nav = $("
")
+ .disableSelection()
+ .css({'position':'relative','z-index':3000,'display':'none'})
+ .append(
+ $("")
+ .disableSelection()
+ .attr('title','Previous tab')
+ .css(arrowsCommonCss)
+ .addClass('ui-state-active ui-corner-tl ui-corner-bl stPrev stNav')
+ .css('left',3)
+ .append($("").disableSelection().addClass('ui-icon ui-icon-carat-1-w').html('Previous tab').css('margin-top',arrowsTopMargin))
+ .click(function(){
+ //Check if disabled
+ if($(this).hasClass('ui-state-disabled')) return;
+ //Just select the previous tab and trigger scrollToTab event
+ prevIndex = $tabsNav.find('li.ui-tabs-selected').prevAll().length-1
+ //Now select the tab
+ $tabsNav.find('li').eq(prevIndex).find('a').trigger('click');
+ return false;
+ }),
+ $("")
+ .disableSelection()
+ .attr('title','Next tab')
+ .css(arrowsCommonCss)
+ .addClass('ui-state-active ui-corner-tr ui-corner-br stNext stNav')
+ .css({'right':3})
+ .append($("").addClass('ui-icon ui-icon-carat-1-e').html('Next tab').css('margin-top',arrowsTopMargin))
+ .click(function(){
+ //Just select the previous tab and trigger scrollToTab event
+ nextIndex = $tabsNav.find('li.ui-tabs-selected').prevAll().length+1
+ //Now select the tab
+ $tabsNav.find('li').eq(nextIndex).find('a').trigger('click');
+ return false;
+ })
+ )
+ );
+
+ //Bind events to the $tabs
+ $tabs
+ .bind('tabsremove', function(){
+ $tabs.trigger('scrollToTab').trigger('navHandler').trigger('navEnabler');
+ })
+ .bind('addCloseButton',function(){
+ //Add close button if require
+ if(!o.closable) return;
+ $(this).find('.ui-tabs-nav li').each(function(){
+ if($(this).find('.ui-tabs-close').length>0) return; //Already has close button
+ var closeTopMargin = parseInt(parseInt($tabsNav.find('li:first').innerHeight()/2,10)-8);
+ $(this).disableSelection().append(
+ $(' ')
+ .click(function()
+ {
+ $tabs.tabs('remove',$(this).parents('li').prevAll().length);
+ //If one tab remaining than hide the close button
+ if($tabs.tabs('length')==1)
+ {
+ $tabsNav.find('.ui-icon-close').hide();
+ }
+ else
+ {
+ $tabsNav.find('.ui-icon-close').show();
+ }
+ //Call the method when tab is closed (if any)
+ if($.isFunction(o.onTabClose))
+ {
+ o.onTabClose();
+ }
+ return false;
+ })
+ );
+ //Show all close buttons if any hidden
+ $tabsNav.find('.ui-icon-close').show();
+ });
+ })
+ .bind('tabsadd',function(event){
+ //Select it on Add
+ $tabs.tabs('select',$tabs.tabs('length')-1);
+ //Now remove the extra span added to the tab (not needed)
+ $lastTab = $tabsNav.find('li:last');
+ if($lastTab.find('a span.stExtraSpan').length>0) $lastTab.find('a').html($lastTab.find('a span').html());
+ //Move the li to the innerwrapper
+ $lastTab.appendTo($widthChecker);
+ //Scroll the navigation to the newly added tab and also add close button to it
+ $tabs
+ .trigger('addCloseButton')
+ .trigger('bindTabClick')
+ .trigger('navHandler')
+ .trigger('scrollToTab');
+ })//End tabsadd
+ .bind('addTab',function(event,label,content){
+ //Generate a random id
+ var tabid = 'stTab-'+(Math.floor(Math.random()*10000));
+ //Append the content to the body
+ $('body').append($('
').append(content));
+ //Add the tab
+ $tabs.tabs('add','#'+tabid,label);
+ })//End addTab
+ .bind('bindTabClick',function(){
+ //Handle scroll when user manually click on a tab
+ $tabsNav.find('a').click(function(){
+ var $liClicked = $(this).parents('li');
+ var navWidth = $nav.find('.stPrev').outerWidth(true);
+ //debug('left='+($liClicked.offset().left)+' and tabs width = '+ ($tabs.width()-navWidth));
+ if(($liClicked.position().left-navWidth)<0)
+ {
+ $tabs.trigger('scrollToTab',[$liClicked,'tabClicked','left'])
+ }
+ else if(($liClicked.outerWidth()+$liClicked.position().left)>($tabs.width()-navWidth))
+ {
+ $tabs.trigger('scrollToTab',[$liClicked,'tabClicked','right'])
+ }
+ //Enable or disable next and prev arrows
+ $tabs.trigger('navEnabler');
+ return false;
+ });
+ })
+ //Bind the event to act when tab is added
+ .bind('scrollToTab',function(event,$tabToScrollTo,clickedFrom,hiddenOnSide){
+ //If tab not provided than scroll to the last tab
+ $tabToScrollTo = (typeof $tabToScrollTo!='undefined') ? $($tabToScrollTo) : $tabsNav.find('li.ui-tabs-selected');
+ //Scroll the pane to the last tab
+ var navWidth = $nav.is(':visible') ? $nav.find('.stPrev').outerWidth(true) : 0;
+ //debug($tabToScrollTo.prevAll().length)
+
+ offsetLeft = -($tabs.width()-($tabToScrollTo.outerWidth(true)+navWidth+parseInt($tabsNav.find('li:last').css('margin-right'),10)));
+ offsetLeft = (clickedFrom=='tabClicked' && hiddenOnSide=='left') ? -navWidth : offsetLeft;
+ offsetLeft = (clickedFrom=='tabClicked' && hiddenOnSide=='right') ? offsetLeft : offsetLeft;
+ //debug(offsetLeft);
+ var scrollSettings = { 'axis':'x', 'margin':true, 'offset': {'left':offsetLeft}, 'easing':o.easing||'' }
+ //debug(-($tabs.width()-(116+navWidth)));
+ $tabsNav.scrollTo($tabToScrollTo,o.animationSpeed,scrollSettings);
+ })
+ .bind('navEnabler',function(){
+ setTimeout(function(){
+ //Check if last or first tab is selected than disable the navigation arrows
+ var isLast = $tabsNav.find('.ui-tabs-selected').is(':last-child'),
+ isFirst = $tabsNav.find('.ui-tabs-selected').is(':first-child'),
+ $ntNav = $tabsWrapper.find('.stNext'),
+ $pvNav = $tabsWrapper.find('.stPrev');
+ //debug('isLast = '+isLast+' - isFirst = '+isFirst);
+ if(isLast)
+ {
+ $pvNav.removeClass('ui-state-disabled');
+ $ntNav.addClass('ui-state-disabled');
+ }
+ else if(isFirst)
+ {
+ $ntNav.removeClass('ui-state-disabled');
+ $pvNav.addClass('ui-state-disabled');
+ }
+ else
+ {
+ $ntNav.removeClass('ui-state-disabled');
+ $pvNav.removeClass('ui-state-disabled');
+ }
+ },o.animationSpeed);
+ })
+ //Now check if tabs need navigation (many tabs out of sight)
+ .bind('navHandler',function(){
+ //Check the width of $widthChecker against the $tabsNav. If widthChecker has bigger width than show the $nav else hide it
+ if($widthChecker.width()>$tabsNav.width())
+ {
+ $nav.show();
+ //Put some margin to the first tab to make it visible if selected
+ $tabsNav.find('li:first').css('margin-left',$nav.find('.stPrev').outerWidth(true));
+ }
+ else
+ {
+ $nav.hide();
+ //Remove the margin from the first element
+ $tabsNav.find('li:first').css('margin-left',0);
+ }
+ })
+ .bind('tabsselect', function() {
+ //$tabs.trigger('navEnabler');
+ })
+ .bind('resized', function() {
+ $tabs.trigger('navHandler');
+ $tabs.trigger('scrollToTab',$tabsNav.find('li.ui-tabs-selected'));
+ })
+ //To add close buttons to the already existing tabs
+ .trigger('addCloseButton')
+ .trigger('bindTabClick')
+ //For the tabs that already exists
+ .trigger('navHandler')
+ .trigger('navEnabler');
+
+ //Select last tab if option is true
+ if(o.loadLastTab)
+ {
+ setTimeout(function(){$tabsNav.find('li:last a').trigger('click')},o.animationSpeed);
+ }
+ });
+
+ //Just for debuging
+ function debug(obj)
+ {console.log(obj)}
+ }
+})(jQuery);
+
diff --git a/app/assets/javascripts/jquery.sound.js b/app/assets/javascripts/jquery.sound.js
new file mode 100644
index 0000000..e86a317
--- /dev/null
+++ b/app/assets/javascripts/jquery.sound.js
@@ -0,0 +1,80 @@
+/**
+ * jQuery sound plugin (no flash)
+ *
+ * port of script.aculo.us' sound.js (http://script.aculo.us), based on code by Jules Gravinese (http://www.webveteran.com/)
+ *
+ * Copyright (c) 2007 Jörn Zaefferer (http://bassistance.de)
+ *
+ * Licensed under the MIT license:
+ * http://www.opensource.org/licenses/mit-license.php
+ *
+ * $Id$
+ */
+
+/**
+ * API Documentation
+ *
+ * // play a sound from the url
+ * $.sound.play(url)
+ *
+ * // play a sound from the url, on a track, stopping any sound already running on that track
+ * $.sound.play(url, {
+ * track: "track1"
+ * });
+ *
+ * // increase the timeout to four seconds before removing the sound object from the dom for longer sounds
+ * $.sound.play(url, {
+ * timeout: 4000
+ * });
+ *
+ * // disable playing sounds
+ * $.sound.enabled = false;
+ *
+ * // enable playing sounds
+ * $.sound.enabled = true
+ */
+
+(function($) {
+
+$.sound = {
+ tracks: {},
+ enabled: true,
+ template: function(src) {
+ return ' ';
+ },
+ play: function(url, options){
+ if (!this.enabled)
+ return;
+ var settings = $.extend({
+ url: url,
+ timeout: 2000
+ }, options);
+
+ if (settings.track) {
+ if (this.tracks[settings.track]) {
+ var current = this.tracks[settings.track];
+ current.Stop && current.Stop();
+ current.remove();
+ }
+ }
+
+ var element = $.browser.msie
+ ? $(' ').attr({
+ src: settings.url,
+ loop: 1,
+ autostart: true
+ })
+ : $(this.template(settings.url));
+ element.appendTo("body");
+
+ if (settings.track) {
+ this.tracks[settings.track] = element;
+ }
+
+ setTimeout(function() {
+ element.remove();
+ }, 2000)
+ }
+};
+
+})(jQuery);
diff --git a/app/assets/javascripts/jquery.tokeninput.js b/app/assets/javascripts/jquery.tokeninput.js
new file mode 100644
index 0000000..3abba0a
--- /dev/null
+++ b/app/assets/javascripts/jquery.tokeninput.js
@@ -0,0 +1,865 @@
+/*
+ * jQuery Plugin: Tokenizing Autocomplete Text Entry
+ * Version 1.5.0
+ * Requires jQuery 1.6+
+ *
+ * Copyright (c) 2009 James Smith (http://loopj.com)
+ * Licensed jointly under the GPL and MIT licenses,
+ * choose which one suits your project best!
+ *
+ */
+
+(function ($) {
+// Default settings
+var DEFAULT_SETTINGS = {
+ hintText: "Type in a search term",
+ noResultsText: "No results",
+ searchingText: "Searching...",
+ deleteText: "×",
+ searchDelay: 300,
+ minChars: 1,
+ permanentDropdown: false,
+ showAllResults: false,
+ tokenLimit: null,
+ jsonContainer: null,
+ method: "GET",
+ contentType: "json",
+ queryParam: "q",
+ tokenDelimiter: ",",
+ preventDuplicates: false,
+ prePopulate: null,
+ processPrePopulate: false,
+ animateDropdown: true,
+ dontAdd: false,
+ onResult: null,
+ onAdd: null,
+ onDelete: null,
+ idPrefix: "token-input-",
+ backspaceDeleteItem: true
+};
+
+// Default classes to use when theming
+var DEFAULT_CLASSES = {
+ tokenList: "token-input-list",
+ token: "token-input-token",
+ tokenDelete: "token-input-delete-token",
+ selectedToken: "token-input-selected-token",
+ highlightedToken: "token-input-highlighted-token",
+ dropdown: "token-input-dropdown",
+ dropdownItem: "token-input-dropdown-item",
+ dropdownItem2: "token-input-dropdown-item2",
+ selectedDropdownItem: "token-input-selected-dropdown-item",
+ inputToken: "token-input-input-token",
+ blurText: "token-input-blur-text",
+};
+
+// Input box position "enum"
+var POSITION = {
+ BEFORE: 0,
+ AFTER: 1,
+ END: 2
+};
+
+// Keys "enum"
+var KEY = {
+ BACKSPACE: 8,
+ DELETE: 46,
+ TAB: 9,
+ ENTER: 13,
+ ESCAPE: 27,
+ SPACE: 32,
+ PAGE_UP: 33,
+ PAGE_DOWN: 34,
+ END: 35,
+ HOME: 36,
+ LEFT: 37,
+ UP: 38,
+ RIGHT: 39,
+ DOWN: 40,
+ NUMPAD_ENTER: 108,
+ COMMA: 188
+};
+
+// Additional public (exposed) methods
+var methods = {
+ init: function(url_or_data_or_function, options) {
+ return this.each(function () {
+ $(this).data("tokenInputObject", new $.TokenList(this, url_or_data_or_function, options));
+ });
+ },
+ clear: function() {
+ this.data("tokenInputObject").clear();
+ return this;
+ },
+ add: function(item) {
+ this.data("tokenInputObject").add(item);
+ return this;
+ },
+ remove: function(item) {
+ this.data("tokenInputObject").remove(item);
+ return this;
+ }
+}
+
+// Expose the .tokenInput function to jQuery as a plugin
+$.fn.tokenInput = function (method) {
+ // Method calling and initialization logic
+ if(methods[method]) {
+ return methods[method].apply(this, Array.prototype.slice.call(arguments, 1));
+ } else {
+ return methods.init.apply(this, arguments);
+ }
+};
+
+// TokenList class for each input
+$.TokenList = function (input, url_or_data, options) {
+ //
+ // Initialization
+ //
+ var settings = $.extend({}, DEFAULT_SETTINGS, options || {});
+
+ // Configure the data source
+ if(typeof(url_or_data) === "string") {
+ // Set the url to query against
+ settings.url = url_or_data;
+
+ // Make a smart guess about cross-domain if it wasn't explicitly specified
+ if(settings.crossDomain === undefined) {
+ if(settings.url.indexOf("://") === -1) {
+ settings.crossDomain = false;
+ } else {
+ settings.crossDomain = (location.href.split(/\/+/g)[1] !== settings.url.split(/\/+/g)[1]);
+ }
+ }
+ } else if(typeof(url_or_data) === "object") {
+ // Set the local data to search through
+ settings.local_data = url_or_data;
+ }
+
+ // Build class names
+ if(settings.classes) {
+ // Use custom class names
+ settings.classes = $.extend({}, DEFAULT_CLASSES, settings.classes);
+ } else if(settings.theme) {
+ // Use theme-suffixed default class names
+ settings.classes = {};
+ $.each(DEFAULT_CLASSES, function(key, value) {
+ settings.classes[key] = value + "-" + settings.theme;
+ });
+ } else {
+ settings.classes = DEFAULT_CLASSES;
+ }
+
+
+ // Save the tokens
+ var saved_tokens = [];
+
+ // Keep track of the number of tokens in the list
+ var token_count = 0;
+
+ // Basic cache to save on db hits
+ var cache = new $.TokenList.Cache();
+
+ // Keep track of the timeout, old vals
+ var timeout;
+ var input_val = '';
+
+ // Create a new text input an attach keyup events
+ var input_box = $(" ")
+ .css({
+ outline: "none"
+ })
+ .attr("id", settings.idPrefix + input.id)
+ .focus(function () {
+ if (settings.tokenLimit === null || settings.tokenLimit !== token_count) {
+ if(settings.permanentDropdown || settings.showAllResults) {
+ hide_dropdown_hint();
+ } else
+ show_dropdown_hint();
+ if (settings.showAllResults)
+ do_search();
+ }
+ })
+ .blur(function () {
+ if(settings.permanentDropdown)
+ show_dropdown_hint();
+ else {
+ hide_dropdown();
+ }
+ })
+ .bind("keyup keydown blur update", resize_input)
+ .keydown(function (event) {
+ var previous_token;
+ var next_token;
+
+ switch(event.keyCode) {
+ case KEY.LEFT:
+ case KEY.RIGHT:
+ case KEY.UP:
+ case KEY.DOWN:
+ if(!$(this).val()) {
+ previous_token = input_token.prev();
+ next_token = input_token.next();
+
+ if((previous_token.length && previous_token.get(0) === selected_token) || (next_token.length && next_token.get(0) === selected_token)) {
+ // Check if there is a previous/next token and it is selected
+ if(event.keyCode === KEY.LEFT || event.keyCode === KEY.UP) {
+ deselect_token($(selected_token), POSITION.BEFORE);
+ } else {
+ deselect_token($(selected_token), POSITION.AFTER);
+ }
+ } else if((event.keyCode === KEY.LEFT || event.keyCode === KEY.UP) && previous_token.length) {
+ // We are moving left, select the previous token if it exists
+ select_token($(previous_token.get(0)));
+ } else if((event.keyCode === KEY.RIGHT || event.keyCode === KEY.DOWN) && next_token.length) {
+ // We are moving right, select the next token if it exists
+ select_token($(next_token.get(0)));
+ }
+ } else {
+ var dropdown_item = null;
+
+ if (event.keyCode == KEY.LEFT && (this.selectionStart > 0 || this.selectionStart != this.selectionEnd))
+ return true;
+ else if (event.keyCode == KEY.RIGHT && (this.selectionEnd < $(this).val().length || this.selectionStart != this.selectionEnd))
+ return true;
+ else if(event.keyCode === KEY.DOWN || event.keyCode === KEY.RIGHT) {
+ dropdown_item = $(selected_dropdown_item).next();
+ } else {
+ dropdown_item = $(selected_dropdown_item).prev();
+ }
+
+ if(dropdown_item.length) {
+ select_dropdown_item(dropdown_item);
+ }
+ return false;
+ }
+ break;
+
+ case KEY.BACKSPACE:
+ case KEY.DELETE:
+ previous_token = input_token.prev();
+ next_token = input_token.next();
+
+ if(!$(this).val().length && settings.backspaceDeleteItem) {
+ if(selected_token) {
+ delete_token($(selected_token));
+ input_box.focus();
+ } else if(KEY.DELETE && next_token.length) {
+ select_token($(next_token.get(0)));
+ } else if(KEY.BACKSPACE && previous_token.length) {
+ select_token($(previous_token.get(0)));
+ }
+
+ return false;
+ } else if(!settings.permanentDropdown && $(this).val().length === 1) {
+ hide_dropdown();
+ } else {
+ // set a timeout just long enough to let this function finish.
+ setTimeout(function(){do_search();}, 5);
+ }
+ break;
+
+ case KEY.TAB:
+ case KEY.ENTER:
+ case KEY.NUMPAD_ENTER:
+ case KEY.COMMA:
+ if(selected_dropdown_item) {
+ add_token($(selected_dropdown_item).data("tokeninput"));
+ input_box.focus();
+ return false;
+ }
+ break;
+
+ case KEY.ESCAPE:
+ hide_dropdown();
+ return true;
+
+ default:
+ if(String.fromCharCode(event.which)) {
+ // set a timeout just long enough to let this function finish.
+ setTimeout(function(){do_search();}, 5);
+ }
+ break;
+ }
+ });
+
+ // Keep a reference to the original input box
+ var hidden_input = $(input)
+ .hide()
+ .val("")
+ .focus(function () {
+ input_box.focus();
+ })
+ .blur(function () {
+ input_box.blur();
+ });
+
+ // Keep a reference to the selected token and dropdown item
+ var selected_token = null;
+ var selected_token_index = 0;
+ var selected_dropdown_item = null;
+
+ // The list to store the token items in
+ var token_list = $("")
+ .addClass(settings.classes.tokenList)
+ .click(function (event) {
+ var li = $(event.target).closest("li");
+ if(li && li.get(0) && $.data(li.get(0), "tokeninput")) {
+ toggle_select_token(li);
+ } else {
+ // Deselect selected token
+ if(selected_token) {
+ deselect_token($(selected_token), POSITION.END);
+ }
+
+ // Transfer focus
+ if (!input_box.is(':focus'))
+ input_box.focus();
+ }
+ })
+ .mouseover(function (event) {
+ var li = $(event.target).closest("li");
+ if(li && selected_token !== this) {
+ li.addClass(settings.classes.highlightedToken);
+ }
+ })
+ .mouseout(function (event) {
+ var li = $(event.target).closest("li");
+ if(li && selected_token !== this) {
+ li.removeClass(settings.classes.highlightedToken);
+ }
+ })
+ .insertBefore(hidden_input);
+
+ // The token holding the input box
+ var input_token = $(" ")
+ .addClass(settings.classes.inputToken)
+ .appendTo(token_list)
+ .append(input_box);
+
+ // The list to store the dropdown items in
+ var dropdown = $("")
+ .addClass(settings.classes.dropdown)
+ .hide();
+ dropdown.appendTo("body");
+ if (!settings.permanentDropdown)
+ dropdown.appendTo("body");
+ else
+ $(input).after(dropdown.show());
+
+ if (settings.permanentDropdown || settings.showAllResults) {
+ do_search();
+ if (!settings.permanentDropdown && settings.showAllResults)
+ hide_dropdown();
+ }
+
+ // Hint for permanentDropdown
+ if (settings.permanentDropdown || settings.showAllResults)
+ show_dropdown_hint();
+
+ // Magic element to help us resize the text input
+ var input_resizer = $("
")
+ .insertAfter(input_box)
+ .css({
+ position: "absolute",
+ top: -9999,
+ left: -9999,
+ width: "auto",
+ fontSize: input_box.css("fontSize"),
+ fontFamily: input_box.css("fontFamily"),
+ fontWeight: input_box.css("fontWeight"),
+ letterSpacing: input_box.css("letterSpacing"),
+ whiteSpace: "nowrap"
+ });
+
+ // Pre-populate list if items exist
+ hidden_input.val("");
+ var li_data = settings.prePopulate || hidden_input.data("pre");
+ if(settings.processPrePopulate && $.isFunction(settings.onResult)) {
+ li_data = settings.onResult.call(hidden_input, li_data);
+ }
+ if(li_data && li_data.length) {
+ $.each(li_data, function (index, value) {
+ insert_token(value);
+ checkTokenLimit();
+ });
+ }
+
+
+ //
+ // Public functions
+ //
+
+ this.clear = function() {
+ token_list.children("li").each(function() {
+ if ($(this).children("input").length === 0) {
+ delete_token($(this));
+ }
+ });
+ }
+
+ this.add = function(item) {
+ add_token(item);
+ }
+
+ this.remove = function(item) {
+ token_list.children("li").each(function() {
+ if ($(this).children("input").length === 0) {
+ var currToken = $(this).data("tokeninput");
+ var match = true;
+ for (var prop in item) {
+ if (item[prop] !== currToken[prop]) {
+ match = false;
+ break;
+ }
+ }
+ if (match) {
+ delete_token($(this));
+ }
+ }
+ });
+ }
+
+ //
+ // Private functions
+ //
+
+ function checkTokenLimit() {
+ if(settings.tokenLimit !== null && token_count >= settings.tokenLimit) {
+ input_box.hide();
+ hide_dropdown();
+ return;
+ } else {
+ input_box.focus();
+ }
+ }
+
+ function resize_input() {
+ if(input_val === (input_val = input_box.val())) {return;}
+
+ // Enter new content into resizer and resize input accordingly
+ var escaped = input_val.replace(/&/g, '&').replace(/\s/g,' ').replace(//g, '>');
+ input_resizer.html(escaped);
+ input_box.width(input_resizer.width() + 30);
+
+ if((settings.permanentDropdown || settings.showAllResults) && input_box.hasClass(settings.classes.blurText))
+ input_val = '';
+ }
+
+ function is_printable_character(keycode) {
+ return ((keycode >= 48 && keycode <= 90) || // 0-1a-z
+ (keycode >= 96 && keycode <= 111) || // numpad 0-9 + - / * .
+ (keycode >= 186 && keycode <= 192) || // ; = , - . / ^
+ (keycode >= 219 && keycode <= 222)); // ( \ ) '
+ }
+
+ // Inner function to a token to the list
+ function insert_token(item) {
+ var this_token = $("
"+ item.name +"
")
+ .addClass(settings.classes.token)
+ .insertBefore(input_token);
+
+ // The 'delete token' button
+ $("
" + settings.deleteText + " ")
+ .addClass(settings.classes.tokenDelete)
+ .appendTo(this_token)
+ .click(function () {
+ delete_token($(this).parent());
+ return false;
+ });
+
+ // Store data on the token
+ var token_data = {"id": item.id, "name": item.name};
+ $.data(this_token.get(0), "tokeninput", item);
+
+ // Save this token for duplicate checking
+ saved_tokens = saved_tokens.slice(0,selected_token_index).concat([token_data]).concat(saved_tokens.slice(selected_token_index));
+ selected_token_index++;
+
+ // Update the hidden input
+ var token_ids = $.map(saved_tokens, function (el) {
+ return el.id;
+ });
+ hidden_input.val(token_ids.join(settings.tokenDelimiter));
+
+ token_count += 1;
+
+ return this_token;
+ }
+
+ // Add a token to the token list based on user input
+ function add_token (item) {
+ if (settings.dontAdd)
+ return;
+
+ var callback = settings.onAdd;
+
+ // See if the token already exists and select it if we don't want duplicates
+ if(token_count > 0 && settings.preventDuplicates) {
+ var found_existing_token = null;
+ token_list.children().each(function () {
+ var existing_token = $(this);
+ var existing_data = $.data(existing_token.get(0), "tokeninput");
+ if(existing_data && existing_data.id === item.id) {
+ found_existing_token = existing_token;
+ return false;
+ }
+ });
+
+ if(found_existing_token) {
+ select_token(found_existing_token);
+ input_token.insertAfter(found_existing_token);
+ return;
+ }
+ }
+
+ // Insert the new tokens
+ insert_token(item);
+ checkTokenLimit();
+
+ // Clear input box
+ input_box.val("");
+
+ // Don't show the help dropdown, they've got the idea
+ hide_dropdown();
+
+ // Execute the onAdd callback if defined
+ if($.isFunction(callback)) {
+ callback.call(hidden_input,item);
+ }
+ }
+
+ // Select a token in the token list
+ function select_token (token) {
+ token.addClass(settings.classes.selectedToken);
+ selected_token = token.get(0);
+
+ // Hide input box
+ input_box.val("");
+
+ // Hide dropdown if it is visible (eg if we clicked to select token)
+ hide_dropdown();
+ }
+
+ // Deselect a token in the token list
+ function deselect_token (token, position) {
+ token.removeClass(settings.classes.selectedToken);
+ selected_token = null;
+
+ if(position === POSITION.BEFORE) {
+ input_token.insertBefore(token);
+ selected_token_index--;
+ } else if(position === POSITION.AFTER) {
+ input_token.insertAfter(token);
+ selected_token_index++;
+ } else {
+ input_token.appendTo(token_list);
+ selected_token_index = token_count;
+ }
+
+ // Show the input box and give it focus again
+ input_box.focus();
+ }
+
+ // Toggle selection of a token in the token list
+ function toggle_select_token(token) {
+ var previous_selected_token = selected_token;
+
+ if(selected_token) {
+ deselect_token($(selected_token), POSITION.END);
+ }
+
+ if(previous_selected_token === token.get(0)) {
+ deselect_token(token, POSITION.END);
+ } else {
+ select_token(token);
+ }
+ }
+
+ // Delete a token from the token list
+ function delete_token (token) {
+ // Remove the id from the saved list
+ var token_data = $.data(token.get(0), "tokeninput");
+ var callback = settings.onDelete;
+
+ var index = token.prevAll().length;
+ if(index > selected_token_index) index--;
+
+ // Delete the token
+ token.remove();
+ selected_token = null;
+
+ // Remove this token from the saved list
+ saved_tokens = saved_tokens.slice(0,index).concat(saved_tokens.slice(index+1));
+ if(index < selected_token_index) selected_token_index--;
+
+ // Update the hidden input
+ var token_ids = $.map(saved_tokens, function (el) {
+ return el.id;
+ });
+ hidden_input.val(token_ids.join(settings.tokenDelimiter));
+
+ token_count -= 1;
+
+ if(settings.tokenLimit !== null)
+ input_box.show().val("");
+
+ // Execute the onDelete callback if defined
+ if($.isFunction(callback)) {
+ callback.call(hidden_input,token_data);
+ }
+ }
+
+ // Hide and clear the results dropdown
+ function hide_dropdown () {
+ if (!settings.permanentDropdown) {
+ dropdown.hide();
+ if (!settings.showAllResults)
+ dropdown.empty();
+ selected_dropdown_item = null;
+ }
+ if (settings.showAllResults)
+ show_dropdown_hint();
+ }
+
+ function show_dropdown() {
+ if (!settings.permanentDropdown)
+ dropdown.css({
+ position: "absolute",
+ top: $(token_list).offset().top + $(token_list).outerHeight(),
+ left: $(token_list).offset().left,
+ zindex: 999
+ }).show();
+ else
+ dropdown.css({
+ position: "relative",
+ }).show();
+ }
+
+ function show_dropdown_searching () {
+ if(settings.searchingText) {
+ dropdown.html("
"+settings.searchingText+"
");
+ show_dropdown();
+ }
+ }
+
+ function show_dropdown_hint () {
+ if(settings.hintText) {
+ if(settings.permanentDropdown || settings.showAllResults) {
+ if (input_val == '') {
+ input_box.val(settings.hintText);
+ input_box.addClass(settings.classes.blurText);
+ }
+ } else {
+ dropdown.html("
"+settings.hintText+"
");
+ show_dropdown();
+ }
+ }
+ }
+
+ function hide_dropdown_hint () {
+ if (input_box.hasClass(settings.classes.blurText)) {
+ input_box.val('');
+ input_box.removeClass(settings.classes.blurText);
+ }
+ }
+
+ // Highlight the query part of the search term
+ function highlight_term(value, term) {
+ return value.replace(new RegExp("(?![^&;]+;)(?!<[^<>]*)(" + term + ")(?![^<>]*>)(?![^&;]+;)", "gi"), "
$1 ");
+ }
+
+ // Populate the results dropdown with some results
+ function populate_dropdown (query, results) {
+ if(results && results.length) {
+ dropdown.empty();
+ var dropdown_ul = $("
")
+ .appendTo(dropdown)
+ .mouseover(function (event) {
+ select_dropdown_item($(event.target).closest("li"));
+ })
+ .mousedown(function (event) {
+ add_token($(event.target).closest("li").data("tokeninput"));
+ input_box.blur();
+ return false;
+ })
+ .hide();
+
+ $.each(results, function(index, value) {
+ var this_li = $("" + highlight_term(value.name, query) + " ")
+ .appendTo(dropdown_ul);
+
+ if(index % 2) {
+ this_li.addClass(settings.classes.dropdownItem);
+ } else {
+ this_li.addClass(settings.classes.dropdownItem2);
+ }
+
+ if(index === 0) {
+ select_dropdown_item(this_li);
+ }
+
+ $.data(this_li.get(0), "tokeninput", value);
+ });
+
+ show_dropdown();
+
+ if(settings.animateDropdown) {
+ dropdown_ul.slideDown("fast");
+ } else {
+ dropdown_ul.show();
+ }
+ } else {
+ if(settings.noResultsText) {
+ dropdown.html(""+settings.noResultsText+"
");
+ show_dropdown();
+ }
+ }
+ }
+
+ // Highlight an item in the results dropdown
+ function select_dropdown_item (item) {
+ if(item) {
+ if(selected_dropdown_item) {
+ deselect_dropdown_item($(selected_dropdown_item));
+ }
+
+ item.addClass(settings.classes.selectedDropdownItem);
+ selected_dropdown_item = item.get(0);
+
+ isBefore = item[0].offsetTop <= (dropdown[0].scrollTop + dropdown[0].scrollWidth);
+ isAfter = item[0].offsetTop >= dropdown[0].scrollTop;
+ visible = isBefore && isAfter;
+ if (!visible) {
+ if (isBefore)
+ dropdown[0].scrollTop = item[0].offsetTop;
+ else //isAfter
+ dropdown[0].scrollTop = item[0].offsetTop - dropdown[0].scrollWidth;
+ }
+ }
+ }
+
+ // Remove highlighting from an item in the results dropdown
+ function deselect_dropdown_item (item) {
+ item.removeClass(settings.classes.selectedDropdownItem);
+ selected_dropdown_item = null;
+ }
+
+ // Do a search and show the "searching" dropdown if the input is longer
+ // than settings.minChars
+ function do_search() {
+ var query = input_box.val().toLowerCase();
+
+ if(query && query.length) {
+ if(selected_token) {
+ deselect_token($(selected_token), POSITION.AFTER);
+ }
+
+ if(query.length >= settings.minChars) {
+ show_dropdown_searching();
+ clearTimeout(timeout);
+
+ timeout = setTimeout(function(){
+ run_search(query);
+ }, settings.searchDelay);
+ } else {
+ hide_dropdown();
+ }
+ } else if (settings.permanentDropdown || settings.showAllResults)
+ run_search('');
+ }
+
+ // Do the actual search
+ function run_search(query) {
+ var cached_results = cache.get(query);
+ if(cached_results) {
+ populate_dropdown(query, cached_results);
+ } else {
+ // Are we doing an ajax search or local data search?
+ if(settings.url) {
+ // Extract exisiting get params
+ var ajax_params = {};
+ ajax_params.data = {};
+ if(settings.url.indexOf("?") > -1) {
+ var parts = settings.url.split("?");
+ ajax_params.url = parts[0];
+
+ var param_array = parts[1].split("&");
+ $.each(param_array, function (index, value) {
+ var kv = value.split("=");
+ ajax_params.data[kv[0]] = kv[1];
+ });
+ } else {
+ ajax_params.url = settings.url;
+ }
+
+ // Prepare the request
+ ajax_params.data[settings.queryParam] = query;
+ ajax_params.type = settings.method;
+ ajax_params.dataType = settings.contentType;
+ if(settings.crossDomain) {
+ ajax_params.dataType = "jsonp";
+ }
+
+ // Attach the success callback
+ ajax_params.success = function(results) {
+ if($.isFunction(settings.onResult)) {
+ results = settings.onResult.call(hidden_input, results);
+ }
+ cache.add(query, settings.jsonContainer ? results[settings.jsonContainer] : results);
+
+ // only populate the dropdown if the results are associated with the active search query
+ if(input_box.val().toLowerCase() === query) {
+ populate_dropdown(query, settings.jsonContainer ? results[settings.jsonContainer] : results);
+ }
+ };
+
+ // Make the request
+ $.ajax(ajax_params);
+ } else if(settings.local_data) {
+ // Do the search through local data
+ var results = $.grep(settings.local_data, function (row) {
+ return row.name.toLowerCase().indexOf(query.toLowerCase()) > -1;
+ });
+
+ if($.isFunction(settings.onResult)) {
+ results = settings.onResult.call(hidden_input, results);
+ }
+ cache.add(query, results);
+ populate_dropdown(query, results);
+ }
+ }
+ }
+};
+
+// Really basic cache for the results
+$.TokenList.Cache = function (options) {
+ var settings = $.extend({
+ max_size: 500
+ }, options);
+
+ var data = {};
+ var size = 0;
+
+ var flush = function () {
+ data = {};
+ size = 0;
+ };
+
+ this.add = function (query, results) {
+ if(size > settings.max_size) {
+ flush();
+ }
+
+ if(!data[query]) {
+ size += 1;
+ }
+
+ data[query] = results;
+ };
+
+ this.get = function (query) {
+ return data[query];
+ };
+};
+}(jQuery));
diff --git a/app/assets/javascripts/lightbox.js b/app/assets/javascripts/lightbox.js
new file mode 100644
index 0000000..4421a1a
--- /dev/null
+++ b/app/assets/javascripts/lightbox.js
@@ -0,0 +1,232 @@
+/*
+Created By: Chris Campbell
+Website: http://particletree.com
+Date: 2/1/2006
+
+Inspired by the lightbox implementation found at http://www.huddletogether.com/projects/lightbox/
+*/
+
+/*-------------------------------GLOBAL VARIABLES------------------------------------*/
+
+var detect = navigator.userAgent.toLowerCase();
+var OS,browser,version,total,thestring;
+
+/*-----------------------------------------------------------------------------------------------*/
+
+//Browser detect script origionally created by Peter Paul Koch at http://www.quirksmode.org/
+
+function getBrowserInfo() {
+ if (checkIt('konqueror')) {
+ browser = "Konqueror";
+ OS = "Linux";
+ }
+ else if (checkIt('safari')) browser = "Safari"
+ else if (checkIt('omniweb')) browser = "OmniWeb"
+ else if (checkIt('opera')) browser = "Opera"
+ else if (checkIt('webtv')) browser = "WebTV";
+ else if (checkIt('icab')) browser = "iCab"
+ else if (checkIt('msie')) browser = "Internet Explorer"
+ else if (!checkIt('compatible')) {
+ browser = "Netscape Navigator"
+ version = detect.charAt(8);
+ }
+ else browser = "An unknown browser";
+
+ if (!version) version = detect.charAt(place + thestring.length);
+
+ if (!OS) {
+ if (checkIt('linux')) OS = "Linux";
+ else if (checkIt('x11')) OS = "Unix";
+ else if (checkIt('mac')) OS = "Mac"
+ else if (checkIt('win')) OS = "Windows"
+ else OS = "an unknown operating system";
+ }
+}
+
+function checkIt(string) {
+ place = detect.indexOf(string) + 1;
+ thestring = string;
+ return place;
+}
+
+/*-----------------------------------------------------------------------------------------------*/
+
+Event.observe(window, 'load', getBrowserInfo, false);
+
+var lightbox = Class.create();
+
+lightbox.prototype = {
+
+ yPos : 0,
+ xPos : 0,
+
+ initialize: function(ctrl) {
+ this.content = ctrl.href;
+ if (ctrl.id != '') {
+ this.lightbox_className = ctrl.id;
+ }
+ ctrl.onclick = function(){return false;};
+ ctrl.lightbox = this;
+ },
+
+ // Turn everything on - mainly the IE fixes
+ activate: function(){
+ if (browser == 'Internet Explorer'){
+ this.getScroll();
+ this.prepareIE('100%', 'hidden');
+ this.setScroll(0,0);
+ this.hideSelects('hidden');
+ }
+ this.hideObjectsAndEmbeds('hidden');
+ this.displayLightbox("block");
+ },
+
+ // Ie requires height to 100% and overflow hidden or else you can scroll down past the lightbox
+ prepareIE: function(height, overflow){
+ bod = document.getElementsByTagName('body')[0];
+ bod.style.height = height;
+ bod.style.overflow = overflow;
+
+ htm = document.getElementsByTagName('html')[0];
+ htm.style.height = height;
+ htm.style.overflow = overflow;
+ },
+
+ // In IE, select elements hover on top of the lightbox
+ hideSelects: function(visibility){
+ selects = document.getElementsByTagName('select');
+ for(i = 0; i < selects.length; i++) {
+ selects[i].style.visibility = visibility;
+ }
+ },
+
+ // In FF, objects and embeds elements hover on top of the lightbox
+ hideObjectsAndEmbeds: function(visibility){
+ var f = function(collection) {
+ for(i = 0; i < collection.length; i++) {
+ if (collection[i].style) {
+ collection[i].style.visibility = visibility;
+ }
+ }
+ };
+ f(document.getElementsByTagName('object'));
+ f(document.getElementsByTagName('embed'));
+ },
+
+ // Taken from lightbox implementation found at http://www.huddletogether.com/projects/lightbox/
+ getScroll: function(){
+ if (self.pageYOffset) {
+ this.yPos = self.pageYOffset;
+ } else if (document.documentElement && document.documentElement.scrollTop){
+ this.yPos = document.documentElement.scrollTop;
+ } else if (document.body) {
+ this.yPos = document.body.scrollTop;
+ }
+ },
+
+ setScroll: function(x, y){
+ window.scrollTo(x, y);
+ },
+
+ displayLightbox: function(display){
+ $('overlay').style.display = display;
+ $('lightbox').style.display = display;
+ if(display != 'none') this.loadInfo();
+ },
+
+ // Begin Ajax request based off of the href of the clicked linked
+ loadInfo: function() {
+ var myAjax = new Ajax.Request(
+ this.content,
+ {method: 'post', parameters: "", onComplete: this.processInfo.bindAsEventListener(this)}
+ );
+
+ },
+
+ // Display Ajax response
+ processInfo: function(response){
+ info = "" + response.responseText + "
";
+ new Insertion.Before($('lbLoadMessage'), info)
+ if (this.lightbox_className) {
+ $('lightbox').className = "done " + this.lightbox_className;
+ } else {
+ $('lightbox').className = "done";
+ }
+ this.actions();
+ },
+
+ // Search through new links within the lightbox, and attach click event
+ actions: function(){
+ lbActions = document.getElementsByClassName('lbAction');
+
+ for(i = 0; i < lbActions.length; i++) {
+ Event.observe(lbActions[i], 'click', this[lbActions[i].rel].bindAsEventListener(this), false);
+ lbActions[i].onclick = function(){return false;};
+ }
+
+ },
+
+ // Example of creating your own functionality once lightbox is initiated
+ insert: function(e){
+ link = Event.element(e).parentNode;
+ Element.remove($('lbContent'));
+
+ var myAjax = new Ajax.Request(
+ link.href,
+ {method: 'post', parameters: "", onComplete: this.processInfo.bindAsEventListener(this)}
+ );
+
+ },
+
+ // Example of creating your own functionality once lightbox is initiated
+ deactivate: function(){
+ Element.remove($('lbContent'));
+
+ if (browser == "Internet Explorer"){
+ this.setScroll(0,this.yPos);
+ this.prepareIE("auto", "auto");
+ this.hideSelects("visible");
+ }
+ this.hideObjectsAndEmbeds("visible");
+ this.displayLightbox("none");
+ }
+}
+
+/*-----------------------------------------------------------------------------------------------*/
+
+jQuery('.lbOn').live('click', function(event) {
+ if (jQuery('#lbLoadMessage').length == 0)
+ addLightboxMarkup();
+ if (this.lightbox == undefined)
+ valid = new lightbox(this);
+ else {
+ removeLightboxMarkup();
+ addLightboxMarkup();
+ }
+
+ this.lightbox.activate();
+
+ event.preventDefault();
+ return false;
+});
+
+// Add in markup necessary to make this work. Basically two divs:
+// Overlay holds the shadow
+// Lightbox is the centered square that the content is put into.
+function addLightboxMarkup() {
+ bod = document.getElementsByTagName('body')[0];
+ overlay = document.createElement('div');
+ overlay.id = 'overlay';
+ lb = document.createElement('div');
+ lb.id = 'lightbox';
+ lb.className = 'loading';
+ lb.innerHTML = '' +
+ '
' +
+ '
';
+ bod.appendChild(overlay);
+ bod.appendChild(lb);
+}
+function removeLightboxMarkup() {
+ Element.remove($('overlay'));
+ Element.remove($('lightbox'));
+}
diff --git a/app/assets/javascripts/lowpro.js b/app/assets/javascripts/lowpro.js
new file mode 100644
index 0000000..4ed4443
--- /dev/null
+++ b/app/assets/javascripts/lowpro.js
@@ -0,0 +1,338 @@
+LowPro = {};
+LowPro.Version = '0.5';
+LowPro.CompatibleWithPrototype = '1.6';
+
+if (Prototype.Version.indexOf(LowPro.CompatibleWithPrototype) != 0 && window.console && window.console.warn)
+ console.warn("This version of Low Pro is tested with Prototype " + LowPro.CompatibleWithPrototype +
+ " it may not work as expected with this version (" + Prototype.Version + ")");
+
+if (!Element.addMethods)
+ Element.addMethods = function(o) { Object.extend(Element.Methods, o) };
+
+// Simple utility methods for working with the DOM
+DOM = {};
+
+// DOMBuilder for prototype
+DOM.Builder = {
+ tagFunc : function(tag) {
+ return function() {
+ var attrs, children;
+ if (arguments.length>0) {
+ if (arguments[0].constructor == Object) {
+ attrs = arguments[0];
+ children = Array.prototype.slice.call(arguments, 1);
+ } else {
+ children = arguments;
+ };
+ children = $A(children).flatten()
+ }
+ return DOM.Builder.create(tag, attrs, children);
+ };
+ },
+ create : function(tag, attrs, children) {
+ attrs = attrs || {}; children = children || []; tag = tag.toLowerCase();
+ var el = new Element(tag, attrs);
+
+ for (var i=0; i 1 ? '.' + x[1] : '';
+ var rgx = /(\d+)(\d{3})/;
+ while (rgx.test(x1)) {
+ x1 = x1.replace(rgx, '$1' + ',' + '$2');
+ }
+ return x1 + x2;
+}
+
+function floatToCurrency(value, sep, del, cur) {
+ var ret = '';
+ if (cur) ret = cur + ' ';
+ if (!sep) sep = '.';
+ if (!del) del = ',';
+ return ret + addCommas(parseFloat(value).toFixed(2).toString()).replace('.', '%sep%').replace(',', del).replace('%sep%', sep);
+}
+
+function currencyToFloat(value, sep, del, cur) {
+ var val = value;
+ if (cur) val = val.replace(cur + ' ', '');
+ if (!sep) sep = '.';
+ if (!del) del = ',';
+ return parseFloat(val.replace(del, '').replace(sep, '.'));
+}
+
+function productionCostTypeChange(select, url, question, error_msg) {
+ if (select.value == '') {
+ var newType = prompt(question);
+ if (newType) {
+ jQuery.ajax({
+ url: url + "/" + newType,
+ dataType: 'json',
+ success: function(data, status, ajax){
+ if (data.ok) {
+ var opt = jQuery('' + newType + ' ');
+ opt.insertBefore(jQuery("option:last", select));
+ select.selectedIndex = select.options.length - 2;
+ opt.clone().insertBefore('#new-cost-fields .production-cost-selection option:last');
+ } else {
+ alert(data.error_msg);
+ }
+ },
+ error: function(ajax, status, error){
+ alert(error_msg);
+ }
+ });
+ }
+ }
+}
+
+function priceCompositionBar(value, described, total_cost, price) {
+ jQuery(function($) {
+ var bar_area = $('#price-composition-bar');
+ $(bar_area).find('#progressbar').progressbar({
+ value: value
+ });
+ $(bar_area).find('.production_cost').html(floatToCurrency(total_cost, currency_format.separator, currency_format.delimiter));
+ $(bar_area).find('.product_price').html(floatToCurrency(price, currency_format.separator, currency_format.delimiter));
+ if (described) {
+ $(bar_area).find('#progressbar-icon').addClass('ui-icon-check');
+ $(bar_area).find('#progressbar-icon').attr('title', $('#progressbar-icon').attr('data-price-described-message'));
+ $(bar_area).find('div.ui-progressbar-value').addClass('price-described');
+ } else {
+ $(bar_area).find('#progressbar-icon').removeClass('ui-icon-check');
+ $(bar_area).find('#progressbar-icon').attr('title', $('#progressbar-icon').attr('data-price-not-described-message'));
+ $(bar_area).find('div.ui-progressbar-value').removeClass('price-described');
+
+ }
+ });
+}
diff --git a/app/assets/javascripts/miscellaneous.js b/app/assets/javascripts/miscellaneous.js
new file mode 100644
index 0000000..c006dce
--- /dev/null
+++ b/app/assets/javascripts/miscellaneous.js
@@ -0,0 +1,934 @@
+function noosfero_init() {
+ // focus_first_field(); it is moving the page view when de form is down.
+}
+
+/* If applicable, find the first field in which the user can type and move the
+ * keyboard focus to it.
+ *
+ * ToDo: focus only inside the view box to do not roll the page.
+ */
+function focus_first_field() {
+ form = document.forms[0];
+ if (form == undefined) {
+ return;
+ }
+
+ for (var i = 0; i < form.elements.length; i++) {
+ field = form.elements[i];
+ if (field.type == 'text' || field.type == 'textarea') {
+ try {
+ field.focus();
+ return;
+ } catch(e) { }
+ }
+ }
+}
+
+/* * * Convert a string to a valid login name * * */
+function convToValidLogin( str ) {
+ return convToValidIdentifier(str, '')
+}
+
+/* * * Convert a string to a valid login name * * */
+function convToValidIdentifier( str, sep ) {
+ return str.toLowerCase()
+ .replace( /@.*$/, "" )
+ .replace( /á|à |ã|â/g, "a" )
+ .replace( /é|ê/g, "e" )
+ .replace( /Ã/g, "i" )
+ .replace( /ó|ô|õ|ö/g, "o" )
+ .replace( /ú|ũ|ü/g, "u" )
+ .replace( /ñ/g, "n" )
+ .replace( /ç/g, "c" )
+ .replace( /[^-_a-z0-9.]+/g, sep )
+}
+
+function updateUrlField(name_field, id) {
+ url_field = $(id);
+ old_url_value = url_field.value;
+ new_url_value = convToValidIdentifier(name_field.value, "-");
+
+ url_field.value = new_url_value;
+
+ if (!/^\s*$/.test(old_url_value)
+ && old_url_value != new_url_value
+ ) {
+ warn_value_change(url_field);
+ }
+}
+
+function show_warning(field, message) {
+ new Effect.Highlight(field, {duration:3});
+ $(message).show();
+}
+
+function hide_warning(field) {
+ $(field).hide();
+}
+
+function enable_button(button) {
+ button.enable();
+ button.removeClassName("disabled");
+}
+
+function disable_button(button) {
+ button.disable();
+ button.addClassName("disabled");
+}
+
+function toggleDisabled(enable, element) {
+ if (enable) {
+ enable_button(element);
+ }
+ else {
+ disable_button(element);
+ }
+}
+
+/* ICON SELECTOR - LinkListBlock */
+
+function showIconSelector(main_div) {
+ iconSelector = jQuery(main_div).children('.icon-selector')[0];
+ jQuery(iconSelector).toggle();
+}
+
+function changeIcon(iconSelected, iconName) {
+ iconSelector = iconSelected.parentNode;
+ setTimeout('iconSelector.style.display = "none"', 100);
+ main_div = iconSelector.parentNode;
+ span = main_div.getElementsByTagName('span')[0];
+ span.className = iconSelected.className;
+ iconInput = main_div.getElementsByTagName('input')[0];
+ iconInput.value = iconName;
+}
+
+function hideOthersIconSelector(current_div) {
+ jQuery('.icon-selector').not(jQuery(current_div).children('.icon-selector')).hide();
+}
+
+function loading(element_id, message) {
+ $(element_id).addClassName('loading');
+ if (message) {
+ $(element_id).update(message);
+ }
+}
+function small_loading(element_id, message) {
+ $(element_id).addClassName('small-loading');
+ if (message) {
+ $(element_id).update(message);
+ }
+}
+function loading_done(element_id) {
+ $(element_id).removeClassName('loading');
+ $(element_id).removeClassName('small-loading');
+ $(element_id).removeClassName('small-loading-dark');
+}
+function open_loading(message) {
+ jQuery('body').append("
"+message+"
");
+ jQuery('#overlay_loading').show();
+ jQuery('#overlay_loading_modal').fadeIn('slow');
+}
+function close_loading() {
+ jQuery('#overlay_loading_modal').fadeOut('slow', function() {
+ jQuery('#overlay_loading_modal').remove();
+ jQuery('#overlay_loading').remove();
+ });
+}
+function update_loading(message) {
+ jQuery('#overlay_loading_modal p').text(message);
+}
+
+function redirect_to(url) {
+ document.location=url;
+}
+
+/* Products edition */
+
+function numbersonly(e, separator) {
+ var key;
+ var keychar;
+ if (window.event) {
+ key = window.event.keyCode;
+ }
+ else if (e) {
+ key = e.which;
+ }
+ else {
+ return true;
+ }
+ keychar = String.fromCharCode(key);
+
+ if ((key==null) || (key==0) || (key==8) || (key==9) || (key==13) || (key==27) ) {
+ return true;
+ }
+ else if ((("0123456789").indexOf(keychar) > -1)) {
+ return true;
+ }
+ else if (keychar == separator) {
+ if (e.target.value.indexOf(separator) > -1) {
+ return false;
+ }
+ return true;
+ }
+ else
+ return false;
+}
+
+// transform all element with class ui_button in a jQuery UI button
+function render_jquery_ui_buttons(element_id) {
+ if (element_id) {
+ element_id = '#' + element_id
+ jQuery(element_id).button({
+ icons: {
+ primary: jQuery(element_id).attr('data-primary-icon'),
+ secondary: jQuery(element_id).attr('data-secondary-icon')
+ }
+ }
+ )
+ }
+ else {
+ jQuery('.ui_button').each(function() {
+ jQuery(this).button({
+ icons: {
+ primary: this.getAttribute('data-primary-icon'),
+ secondary: this.getAttribute('data-secondary-icon')
+ }
+ }
+ )
+ })
+ }
+}
+
+function render_all_jquery_ui_widgets() {
+ jQuery(function() {
+ render_jquery_ui_buttons();
+ jQuery('.ui-tabs').each(function(){
+ jQuery(this).tabs({
+ cookie: { name: this.id }
+ });
+ });
+ });
+}
+
+function expandCategory(block, id) {
+ var link = jQuery('#block_' + block + '_category_' + id);
+ if (category_expanded['block'] > 0 && category_expanded['category'] > 0 && category_expanded['block'] == block && category_expanded['category'] != id && link.hasClass('category-root')) {
+ expandCategory(category_expanded['block'], category_expanded['category']);
+ category_expanded['category'] = id;
+ category_expanded['block'] = block;
+ }
+ if (category_expanded['block'] == 0) category_expanded['block'] = block;
+ if (category_expanded['category'] == 0) category_expanded['category'] = id;
+ jQuery('#block_' + block + '_category_content_' + id).slideToggle('slow');
+ link.toggleClass('category-expanded');
+ if (link.hasClass('category-expanded')) link.html(expanded_icon);
+ else {
+ link.html(collapsed_icon);
+ if (link.hasClass('category-root')) {
+ category_expanded['block'] = 0;
+ category_expanded['category'] = 0;
+ }
+ }
+}
+
+function ieZIndexBugFix(trigger) {
+ if (jQuery.browser.msie && parseInt(jQuery.browser.version) == 7) {
+ jQuery('#navigation').css({ zIndex : 6 });
+ jQuery('.box-2, .box-3').css({ zIndex : 5 });
+ jQuery(trigger).parents('.box-2, .box-3').css({ zIndex : 11 });
+ }
+}
+
+function toggleSubmenu(trigger, title, link_list) {
+ ieZIndexBugFix(trigger);
+ trigger.onclick = function() {
+ ieZIndexBugFix(trigger);
+ var submenu = jQuery(trigger).siblings('.menu-submenu');
+ var hide = false;
+ if (submenu.length > 0 && submenu.is(':visible')) hide = true;
+ hideAllSubmenus();
+ // Hide or show this submenu if it already exists
+ if (submenu.length > 0) {
+ if (!hide) {
+ var direction = 'down';
+ if (submenu.hasClass('up')) direction = 'up';
+ jQuery(submenu).fadeIn();
+ }
+ }
+ return false;
+ }
+
+ hideAllSubmenus();
+ // Build and show this submenu if it doesn't exist yet
+ var direction = 'down';
+ if (jQuery(trigger).hasClass('up')) direction = 'up';
+ var submenu = jQuery('
').attr('class', 'menu-submenu ' + direction).attr('style', 'display: none');
+ var header = jQuery('
').attr('class', 'menu-submenu-header');
+ var content = jQuery('
').attr('class', 'menu-submenu-content');
+ var list = jQuery('').attr('class', 'menu-submenu-list');
+ var footer = jQuery('
').attr('class', 'menu-submenu-footer');
+ content.append('' + title + ' ');
+ jQuery.each(link_list, function(index, link_hash) {
+ for (label in link_hash) {
+ options = "";
+ jQuery.each(link_hash[label], function(option, value){
+ options += option +'="'+ value + '" ';
+ })
+ list.append('' + label + ' ');
+ }
+ });
+ content.append(list);
+ submenu.append(header).append(content).append(footer);
+ jQuery(trigger).before(submenu);
+ jQuery(submenu).fadeIn();
+}
+
+function toggleMenu(trigger) {
+ hideAllSubmenus();
+ jQuery(trigger).siblings('.simplemenu-submenu').toggle().toggleClass('opened');
+}
+
+function hideAllSubmenus() {
+ jQuery('.menu-submenu.up:visible').fadeOut('slow');
+ jQuery('.simplemenu-submenu:visible').hide().toggleClass('opened');
+ jQuery('.menu-submenu.down:visible').fadeOut('slow');
+ jQuery('#chat-online-users-content').hide();
+}
+
+// Hide visible ballons when clicked outside them
+jQuery(document).ready(function() {
+ jQuery('body').live('click', function() { hideAllSubmenus(); });
+ jQuery('.menu-submenu-trigger').click(function(e) { e.stopPropagation(); });
+ jQuery('.simplemenu-trigger').click(function(e) { e.stopPropagation(); });
+ jQuery('#chat-online-users').click(function(e) { e.stopPropagation(); });
+});
+
+function input_javascript_ordering_stuff() {
+ jQuery(function() {
+ jQuery(".input-list").sortable({
+ placeholder: 'ui-state-highlight',
+ axis: 'y',
+ opacity: 0.8,
+ tolerance: 'pointer',
+ forcePlaceholderSize: true,
+ update: function(event, ui) {
+ jQuery.post(jQuery(this).next('.order-inputs').attr('href'), jQuery(this).sortable('serialize'));
+ }
+ });
+ jQuery(".input-list li").disableSelection();
+
+ jQuery(".input-list li").hover(
+ function() {
+ jQuery(this).addClass('editing-input');
+ jQuery(this).css('cursor', 'move');
+ },
+ function() {
+ jQuery(this).removeClass('editing-input');
+ jQuery(this).css('cursor', 'pointer');
+ }
+ );
+
+ jQuery("#display-add-input-button > .hint").show();
+ });
+}
+
+function display_input_stuff() {
+ jQuery(function() {
+ jQuery("#add-input-button").click(function() {
+ jQuery("#display-add-input-button").find('.loading-area').addClass('small-loading');
+ url = jQuery(this).attr('href');
+ jQuery.get(url, function(data){
+ jQuery("#" + "new-product-input").html(data);
+ jQuery("#display-add-input-button").find('.loading-area').removeClass('small-loading');
+ jQuery("#add-input-button").hide();
+ });
+ return false;
+ });
+ });
+}
+
+function add_input_stuff() {
+ jQuery(function() {
+ jQuery(".cancel-add-input").click(function() {
+ jQuery("#new-product-input").html('');
+ jQuery("#add-input-button").show();
+ return false;
+ });
+ jQuery("#input-category-form").submit(function() {
+ id = "product-inputs";
+ jQuery(this).find('.loading-area').addClass('small-loading');
+ jQuery("#input-category-form,#input-category-form *").css('cursor', 'progress');
+ jQuery.post(this.action, jQuery(this).serialize(), function(data) {
+ jQuery("#" + id).html(data);
+ });
+ return false;
+ });
+ jQuery('body').scrollTo('50%', 500);
+ });
+}
+
+function input_javascript_stuff(id) {
+ jQuery(function() {
+ id = 'input-' + id;
+ jQuery("#add-"+ id +"-details,#edit-"+id).click(function() {
+ target = '#' + id + '-form';
+
+ jQuery('#' + id + ' ' + '.input-details').hide();
+ jQuery(target).show();
+
+ // make request only if the form is not loaded yet
+ if (jQuery(target + ' form').length == 0) {
+ small_loading(id);
+ jQuery(target).load(jQuery(this).attr('href'), function() {
+ loading_done(id);
+ jQuery('#' + id + ' .input-informations').removeClass('input-form-closed').addClass('input-form-opened');
+ });
+ }
+ else {
+ jQuery('#' + id + ' .input-informations').removeClass('input-form-closed').addClass('input-form-opened');
+ }
+
+ return false;
+ });
+ jQuery("#remove-" + id).unbind('click').click(function() {
+ if (confirm(jQuery(this).attr('data-confirm'))) {
+ url = jQuery(this).attr('href');
+ small_loading("product-inputs");
+ jQuery.post(url, function(data){
+ jQuery("#" + "product-inputs").html(data);
+ loading_done("product-inputs");
+ });
+ }
+ return false;
+ });
+ });
+}
+
+function edit_input_stuff(id, currency_separator) {
+ id = "input-" + id;
+
+ jQuery(function() {
+ jQuery("#" + "edit-" + id + "-form").ajaxForm({
+ target: "#" + id,
+ beforeSubmit: function(a,f,o) {
+ o.loading = small_loading('edit-' + id + '-form');
+ o.loaded = loading_done(id);
+ }
+ });
+
+ jQuery("#cancel-edit-" + id).click(function() {
+ jQuery("#" + id + ' ' + '.input-details').show();
+ jQuery("#" + id + '-form').hide();
+ jQuery('#' + id + ' .input-informations').removeClass('input-form-opened').addClass('input-form-closed');
+ return false;
+ });
+
+ jQuery(".numbers-only").keypress(function(event) {
+ return numbersonly(event, currency_separator)
+ });
+
+ add_input_unit(id, jQuery("#" + id + " select :selected").val())
+
+ jQuery("#" + id + ' select').change(function() {
+ add_input_unit(id, jQuery("#" + id + " select :selected").val())
+ });
+
+ jQuery("#" + id).enableSelection();
+ });
+}
+
+function add_input_unit(id, selected_unit) {
+ if (selected_unit != '') {
+ jQuery("#" + id + ' .price-by-unit').show();
+ jQuery("#" + id + ' .selected-unit').text(jQuery("#" + id + " select :selected").text());
+ } else {
+ jQuery("#" + id + ' .price-by-unit').hide();
+ }
+}
+
+function loading_for_button(selector) {
+ jQuery(selector).append("
");
+ jQuery(selector).css('cursor', 'progress');
+}
+
+function new_qualifier_row(selector, select_qualifiers, delete_button) {
+ index = jQuery(selector + ' tr').size() - 1;
+ jQuery(selector).append("" + select_qualifiers + " " + delete_button + " ");
+}
+
+// controls the display of the login/logout stuff
+jQuery(function($) {
+ $.ajaxSetup({cache: false});
+ $.getJSON('/account/user_data', function userDataCallBack(data) {
+ if (data.login) {
+ // logged in
+ loggedInDataCallBack(data);
+ addManageEnterprisesToOldStyleMenu(data);
+ chatOnlineUsersDataCallBack(data);
+ } else {
+ // not logged in
+ $('#user .not-logged-in, .login-block .not-logged-user').fadeIn();
+ }
+ if (data.notice) {
+ display_notice(data.notice);
+ }
+ // Bind this event to do more actions with the user data (for example, inside plugins)
+ $(window).trigger("userDataLoaded", data);
+ });
+
+ function loggedInDataCallBack(data) {
+ // logged in
+ $('body').addClass('logged-in');
+ $('#user .logged-in, .login-block .logged-user-info').each(function() {
+ $(this).find('a[href]').each(function() {
+ var new_href = $(this).attr('href').replace('{login}', data.login);
+ if (data.email_domain) {
+ new_href = new_href.replace('{email_domain}', data.email_domain);
+ }
+ $(this).attr('href', new_href);
+ });
+ var html = $(this).html().replace(/{login}/g, data.login).replace('{month}', data.since_month).replace('{year}', data.since_year);
+ $(this).html(html).fadeIn();
+ if (data.is_admin) {
+ $('#user .admin-link').show();
+ }
+ if (data.email_domain) {
+ $('#user .webmail-link').show();
+ }
+ });
+ }
+
+ function addManageEnterprisesToOldStyleMenu(data) {
+ if ($('#manage-enterprises-link-template').length > 0) {
+ $.each(data.enterprises, function(index, enterprise) {
+ var item = $('' + $('#manage-enterprises-link-template').html() + ' ');
+ item.find('a[href]').each(function() {
+ $(this).attr('href', '/myprofile/' + enterprise.identifier);
+ });
+ item.html(item.html().replace('{name}', enterprise.name));
+ item.insertAfter('#manage-enterprises-link-template');
+ });
+ }
+ }
+
+ function chatOnlineUsersDataCallBack(data) {
+ if ($('#chat-online-users').length == 0) {
+ return;
+ }
+ var content = '';
+ $('#chat-online-users').html($('#chat-online-users').html().replace(/%{amount}/g, data['amount_of_friends']));
+ $('#chat-online-users').fadeIn();
+ for (var user in data['friends_list']) {
+ var name = "%{name} ";
+ var avatar = data['friends_list'][user]['avatar'];
+ var jid = data['friends_list'][user]['jid'];
+ var status_name = data['friends_list'][user]['status'] || 'offline';
+ avatar = avatar ? ' ' : ''
+ name = name.replace('%{name}',data['friends_list'][user]['name']);
+ open_chat_link = "onclick='open_chat_window(this, \"#" + jid + "\")'";
+ var status_icon = "';
+ content += "" + avatar + '
' + name + status_icon + ' ';
+ }
+ content ? $('#chat-online-users-hidden-content ul').html(content) : $('#anyone-online').show();
+ $('#chat-online-users-title').click(function(){
+ if($('#chat-online-users-content').is(':visible'))
+ $('#chat-online-users-content').hide();
+ else
+ $('#chat-online-users-content').show();
+ });
+ }
+});
+
+// controls the display of contact list
+function check_contact_list(contact_list) {
+ jQuery(function($) {
+ var verify_url = $('#verify-contact-list').attr('href');
+ var add_contacts_url = $('#add-contact-list').attr('href');
+ var cancel_contacts_fetching_url = $('#cancel-fetching-emails').attr('href');
+ var interval = setInterval(function() {
+ $.getJSON(verify_url, function(data) {
+ if (data.fetched) {
+ clearInterval(interval);
+ if (data.error) {
+ $("#loading-dialog").dialog('close');
+ $.get(cancel_contacts_fetching_url);
+ redirect_to($('#invitation_back_button').attr('href'));
+ display_notice(data.error);
+ } else {
+ $.get(add_contacts_url, function(data){
+ $("#contacts-list").html(data);
+ });
+ };
+ $("#loading-dialog").dialog('close');
+ }
+ });
+ }, 5000);
+ setTimeout(function() {
+ clearInterval(interval);
+ $("#loading-dialog").dialog('close');
+ $.get(cancel_contacts_fetching_url);
+ redirect_to($('#invitation_back_button').attr('href'));
+ }, 600000);
+ });
+}
+
+function display_notice(message) {
+ var $noticeBox = jQuery('
').html(message).appendTo('body').fadeTo('fast', 0.8);
+ $noticeBox.click(function() { $(this).hide(); });
+ setTimeout(function() { $noticeBox.fadeOut('fast'); }, 5000);
+}
+
+function open_chat_window(self_link, anchor) {
+ anchor = anchor || '#';
+ var noosfero_chat_window = window.open('/chat' + anchor,'noosfero_chat','width=900,height=500');
+ noosfero_chat_window.focus();
+ return false;
+}
+
+jQuery(function($) {
+ /* Adds a class to "opera" to the body element if Opera browser detected.
+ */
+ if ( navigator.userAgent.indexOf("Opera") > -1 ) {
+ $('body').addClass('opera');
+ }
+
+ /* Adds a class to "msie" to the body element if a Microsoft browser is
+ * detected. This is needed to workaround several of their limitations.
+ */
+ else if ( navigator.appVersion.indexOf("MSIE") > -1 ) {
+ document.body.className += " msie msie" +
+ navigator.appVersion.replace(/^.*MSIE\s+([0-9]+).*$/, "$1");
+ }
+
+ /* Adds a class to "webkit" to the body element if a Webkit based browser
+ * detected.
+ */
+ else if (window.devicePixelRatio) {
+ $('body').addClass('webkit');
+ }
+});
+
+function hide_and_show(hide_elements, show_elements) {
+ for(i=0; i < hide_elements.length; i++){
+ jQuery(hide_elements[i]).hide();
+ }
+ for(i=0; i < show_elements.length; i++){
+ jQuery(show_elements[i]).show();
+ }
+}
+
+function limited_text_area(textid, limit) {
+ var text = jQuery('#' + textid).val();
+ grow_text_area(textid);
+ var textlength = text.length;
+ jQuery('#' + textid + '_left span').html(limit - textlength);
+ if (textlength > limit) {
+ jQuery('#' + textid + '_left').hide();
+ jQuery('#' + textid + '_limit').show();
+ jQuery('#' + textid).val(text.substr(0,limit));
+ return false;
+ } else {
+ jQuery('#' + textid + '_left').show();
+ jQuery('#' + textid + '_limit').hide();
+ return true;
+ }
+}
+
+function grow_text_area(textid) {
+ var height = jQuery('#' + textid).attr('scrollHeight');
+ if (jQuery.browser.webkit) {
+ height -= parseInt(jQuery('#' + textid).css('padding-top')) +
+ parseInt(jQuery('#' + textid).css('padding-bottom'));
+ }
+ jQuery('#' + textid).css('height', height + 'px');
+}
+
+jQuery(function($) {
+ $('a').each(function() {
+ if (this.href == document.location.href) {
+ $(this).addClass('link-this-page');
+ }
+ });
+});
+
+jQuery(function($) {
+ if ($.browser.msie) {
+ $('.profile_link').click(function() {
+ document.location.href = this.href;
+ })
+ }
+ $('#manage-enterprises-link').live('click', function() {
+ toggleMenu(this);
+ return false;
+ });
+});
+
+function add_comment_reply_form(button, comment_id) {
+ var container = jQuery(button).parents('.comment_reply');
+ var f = container.find('.comment_form');
+ if (f.length == 0) {
+ f = jQuery('#page-comment-form .comment_form').clone();
+ f.find('.fieldWithErrors').map(function() { jQuery(this).replaceWith(jQuery(this).contents()); });
+ f.prepend(' ');
+ container.append(f);
+ }
+ if (container.hasClass('closed')) {
+ container.removeClass('closed');
+ container.addClass('opened');
+ container.find('.comment_form input[type=text]:visible:first').focus();
+ }
+ return f;
+}
+
+function remove_comment(button, url, msg) {
+ var $ = jQuery;
+ var $button = $(button);
+ if (msg && !confirm(msg)) {
+ $button.removeClass('comment-button-loading');
+ return;
+ }
+ $button.addClass('comment-button-loading');
+ $.post(url, function(data) {
+ if (data.ok) {
+ var $comment = $button.closest('.article-comment');
+ var $replies = $comment.find('.comment-replies .article-comment');
+ $comment.slideUp();
+ var comments_removed = 1;
+ if ($button.hasClass('remove-children')) {
+ comments_removed = 1 + $replies.size();
+ } else {
+ $replies.appendTo('.article-comments-list');
+ }
+ $('.comment-count').each(function() {
+ var count = parseInt($(this).html());
+ $(this).html(count - comments_removed);
+ });
+ }
+ });
+}
+
+function remove_item_wall(button, item, url, msg) {
+ var $ = jQuery;
+ var $wall_item = $(button).closest(item);
+ $wall_item.addClass('remove-item-loading');
+ if (msg && !confirm(msg)) {
+ $wall_item.removeClass('remove-item-loading');
+ return;
+ }
+ $.post(url, function(data) {
+ if (data.ok) {
+ $wall_item.slideUp();
+ } else {
+ $wall_item.removeClass('remove-item-loading');
+ window.location.replace(data.redirect);
+ }
+ });
+}
+
+function original_image_dimensions(src) {
+ var img = new Image();
+ img.src = src;
+ return { 'width' : img.width, 'height' : img.height };
+}
+
+function gravatarCommentFailback(img) {
+ var link = img.parentNode;
+ link.href = "http://www.gravatar.com";
+ img.src = img.getAttribute("data-gravatar");
+}
+
+jQuery(function() {
+ jQuery("#ajax-form").before("
");
+ jQuery("#ajax-form").before("
");
+ jQuery("#ajax-form").ajaxForm({
+ beforeSubmit: function(a,f,o) {
+ jQuery('#ajax-form-message-area').html('');
+ o.loading = small_loading('ajax-form-loading-area');
+ },
+ success: function() {
+ loading_done('ajax-form-loading-area');
+ },
+ target: "#ajax-form-message-area"
+ })
+});
+
+// from http://jsfiddle.net/naveen/HkxJg/
+// Function to get the Max value in Array
+Array.max = function(array) {
+ return Math.max.apply(Math, array);
+};
+// Function to get the Min value in Array
+Array.min = function(array) {
+ return Math.min.apply(Math, array);
+};
+
+jQuery(function($){
+ $('.submit-with-keypress').live('keydown', function(e) {
+ field = this;
+ if (e.keyCode == 13) {
+ e.preventDefault();
+ var form = $(field).closest("form");
+ $.ajax({
+ url: form.attr("action"),
+ data: form.serialize(),
+ beforeSend: function() {
+ loading_for_button($(field));
+ },
+ success: function(data) {
+ var update = form.attr('data-update');
+ $('#'+update).html(data);
+ $(field).val($(field).attr('title'));
+ }
+ });
+ return false;
+ }
+ });
+
+ $('.view-all-comments').live('click', function(e) {
+ var link = this;
+ $(link).parent().find('.profile-wall-activities-comments').show();
+ $(link).hide();
+ return false;
+ });
+ $('.focus-on-comment').live('click', function(e) {
+ var link = this;
+ $(link).parents('.profile-activity-item').find('textarea').focus();
+ return false;
+ });
+});
+
+/**
+* @author Remy Sharp
+* @url http://remysharp.com/2007/01/25/jquery-tutorial-text-box-hints/
+*/
+
+(function ($) {
+
+$.fn.hint = function (blurClass) {
+ if (!blurClass) {
+ blurClass = 'blur';
+ }
+
+ return this.each(function () {
+ // get jQuery version of 'this'
+ var $input = $(this),
+
+ // capture the rest of the variable to allow for reuse
+ title = $input.attr('title'),
+ $form = $(this.form),
+ $win = $(window);
+
+ function remove() {
+ if ($input.val() === title && $input.hasClass(blurClass)) {
+ $input.val('').removeClass(blurClass);
+ }
+ }
+
+ // only apply logic if the element has the attribute
+ if (title) {
+ // on blur, set value to title attr if text is blank
+ $input.blur(function () {
+ if (this.value === '') {
+ $input.val(title).addClass(blurClass);
+ }
+ }).focus(remove).blur(); // now change all inputs to title
+
+ // clear the pre-defined text when form is submitted
+ $form.submit(remove);
+ $win.unload(remove); // handles Firefox's autocomplete
+ }
+ });
+};
+
+})(jQuery);
+
+/*
+ * altBeautify: put a styled tooltip on elements with
+ * HTML on title and alt attributes.
+ */
+
+var altBeautify = jQuery('
')
+ .append('
')
+ .append('
')
+ .append('
');
+var altTarget;
+jQuery(document).ready(function () {
+ jQuery('body').append(altBeautify);
+});
+
+function altTimeout() {
+ if (!altTarget)
+ return;
+ altBeautify.css('top', jQuery(altTarget).offset().top + jQuery(altTarget).height());
+ altBeautify.css('left', jQuery(altTarget).offset().left);
+ altBeautify.find('.alt-beautify-content').html(jQuery(altTarget).attr('alt-beautify'));
+ altBeautify.show();
+}
+
+function altHide() {
+ altTarget = null;
+ altBeautify.hide();
+}
+
+function altShow(e) {
+ alt = jQuery(this).attr('title');
+ if (alt != '') {
+ jQuery(this).attr('alt-beautify', alt);
+ jQuery(this).attr('title', '');
+ }
+
+ altTarget = this;
+ setTimeout("altTimeout()", 500);
+}
+
+(function($) {
+
+ jQuery.fn.altBeautify = function() {
+ return this.each(function() {
+ jQuery(this).bind('mouseover', altShow);
+ jQuery(this).bind('mouseout', altHide);
+ jQuery(this).bind('click', altHide);
+ });
+ }
+
+})(jQuery);
+
+// enable it generally
+// jQuery('*[title]').live('mouseover', altShow);
+// jQuery('*[title]').live('mouseout', altHide);
+// jQuery('*[title]').live('click', altHide);
+// jQuery('image[alt]').live('mouseover', altShow);
+// jQuery('image[alt]').live('mouseout', altHide);
+// jQuery('image[alt]').live('click', altHide);
+
+
+function facet_options_toggle(id, url) {
+ jQuery('#facet-menu-'+id+' .facet-menu-options').toggle('fast' , function () {
+ more = jQuery('#facet-menu-'+id+' .facet-menu-more-options');
+ console.log(more);
+ if (more.is(':visible') && more.children().length == 0) {
+ more.addClass('small-loading');
+ more.load(url, function () {
+ more.removeClass('small-loading');
+ });
+ }
+ });
+}
+
+jQuery(function($) {
+ $('.colorbox').live('click', function() {
+ $.fn.colorbox({
+ href:$(this).attr('href'),
+ maxWidth: '600',
+ maxHeight: '550',
+ open:true
+ });
+ return false;
+ });
+
+ $('.colorbox-close').live('click', function() {
+ $.colorbox.close();
+ return false;
+ });
+
+});
diff --git a/app/assets/javascripts/pikachoose.js b/app/assets/javascripts/pikachoose.js
new file mode 100644
index 0000000..d3b961f
--- /dev/null
+++ b/app/assets/javascripts/pikachoose.js
@@ -0,0 +1,276 @@
+/* 1/13/2009
+ PikaChoose
+ Jquery plugin for photo galleries
+ Copyright (C) 2009 Jeremy Fry
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see .
+*/
+
+
+jQuery.iPikaChoose = {
+ build : function(user_options)
+ {
+ var user_options;
+ var defaults = {
+ show_captions: true,
+ slide_enabled: true,
+ auto_play: true,
+ show_prev_next: true,
+ slide_speed: 5000,
+ thumb_width: 50,
+ thumb_height: 42,
+ buttons : { play: "Play", stop: "Stop", previous: "Previous", next: "Next" }
+ };
+
+ return $(this).each(
+ function() {
+ //bring in options
+ var options = $.extend(defaults, user_options);
+ // grab our images
+ var $images = $(this).children('li').children('img');
+ //hide the images so the user doesn't see crap
+ $images.fadeOut(1);
+
+ //save our list for future ref
+ var $ulist = $(this);
+ $images.each(LoadImages);
+ //start building structure
+ $(this).before("
");
+ // houses eveything about the UL
+ var $main_div = $(this).prev(".pika_main");
+
+ //add in slideshow elements when appropriate
+ if(options.slide_enabled){
+ $main_div.append("
");
+ var $play_div = $(this).prev(".pika_main").children(".pika_play");
+ $play_div.html("" + options.buttons.play + " " + options.buttons.stop + " ");
+ $play_div.fadeOut(1);
+ var $play_anchor = $play_div.children('a:first');
+ var $stop_anchor = $play_div.children('a:last');
+ }
+ //this div is used to make image and caption fade together
+ $main_div.append("
");
+ var $sub_div = $main_div.children(".pika_subdiv");
+
+ //the main image we'll be using to load
+ $sub_div.append(" ");
+ var $main_img = $sub_div.children("img");
+
+ //create the caption div when appropriate
+ if(options.show_captions){
+ $sub_div.append("
");
+ var $caption_div = $sub_div.children(".pika_caption");
+ }
+
+ //navigation div ALWAYS gets created, its refrenced a lot
+ $(this).after("
");
+ var $navigation_div = $(this).next(".pika_navigation");
+ //fill in sub elements
+ $navigation_div.prepend("" + options.buttons.previous + " :: " + options.buttons.next + " ");
+ var $previous_image_anchor = $navigation_div.children('a:first');
+ var $next_image_anchor = $navigation_div.children('a:last');
+
+ //hide the navigation if the user doesn't want it
+ if(!options.show_prev_next){
+ $navigation_div.css("display","none");
+ }
+
+ //$playing triggers the loop for the slideshow
+ var $playing = options.auto_play;
+
+ $main_img.wrap(" ");
+ var $main_link = $main_img.parent("a");
+
+ function LoadImages(){
+ $(this).bind("load", function(){
+ //had to make a seperate function so that the thumbnails wouldn't have problems
+ //from beings resized before loaded, thus not h/w
+
+ var $w = $(this).width();
+ var $h = $(this).height();
+ if($w===0){$w = $(this).attr("width");}
+ if($h===0){$h = $(this).attr("height");}
+ //grab a ratio for image to user defined settings
+ var $rw = options.thumb_width/$w;
+ var $rh = options.thumb_height/$h;
+
+ //determine which has the smallest ratio (thus needing
+ //to be the side we use to scale so our whole thumb is filled)
+ if($rw<$rh){
+ //we'll use ratio later to scale and not distort
+ var $ratio = $rh;
+ var $left = (($w*$ratio-options.thumb_width)/2)*-1;
+ $left = Math.round($left);
+ //set images left offset to match
+ $(this).css({left:$left});
+ }else{
+ var $ratio = $rw;
+ //you can uncoment this lines to have the vertical picture centered
+ //but usually tall photos have the focal point at the top...
+ //var $top = (($h*$ratio-options.thumb_height)/2)*-1;
+ //var $top = Math.round($top);
+ $top = 0;
+ $(this).css({top:$top});
+ }
+ //use those ratios to calculate scale
+ var $width = Math.round($w*$ratio);
+ var $height = Math.round($h*$ratio);
+ $(this).css("position","relative");
+ $(this).width($width).height($height);
+ var imgcss={
+ width: $width,
+ height: $height
+ };
+ $(this).css(imgcss);
+
+ $(this).fadeTo(250,0.4);
+ if($(this).hasClass('pika_first')){
+ $(this).trigger("click",["auto"]);
+ }
+ });
+
+ //clone so the on loads will fire correctly
+ $(this).clone(true).insertAfter(this);
+
+ $(this).remove();
+ //reset images to the clones
+ $images = $ulist.children('li').children('img');
+ }
+ function activate(){
+ //sets the intial phase for everything
+
+ //image_click is controls the fading
+ $images.bind("click",image_click);
+ //hiding refrence to slide elements if slide is disabled
+ if(options.slide_enabled){
+ if(options.auto_play){
+ $playing = true;
+ $play_anchor.hide();
+ $stop_anchor.show();
+ }else{
+ $play_anchor.show();
+ $stop_anchor.hide();
+ }
+ }
+
+ //resizes and centers thumbs
+ prep_thumbs();
+ //previous link to go back an image
+ $previous_image_anchor.bind("click",previous_image);
+ //ditto for forward, also the item that gets auto clicked for slideshow
+ $next_image_anchor.bind("click",next_image);
+ }//end activate function
+
+
+ function prep_thumbs(){
+ //now we know the first and last images
+ $images.filter(":last").addClass("pika_last");
+ $images.filter(":first").addClass("pika_first");
+ //parse images
+ $images.each(function(){
+ var licss = {
+ width: options.thumb_width+"px",
+ height: options.thumb_height+"px",
+ "list-style": "none",
+ overflow: "hidden"
+ };
+ $(this).parent('li').css(licss);
+ $(this).hover(
+ function(){$(this).fadeTo(250,1);},
+ function(){if(!$(this).hasClass("pika_selected")){$(this).fadeTo(250,0.4);}}
+ );
+ });
+
+ }//end fix thumbs functions
+ function image_click(event, how){
+ //catch when user clicks on an image Then cancel current slideshow
+ if(how!="auto"){
+ if(options.slide_enabled){
+ $stop_anchor.hide();
+ $play_anchor.show();
+ $playing=false;
+ }
+ $sub_div.stop();
+ $sub_div.dequeue();
+ }
+ //all our image variables
+ var $image_source = $(this).attr("src");
+ var $image_link = $(this).attr("ref");
+ var $image_caption = $(this).attr("title");
+
+ //fade out the old thumb
+ $images.filter(".pika_selected").fadeTo(250,0.4);
+ $images.filter(".pika_selected").removeClass("pika_selected");
+ //fade in the new thumb
+ $(this).fadeTo(250,1);
+ $(this).addClass("pika_selected");
+ //fade the old image out and the new one in
+ $sub_div.fadeTo(500,0.05,function(){
+ $main_img.attr("src",$image_source);
+ $main_link.attr("href", $image_link);
+ if(options.show_captions){$caption_div.html($image_caption);}
+ });
+ $sub_div.fadeTo(800,1,function(){
+ if($playing){
+ $(this).animate({top:0},options.slide_speed, function(){
+ //redudency needed here to catch the user clicking on an image during a change.
+ if($playing){$next_image_anchor.trigger("click",["auto"]);}
+ });
+ }
+ });
+ }//end image_click function
+
+ function next_image(event, how){
+ if($images.filter(".pika_selected").hasClass("pika_last")){
+ $images.filter(":first").trigger("click",how);
+ }else{
+ $images.filter(".pika_selected").parent('li').next('li').children('img').trigger("click",how);
+ }
+ }//end next image function
+
+ function previous_image(event, how){
+ if($images.filter(".pika_selected").hasClass("pika_first")){
+ $images.filter(":last").trigger("click",how);
+ }else{
+ $images.filter(".pika_selected").parent('li').prev('li').children('img').trigger("click",how);
+ }
+ }//end previous image function
+
+ function play_button(){
+ $main_div.hover(
+ function(){$play_div.fadeIn(400);},
+ function(){$play_div.fadeOut(400);}
+ );
+ $play_anchor.bind("click", function(){
+ $playing = true;
+ $next_image_anchor.trigger("click",["auto"]);
+ $(this).hide();
+ $stop_anchor.show();
+ });
+ $stop_anchor.bind("click", function(){
+ $playing = false;
+ $(this).hide();
+ $play_anchor.show();
+ });
+ }
+ if(options.slide_enabled){play_button();}
+ activate();
+
+ });//end return this.each
+ }//end build function
+
+ //activate applies the appropriate actions to all the different parts of the structure.
+ //and loads the sets the first image
+};//end jquery.ipikachoose
+jQuery.fn.PikaChoose = jQuery.iPikaChoose.build;
diff --git a/app/assets/javascripts/prototype.js b/app/assets/javascripts/prototype.js
new file mode 100644
index 0000000..6385503
--- /dev/null
+++ b/app/assets/javascripts/prototype.js
@@ -0,0 +1,4221 @@
+/* Prototype JavaScript framework, version 1.6.0.2
+ * (c) 2005-2008 Sam Stephenson
+ *
+ * Prototype is freely distributable under the terms of an MIT-style license.
+ * For details, see the Prototype web site: http://www.prototypejs.org/
+ *
+ *--------------------------------------------------------------------------*/
+
+var Prototype = {
+ Version: '1.6.0.2',
+
+ Browser: {
+ IE: !!(window.attachEvent && !window.opera),
+ Opera: !!window.opera,
+ WebKit: navigator.userAgent.indexOf('AppleWebKit/') > -1,
+ Gecko: navigator.userAgent.indexOf('Gecko') > -1 && navigator.userAgent.indexOf('KHTML') == -1,
+ MobileSafari: !!navigator.userAgent.match(/Apple.*Mobile.*Safari/)
+ },
+
+ BrowserFeatures: {
+ XPath: !!document.evaluate,
+ ElementExtensions: !!window.HTMLElement,
+ SpecificElementExtensions:
+ document.createElement('div').__proto__ &&
+ document.createElement('div').__proto__ !==
+ document.createElement('form').__proto__
+ },
+
+ ScriptFragment: '
+
+
+
+
+
+
+
+
+
+
+
+ JID:
+
+ Password:
+
+
+
+
+
+
+
+
+
+
+
+