diff --git a/.gitignore b/.gitignore
index 6d78b231..286bb7d4 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,3 +1,6 @@
-modules
node_modules
npm-debug.log
+
+modules/fancybox/lib/
+modules/jquery/src
+modules/fancybox/demo
diff --git a/HELP.md b/HELP.md
index b7e7b4c1..05e79e5f 100644
--- a/HELP.md
+++ b/HELP.md
@@ -37,7 +37,6 @@ Install
The installation of file manager is very simple.
- install [node.js](http://nodejs.org/ "node.js") or [io.js](https://iojs.org/ "io.js") if you still have not.
-- install [bower](http://bower.io "Bower") and [git](http://git-scm.com "Git") ([How to install Git on Windows](https://github.com/bower/bower#windows-users "How to install Git on Windows"))
- install ```cloudcmd``` via ```npm``` with:
```sh
diff --git a/modules/fancybox/.bower.json b/modules/fancybox/.bower.json
new file mode 100644
index 00000000..e01ef50d
--- /dev/null
+++ b/modules/fancybox/.bower.json
@@ -0,0 +1,14 @@
+{
+ "name": "fancybox",
+ "homepage": "https://github.com/fancyapps/fancyBox",
+ "version": "2.1.5",
+ "_release": "2.1.5",
+ "_resolution": {
+ "type": "version",
+ "tag": "v2.1.5",
+ "commit": "18d171278d21ca59067aace6d52a1adeb6462219"
+ },
+ "_source": "git://github.com/fancyapps/fancyBox.git",
+ "_target": "~2.1.5",
+ "_originalSource": "fancybox"
+}
\ No newline at end of file
diff --git a/modules/fancybox/.gitattributes b/modules/fancybox/.gitattributes
new file mode 100644
index 00000000..f6bb280a
--- /dev/null
+++ b/modules/fancybox/.gitattributes
@@ -0,0 +1,7 @@
+# Auto detect text files and perform LF normalization
+* text=auto
+
+# Denote all files that are truly binary and should not be modified.
+*.png binary
+*.jpg binary
+*.gif binary
\ No newline at end of file
diff --git a/modules/fancybox/CHANGELOG.md b/modules/fancybox/CHANGELOG.md
new file mode 100644
index 00000000..b0d847e2
--- /dev/null
+++ b/modules/fancybox/CHANGELOG.md
@@ -0,0 +1,125 @@
+fancyBox - Changelog
+=========
+
+### Version 2.1.5 - June 14, 2013
+* Fixed #493 - Broken slideshow
+* Fixed #556 - Parent option
+* Retina graphics (#564) and retina display support (#420)
+* Improved "lock" feature
+
+### Version 2.1.4 - January 10, 2013
+* Update to be compatible with jQuery v1.9
+* Small changes that should fix usability issues for certain users
+
+### Version 2.1.3 - October 23, 2012
+
+* Fixed #426 - Broken IE7
+* Fixed #423 - Background flickering on iOS
+* Fixed #418 - Automatically Grow/Shrink and Center
+* Updated the script to work with jQuery 1.6
+* Media helper supports YouTube video series
+
+### Version 2.1.2 - October 15, 2012
+
+* Fixed #414 - Don't allow nextClick if there is only one item
+* Fixed #397 - Button helper 'Menu' not visible in IE7
+* Overlay can be opened/closed manually:
+* $.fancybox.helpers.overlay.open();
+* $.fancybox.helpers.overlay.open({closeClick : false});
+* $.fancybox.helpers.overlay.close();
+* Optimized for Internet Explorer 10 (Windows 8)
+
+### Version 2.1.1 - October 01, 2012
+
+* Fixed #357 - Converting values like 'auto' in getScalar()
+* Fixed #358 - Updated overlay background image
+* New "fancybox-href" and "fancybox-title" HTML5 data-attributes (#317)
+* Improved helpers:
+* - now they can have a property 'defaults' that contains default settings
+* - updated vimeo and youtube parsers for media helper
+* Content locking now can be turned off
+
+### Version 2.1.0 - August 20, 2012
+
+* Fixed #103 - DOM element re-injection after closing
+* Fixed #188 - navigation keys inside editable content
+* New animation directions (see https://github.com/fancyapps/fancyBox/issues/233#issuecomment-5512453)
+* New option "iframe" - it is now possible to separate scrolling for iframe and wrapping element; choose to preload
+* New option "swf" - brings back functionality from fancyBox v1
+* Improved media helper - better support for vimeo and youtube; links are now configurable
+* Rewritten overlay helper:
+* - new option "showEarly" - toggles if should be open before of after content is loaded
+* - Facebook-style (https://github.com/fancyapps/fancyBox/issues/24) and therefore uses image for background
+* Option "padding" accepts array (e.g., padding: [15, 50, 10, 5])
+* One of dimensions (width or height) can now be set to "auto" (option "autoSize" needs to be "false")
+* Updated callbacks:
+* - "beforeClose" is now called only once
+* - "afterLoad" receives current and previous object as arguments
+* Method "$.fancybox.update();" recalculates content width/height
+* Updated to work with jQuery v1.8
+
+### Version 2.0.6 - April 16, 2012
+
+* Fixed #188 - keystrokes in contenteditable
+* Fixed #171 - non-images should not be preloaded
+* Fixed #158 - 'closeClick: true' breaks gallery navigation
+* New "media" helper - detects and displays various media types
+* New option "groupAttr" - name of group selector attribute, default is "data-fancybox-group"
+* New feature - selector expressions in URLs, see #170
+* Improved 'overlay' helper to use "position: fixed"
+* Improved autoSize, fixed wrong height in some cases
+* Improved centering and iframe scrolling for iOS
+* Updated markup, new element '.fancybox-skin' is now used for styling
+
+### Version 2.0.5 - February 21, 2012
+
+* Fixed #155 - easing for prev/next animations
+* Fixed #153 - overriding "keys" options
+* Fixed #147 - IE7 problem with #hash links
+* Fixed #130 - changing dynamically data-fancybox-group
+* Fixed #126 - obey minWidth/minHeight
+* Fixed #118 - placement of loading icon and navigation arrows
+* Fixed #101 - "index" option not working
+* Fixed #94 - "orig" option not working
+* Fixed #80 - does not work on IE6
+* Fixed #72 - can't set overlay opacity to 0
+* Fixed #63 - properly set gallery index
+* New option "autoCenter" - toggles centering on window resize or scroll, disabled for mobile devices by default
+* New option "autoResize" - toggles responsivity, disabled for mobile devices by default
+* New option "preload" - number of images to preload
+* New feature to target mobile/desktop browsers using CSS, see #108
+* Changed ajax option defaults to "{ dataType: 'html', headers: { 'X-fancyBox': true } }", see #150 and #128
+* Updated loading icon for IE7, IE8
+* Calculates height of the iframe if 'autoSize' is set to 'true' and the iframe is on the same domain as the main page
+
+### Version 2.0.4 - December 12, 2011
+
+* Fixed #47 - fix overriding properties
+* New option "position" to thumbnail and button helpers
+
+
+### Version 2.0.3 - November 29, 2011
+
+* Fixed #29 - broken elastic transitions
+
+
+### Version 2.0.2 - November 28, 2011
+
+* Fixed slideshow
+* Fixed scrollbars issue when displayed a very tall image
+* New option "nextClick" - navigate to next gallery item when user clicks the content
+* New option "modal" - to disable navigation and closing
+* Add 'metadata' plugin support
+* Add ability to create groups using 'data-fancybox-group' attribute
+* Updated manual usage to match earlier releases
+
+
+### Version 2.0.1 - November 23, 2011
+
+* Fixed keyboard events inside form elements
+* Fixed manual usage
+
+
+### Version 2.0.0 - November 21, 2011
+
+First release - completely rewritten, many new features and updated graphics.
\ No newline at end of file
diff --git a/modules/fancybox/README.md b/modules/fancybox/README.md
new file mode 100644
index 00000000..94348937
--- /dev/null
+++ b/modules/fancybox/README.md
@@ -0,0 +1,217 @@
+fancyBox
+========
+
+fancyBox is a tool that offers a nice and elegant way to add zooming functionality for images, html content and multi-media on your webpages.
+
+More information and examples: http://www.fancyapps.com/fancybox/
+
+License: http://www.fancyapps.com/fancybox/#license
+
+Copyright (c) 2012 Janis Skarnelis - janis@fancyapps.com
+
+
+How to use
+----------
+
+To get started, download the plugin, unzip it and copy files to your website/application directory.
+Load files in the
section of your HTML document. Make sure you also add the jQuery library.
+
+
+
+
+
+
+
+Create your links with a `title` if you want a title to be shown, and add a class:
+
+
+
+If you have a set of related items that you would like to group,
+additionally include a group name in the `rel` (or `data-fancybox-group`) attribute:
+
+
+
+
+Initialise the script like this:
+
+
+
+May also be passed an optional options object which will extend the default values. Example:
+
+
+
+Tip: Automatically group and apply fancyBox to all images:
+
+ $("a[href$='.jpg'],a[href$='.jpeg'],a[href$='.png'],a[href$='.gif']").attr('rel', 'gallery').fancybox();
+
+Script uses the `href` attribute of the matched elements to obtain the location of the content and to figure out content type you want to display.
+You can specify type directly by adding classname (fancybox.image, fancybox.iframe, etc) or `data-fancybox-type` attribute:
+
+ //Ajax:
+ Example
+ //or
+ Example
+
+ //Iframe:
+ Example
+
+ //Inline (will display an element with `id="example"`)
+ Example
+
+ //SWF:
+ Example
+
+ //Image:
+ Example
+
+Note, ajax requests are subject to the [same origin policy](http://en.wikipedia.org/wiki/Same_origin_policy).
+If fancyBox will not be able to get content type, it will try to guess based on 'href' and will quit silently if would not succeed.
+(this is different from previsous versions where 'ajax' was used as default type or an error message was displayed).
+
+Advanced
+--------
+
+### Helpers
+
+Helpers provide a simple mechanism to extend the capabilities of fancyBox. There are two built-in helpers - 'overlay' and 'title'.
+You can disable them, set custom options or enable other helpers. Examples:
+
+ //Disable title helper
+ $(".fancybox").fancybox({
+ helpers: {
+ title: null
+ }
+ });
+
+ //Disable overlay helper
+ $(".fancybox").fancybox({
+ helpers: {
+ overlay : null
+ }
+ });
+
+ //Change title position and overlay color
+ $(".fancybox").fancybox({
+ helpers: {
+ title : {
+ type : 'inside'
+ },
+ overlay : {
+ css : {
+ 'background' : 'rgba(255,255,255,0.5)'
+ }
+ }
+ }
+ });
+
+ //Enable thumbnail helper and set custom options
+ $(".fancybox").fancybox({
+ helpers: {
+ thumbs : {
+ width: 50,
+ height: 50
+ }
+ }
+ });
+
+
+### API
+
+Also available are event driven callback methods. The `this` keyword refers to the current or upcoming object (depends on callback method). Here is how you can change title:
+
+ $(".fancybox").fancybox({
+ beforeLoad : function() {
+ this.title = 'Image ' + (this.index + 1) + ' of ' + this.group.length + (this.title ? ' - ' + this.title : '');
+
+ /*
+ "this.element" refers to current element, so you can, for example, use the "alt" attribute of the image to store the title:
+ this.title = $(this.element).find('img').attr('alt');
+ */
+ }
+ });
+
+It`s possible to open fancyBox programmatically in various ways:
+
+ //HTML content:
+ $.fancybox( '
Lorem Lipsum
Lorem lipsum
', {
+ title : 'Custom Title'
+ });
+
+ //DOM element:
+ $.fancybox( $("#inline"), {
+ title : 'Custom Title'
+ });
+
+ //Custom object:
+ $.fancybox({
+ href: 'example.jpg',
+ title : 'Custom Title'
+ });
+
+ //Array of objects:
+ $.fancybox([
+ {
+ href: 'example1.jpg',
+ title : 'Custom Title 1'
+ },
+ {
+ href: 'example2.jpg',
+ title : 'Custom Title 2'
+ }
+ ], {
+ padding: 0
+ });
+
+There are several methods that allow you to interact with and manipulate fancyBox, example:
+
+ //Close fancybox:
+ $.fancybox.close();
+
+There is a simply way to access wrapping elements using JS:
+
+ $.fancybox.wrap
+ $.fancybox.skin
+ $.fancybox.outer
+ $.fancybox.inner
+
+You can override CSS to customize the look. For example, make navigation arrows always visible,
+change width and move them outside of area (use this snippet after including fancybox.css):
+
+ .fancybox-nav span {
+ visibility: visible;
+ }
+
+ .fancybox-nav {
+ width: 80px;
+ }
+
+ .fancybox-prev {
+ left: -80px;
+ }
+
+ .fancybox-next {
+ right: -80px;
+ }
+
+In that case, you might want to increase space around box:
+
+ $(".fancybox").fancybox({
+ margin : [20, 60, 20, 60]
+ });
+
+
+Bug tracker
+-----------
+
+Have a bug? Please create an issue on GitHub at https://github.com/fancyapps/fancyBox/issues
\ No newline at end of file
diff --git a/modules/fancybox/source/blank.gif b/modules/fancybox/source/blank.gif
new file mode 100644
index 00000000..35d42e80
Binary files /dev/null and b/modules/fancybox/source/blank.gif differ
diff --git a/modules/fancybox/source/fancybox_loading.gif b/modules/fancybox/source/fancybox_loading.gif
new file mode 100644
index 00000000..a03a40c0
Binary files /dev/null and b/modules/fancybox/source/fancybox_loading.gif differ
diff --git a/modules/fancybox/source/fancybox_loading@2x.gif b/modules/fancybox/source/fancybox_loading@2x.gif
new file mode 100644
index 00000000..9205aeb0
Binary files /dev/null and b/modules/fancybox/source/fancybox_loading@2x.gif differ
diff --git a/modules/fancybox/source/fancybox_overlay.png b/modules/fancybox/source/fancybox_overlay.png
new file mode 100644
index 00000000..a4391396
Binary files /dev/null and b/modules/fancybox/source/fancybox_overlay.png differ
diff --git a/modules/fancybox/source/fancybox_sprite.png b/modules/fancybox/source/fancybox_sprite.png
new file mode 100644
index 00000000..fd8d5ca5
Binary files /dev/null and b/modules/fancybox/source/fancybox_sprite.png differ
diff --git a/modules/fancybox/source/fancybox_sprite@2x.png b/modules/fancybox/source/fancybox_sprite@2x.png
new file mode 100644
index 00000000..d0e4779f
Binary files /dev/null and b/modules/fancybox/source/fancybox_sprite@2x.png differ
diff --git a/modules/fancybox/source/helpers/fancybox_buttons.png b/modules/fancybox/source/helpers/fancybox_buttons.png
new file mode 100644
index 00000000..07872072
Binary files /dev/null and b/modules/fancybox/source/helpers/fancybox_buttons.png differ
diff --git a/modules/fancybox/source/helpers/jquery.fancybox-buttons.css b/modules/fancybox/source/helpers/jquery.fancybox-buttons.css
new file mode 100644
index 00000000..a26273af
--- /dev/null
+++ b/modules/fancybox/source/helpers/jquery.fancybox-buttons.css
@@ -0,0 +1,97 @@
+#fancybox-buttons {
+ position: fixed;
+ left: 0;
+ width: 100%;
+ z-index: 8050;
+}
+
+#fancybox-buttons.top {
+ top: 10px;
+}
+
+#fancybox-buttons.bottom {
+ bottom: 10px;
+}
+
+#fancybox-buttons ul {
+ display: block;
+ width: 166px;
+ height: 30px;
+ margin: 0 auto;
+ padding: 0;
+ list-style: none;
+ border: 1px solid #111;
+ border-radius: 3px;
+ -webkit-box-shadow: inset 0 0 0 1px rgba(255,255,255,.05);
+ -moz-box-shadow: inset 0 0 0 1px rgba(255,255,255,.05);
+ box-shadow: inset 0 0 0 1px rgba(255,255,255,.05);
+ background: rgb(50,50,50);
+ background: -moz-linear-gradient(top, rgb(68,68,68) 0%, rgb(52,52,52) 50%, rgb(41,41,41) 50%, rgb(51,51,51) 100%);
+ background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,rgb(68,68,68)), color-stop(50%,rgb(52,52,52)), color-stop(50%,rgb(41,41,41)), color-stop(100%,rgb(51,51,51)));
+ background: -webkit-linear-gradient(top, rgb(68,68,68) 0%,rgb(52,52,52) 50%,rgb(41,41,41) 50%,rgb(51,51,51) 100%);
+ background: -o-linear-gradient(top, rgb(68,68,68) 0%,rgb(52,52,52) 50%,rgb(41,41,41) 50%,rgb(51,51,51) 100%);
+ background: -ms-linear-gradient(top, rgb(68,68,68) 0%,rgb(52,52,52) 50%,rgb(41,41,41) 50%,rgb(51,51,51) 100%);
+ background: linear-gradient(top, rgb(68,68,68) 0%,rgb(52,52,52) 50%,rgb(41,41,41) 50%,rgb(51,51,51) 100%);
+ filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#444444', endColorstr='#222222',GradientType=0 );
+}
+
+#fancybox-buttons ul li {
+ float: left;
+ margin: 0;
+ padding: 0;
+}
+
+#fancybox-buttons a {
+ display: block;
+ width: 30px;
+ height: 30px;
+ text-indent: -9999px;
+ background-color: transparent;
+ background-image: url('fancybox_buttons.png');
+ background-repeat: no-repeat;
+ outline: none;
+ opacity: 0.8;
+}
+
+#fancybox-buttons a:hover {
+ opacity: 1;
+}
+
+#fancybox-buttons a.btnPrev {
+ background-position: 5px 0;
+}
+
+#fancybox-buttons a.btnNext {
+ background-position: -33px 0;
+ border-right: 1px solid #3e3e3e;
+}
+
+#fancybox-buttons a.btnPlay {
+ background-position: 0 -30px;
+}
+
+#fancybox-buttons a.btnPlayOn {
+ background-position: -30px -30px;
+}
+
+#fancybox-buttons a.btnToggle {
+ background-position: 3px -60px;
+ border-left: 1px solid #111;
+ border-right: 1px solid #3e3e3e;
+ width: 35px
+}
+
+#fancybox-buttons a.btnToggleOn {
+ background-position: -27px -60px;
+}
+
+#fancybox-buttons a.btnClose {
+ border-left: 1px solid #111;
+ width: 35px;
+ background-position: -56px 0px;
+}
+
+#fancybox-buttons a.btnDisabled {
+ opacity : 0.4;
+ cursor: default;
+}
\ No newline at end of file
diff --git a/modules/fancybox/source/helpers/jquery.fancybox-buttons.js b/modules/fancybox/source/helpers/jquery.fancybox-buttons.js
new file mode 100644
index 00000000..fd8b9556
--- /dev/null
+++ b/modules/fancybox/source/helpers/jquery.fancybox-buttons.js
@@ -0,0 +1,122 @@
+ /*!
+ * Buttons helper for fancyBox
+ * version: 1.0.5 (Mon, 15 Oct 2012)
+ * @requires fancyBox v2.0 or later
+ *
+ * Usage:
+ * $(".fancybox").fancybox({
+ * helpers : {
+ * buttons: {
+ * position : 'top'
+ * }
+ * }
+ * });
+ *
+ */
+(function ($) {
+ //Shortcut for fancyBox object
+ var F = $.fancybox;
+
+ //Add helper object
+ F.helpers.buttons = {
+ defaults : {
+ skipSingle : false, // disables if gallery contains single image
+ position : 'top', // 'top' or 'bottom'
+ tpl : '