diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/admin/GlobalConfig.java b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/admin/GlobalConfig.java
index a7927b0..1efcd8a 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/admin/GlobalConfig.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/admin/GlobalConfig.java
@@ -167,11 +167,15 @@
                 continue;
             }
 
-            if ( incomingProp != null && propertyDef.getType().equals("boolean") ) {
+            if ( propertyDef.getType().equals("boolean") ) {
 
                 try {
-                    Boolean.parseBoolean(incomingProp);
-                    updProp.setValue(incomingProp);
+                    if (incomingProp == null) {
+                        updProp.setValue("false");
+                    } else {
+                        boolean value = Boolean.parseBoolean(incomingProp);
+                        updProp.setValue(Boolean.toString(value));
+                    }
                     log.debug("Set boolean " + propName + " = " + incomingProp);
                 } catch ( Exception nfe ) {
                     String propDesc = bundle.getString( propertyDef.getKey() );
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/MediaFileEdit.java b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/MediaFileEdit.java
index f6045d4..810648e 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/MediaFileEdit.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/MediaFileEdit.java
@@ -64,8 +64,7 @@
     public void myPrepare() {
         refreshAllDirectories();
         try {
-            MediaFileManager mgr = WebloggerFactory.getWeblogger()
-                    .getMediaFileManager();
+            MediaFileManager mgr = WebloggerFactory.getWeblogger().getMediaFileManager();
             if (!StringUtils.isEmpty(bean.getDirectoryId())) {
                 setDirectory(mgr.getMediaFileDirectory(bean.getDirectoryId()));
             }
@@ -79,10 +78,8 @@
      * Validates media file metadata to be updated.
      */
     public void myValidate() {
-        MediaFile fileWithSameName = getDirectory().getMediaFile(
-                getBean().getName());
-        if (fileWithSameName != null
-                && !fileWithSameName.getId().equals(getMediaFileId())) {
+        MediaFile fileWithSameName = getDirectory().getMediaFile(getBean().getName());
+        if (fileWithSameName != null && !fileWithSameName.getId().equals(getMediaFileId())) {
             addError("MediaFile.error.duplicateName", getBean().getName());
         }
     }
@@ -94,8 +91,7 @@
      */
     @SkipValidation
     public String execute() {
-        MediaFileManager manager = WebloggerFactory.getWeblogger()
-                .getMediaFileManager();
+        MediaFileManager manager = WebloggerFactory.getWeblogger().getMediaFileManager();
         try {
             MediaFile mediaFile = manager.getMediaFile(getMediaFileId());
             this.bean.copyFrom(mediaFile);
@@ -119,8 +115,7 @@
     public String save() {
         myValidate();
         if (!hasActionErrors()) {
-            MediaFileManager manager = WebloggerFactory.getWeblogger()
-                    .getMediaFileManager();
+            MediaFileManager manager = WebloggerFactory.getWeblogger().getMediaFileManager();
             try {
                 MediaFile mediaFile = manager.getMediaFile(getMediaFileId());
                 bean.copyTo(mediaFile);
diff --git a/app/src/main/webapp/WEB-INF/jsps/editor/MediaFileEdit.jsp b/app/src/main/webapp/WEB-INF/jsps/editor/MediaFileEdit.jsp
deleted file mode 100644
index 665a095..0000000
--- a/app/src/main/webapp/WEB-INF/jsps/editor/MediaFileEdit.jsp
+++ /dev/null
@@ -1,181 +0,0 @@
-<%--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-   contributor license agreements.  The ASF licenses this file to You
-  under the Apache License, Version 2.0 (the "License"); you may not
-  use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.  For additional information regarding
-  copyright in this work, please see the NOTICE file in the top level
-  directory of this distribution.
---%>
-<%@ include file="/WEB-INF/jsps/taglibs-struts2.jsp" %>
-<%@ page import="org.apache.roller.weblogger.config.WebloggerConfig" %>
-
-<s:if test="bean.isImage">
-    <div class="mediaFileThumbnail">
-        <a href='<s:property value="bean.permalink" />' target="_blank">
-            <img align="right" alt="thumbnail" src='<s:property value="bean.thumbnailURL" />'
-                 title='<s:text name="mediaFileEdit.clickToView" />' />
-        </a>
-    </div>
-</s:if>
-
-<p class="subtitle">
-    <s:text name="mediaFileEdit.subtitle">
-        <s:param value="bean.name" />
-    </s:text>
-</p>
-
-<p class="pagetip">
-    <s:text name="mediaFileEdit.pagetip"  />
-</p>
-
-<s:form id="entry" action="mediaFileEdit!save" method="POST" enctype="multipart/form-data">
-	<s:hidden name="salt" />
-    <s:hidden name="weblog" />
-    <s:hidden name="mediaFileId" id="mediaFileId" />
-    <s:hidden name="bean.permalink" />
-
-    <%-- ================================================================== --%>
-    <%-- Title, category, dates and other metadata --%>
-
-    <table class="entryEditTable" cellpadding="0" cellspacing="0" width="100%">
-
-        <tr>
-            <td class="entryEditFormLabel">
-                <label for="status"><s:text name="generic.name" /></label>
-            </td>
-            <td>
-                <s:textfield name="bean.name" size="35" maxlength="100" tabindex="1" />
-            </td>
-       </tr>
-
-       <tr>
-            <td class="entryEditFormLabel">
-                <label for="fileInfo"><s:text name="mediaFileEdit.fileInfo" /></label>
-            </td>
-            <td>
-                <s:text name="mediaFileEdit.fileTypeSize">
-                    <s:param value="bean.contentType" />
-                    <s:param value="bean.length" />
-                </s:text>
-                <s:if test="bean.isImage">
-                    <s:text name="mediaFileEdit.fileDimensions">
-                        <s:param value="bean.width" />
-                        <s:param value="bean.height" />
-                    </s:text>
-                </s:if>
-            </td>
-       </tr>
-
-        <tr>
-            <td class="entryEditFormLabel">
-                <label for="status"><s:text name="mediaFileEdit.permalink"/></label>
-            </td>
-            <td>
-                <s:url var="linkIconURL" value="/images/link.png"></s:url>
-
-                <a href='<s:property value="bean.permalink" />' target="_blank"
-                   title='<s:text name="mediaFileEdit.linkTitle" />'>
-                    <img border="0" src='<s:property value="%{linkIconURL}" />' style="padding:2px 2px;" alt="link"/>
-                </a>
-
-                <input type="text" id="clip_text" size="50" style="width:90%"
-                       value='<s:property value="bean.permalink" />' readonly/>
-
-            </td>
-        </tr>
-
-       <tr>
-            <td class="entryEditFormLabel">
-                <label for="status"><s:text name="generic.description" /></label>
-            </td>
-            <td>
-                <s:textarea name="bean.description" cols="50" rows="2" tabindex="2" style="width:70%" />
-            </td>
-       </tr>
-
-       <tr>
-            <td class="entryEditFormLabel">
-                <label for="tags"><s:text name="mediaFileEdit.tags" /></label>
-            </td>
-            <td>
-                <s:textfield name="bean.tagsAsString" size="30" maxlength="100" tabindex="3" style="width:70%"/>
-            </td>
-       </tr>
-
-       <tr>
-            <td class="entryEditFormLabel">
-                <label for="copyright"><s:text name="mediaFileEdit.copyright" /></label>
-            </td>
-            <td>
-                <s:textfield name="bean.copyrightText" size="30" maxlength="100" tabindex="4" style="width:70%"/>
-            </td>
-       </tr>
-
-       <tr>
-            <td class="entryEditFormLabel">
-                <label for="directoryId"><s:text name="mediaFileEdit.directory" /></label>
-            </td>
-            <td>
-                <s:select name="bean.directoryId" list="allDirectories"
-                    listKey="id" listValue="name" tabindex="5" />
-            </td>
-       </tr>
-
-       <tr>
-            <td class="entryEditFormLabel">
-                <label for="status"><s:text name="mediaFileEdit.includeGallery" /></label>
-            </td>
-            <td>
-                <s:checkbox name="bean.sharedForGallery" tabindex="6" />
-                <s:text name="mediaFileEdit.includeGalleryHelp" />
-            </td>
-       </tr>
-
-        <tr>
-            <td class="entryEditFormLabel">
-                <label for="title"><s:text name="mediaFileEdit.updateFileContents" /></label>
-            </td>
-            <td>
-                <div id="fileControldiv" class="miscControl">
-                    <s:file id="fileControl" name="uploadedFile" size="30" />
-                    <br />
-                </div>
-            </td>
-        </tr>
-
-        <!-- original path from base URL of ctx/resources/ -->
-        <s:if test="getBooleanProp('mediafile.originalPathEdit.enabled')">
-        <tr>
-            <td class="originalPathLabel">
-                <label for="originalPath"><s:text name="mediaFileEdit.originalPath" /></label>
-            </td>
-            <td>
-                <div id="originalPathdiv" class="miscControl">
-                    <s:textfield name="bean.originalPath" id="originalPath" size="30" maxlength="100" tabindex="3" />
-                    <br />
-                </div>
-            </td>
-        </tr>
-        </s:if>
-
-    </table>
-
-    <div class="control">
-       <input type="submit" tabindex="7"
-              value="<s:text name="generic.save" />" name="submit" />
-       <input type="button" tabindex="8"
-              value="<s:text name="generic.cancel" />" onClick="javascript:window.parent.onEditCancelled();" />
-    </div>
-
-</s:form>
-
-
diff --git a/app/src/main/webapp/WEB-INF/jsps/editor/MediaFileSidebar.jsp b/app/src/main/webapp/WEB-INF/jsps/editor/MediaFileSidebar.jsp
index 9de1166..4d1df58 100644
--- a/app/src/main/webapp/WEB-INF/jsps/editor/MediaFileSidebar.jsp
+++ b/app/src/main/webapp/WEB-INF/jsps/editor/MediaFileSidebar.jsp
@@ -22,112 +22,69 @@
         <div class="menu-tl">
             <div class="sidebarInner">
 
-                <br />
-                <b><s:text name="mediaFileSidebar.actions" /></b>
-                <br />
-                <br />
+                <h3><s:text name="mediaFileSidebar.actions"/></h3>
 
-                <span class="glyphicon glyphicon-folder-open"></span>
-                <s:url var="mediaFileAddURL" action="mediaFileAdd">
-                    <s:param name="weblog" value="%{actionWeblog.handle}" />
-                    <s:param name="directoryName" value="%{directoryName}" />
-                </s:url>
-                <a href='<s:property escapeHtml="false" value="%{mediaFileAddURL}" />'
-                    <s:if test="actionName.equals('mediaFileAdd')"> style='font-weight:bold;'</s:if> >
-                    <s:text name="mediaFileSidebar.add" />
-                </a>
-
-              <s:if test="!pager">
-
-                <%-- Only show Create New Directory control when NOT showing search results --%>
-                <br /><br />
-                <div>
-                    <span class="glyphicon glyphicon-picture"></span>
-                    <s:text name="mediaFileView.addDirectory" /><br />
-                    <div style="padding-left:2em; padding-top:1em">
-                        <s:text name="mediaFileView.directoryName" />
-                        <input type="text" id="newDirectoryName" name="newDirectoryName" size="10" maxlength="25" />
-                        <input type="button" id="newDirectoryButton" class="btn btn-primary"
-                            value='<s:text name="mediaFileView.create" />' onclick="onCreateDirectory()" />
-                    </div>
+                <div style="clear:right">
+                    <span class="glyphicon glyphicon-folder-open"></span>
+                    <s:url var="mediaFileAddURL" action="mediaFileAdd">
+                        <s:param name="weblog" value="%{actionWeblog.handle}"/>
+                        <s:param name="directoryName" value="%{directoryName}"/>
+                    </s:url>
+                    <a href='<s:property escapeHtml="false" value="%{mediaFileAddURL}" />'
+                            <s:if test="actionName.equals('mediaFileAdd')"> style='font-weight:bold;'</s:if> >
+                        <s:text name="mediaFileSidebar.add"/>
+                    </a>
                 </div>
-              </s:if>
 
-                <br />
-                <hr size="1" noshade="noshade" />
-                <br />
+                <s:if test="!pager">
+                    <%-- Only show Create New Directory control when NOT showing search results --%>
+                    <div style="clear:right; margin-top: 1em">
+                        <span class="glyphicon glyphicon-picture"></span>
+                        <s:text name="mediaFileView.addDirectory"/><br/>
+                        <div style="padding-left:2em; padding-top:1em">
+                            <s:text name="mediaFileView.directoryName"/>
+                            <input type="text" id="newDirectoryName" name="newDirectoryName" size="10" maxlength="25"/>
+                            <input type="button" id="newDirectoryButton" class="btn btn-primary"
+                                   value='<s:text name="mediaFileView.create" />' onclick="onCreateDirectory()"/>
+                        </div>
+                    </div>
+                </s:if>
 
-                <b><s:text name="mediaFileView.search" /></b>
-                <br />
-                <br />
+                <hr size="1" noshade="noshade"/>
+
+                <h3><s:text name="mediaFileView.search"/></h3>
 
                 <s:form id="mediaFileSearchForm" name="mediaFileSearchForm"
-                        action="mediaFileView!search" theme="bootstrap" cssClass="form-horizontal">
-					<s:hidden name="salt" />
-                    <s:hidden name="weblog" />
+                        action="mediaFileView!search" theme="bootstrap" cssClass="form-vertical">
+                    <s:hidden name="salt"/>
+                    <s:hidden name="weblog"/>
+                    <input type="hidden" name="mediaFileId" value=""/>
 
-                    <input type="hidden" name="mediaFileId" value="" />
-                    <table class="mediaFileSearchTable" cellpadding="0" cellspacing="3" width="100%">
+                    <s:textfield id="beanName" name="bean.name" size="20" maxlength="255"
+                                 label="%{getText('generic.name')}"/>
 
-                        <tr>
-                            <td>
-                                <label for="name"><s:text name="generic.name" /></label>
-                            </td>
-                            <td>
-                                <s:textfield id="beanName" name="bean.name" size="20" maxlength="255" />
-                            </td>
-                        </tr>
+                    <s:select id="beanType" name="bean.type"
+                              list="fileTypes" listKey="key" listValue="value"
+                              label="%{getText('mediaFileView.type')}"/>
 
-                        <tr>
-                            <td>
-                                <label for="type"><s:text name="mediaFileView.type" /></label>
-                            </td>
-                            <td>
-                                <s:select id="beanType" name="bean.type"
-                                    list="fileTypes" listKey="key" listValue="value" />
-                            </td>
-                        </tr>
+                    <s:select name="bean.sizeFilterType" id="sizeFilterTypeCombo"
+                              list="sizeFilterTypes" listKey="key" listValue="value"
+                              label="%{getText('mediaFileView.size')}"/>
 
-                        <tr>
-                            <td>
-                                <label for="size"><s:text name="mediaFileView.size" /></label>
-                            </td>
-                            <td width="80%">
-                                <s:select name="bean.sizeFilterType" id="sizeFilterTypeCombo"
-                                    list="sizeFilterTypes" listKey="key" listValue="value" />
-                                <s:textfield id="beanSize" name="bean.size"
-                                    size="3" maxlength="10" />
-                                <s:select name="bean.sizeUnit"
-                                    list="sizeUnits" listKey="key" listValue="value" />
-                            </td>
-                        </tr>
+                    <s:textfield id="beanSize" name="bean.size" size="3" maxlength="10" />
 
-                        <tr>
-                            <td width="10%">
-                                <label for="tags"><s:text name="mediaFileView.tags" /></label>
-                            </td>
-                            <td>
-                                <s:textfield id="beanTags" name="bean.tags"
-                                    size="20" maxlength="50" />
-                            </td>
-                        </tr>
+                    <s:select name="bean.sizeUnit" list="sizeUnits" listKey="key" listValue="value" />
 
-                        <tr>
-                            <td>
-                                <s:submit id="searchButton" cssClass="btn btn-primary"
-                                    value="%{getText('mediaFileView.search')}" cssStyle="margin:5px 0px;"/>
-                            </td>
-                            <td>
-                                <s:if test="pager">
-                                    <input id="resetButton" style="margin:5px 0px;" type="button" cssClass="btn"
-                                        name="reset" value='<s:text name="mediaFileView.reset" />' />
-                                </s:if>
-                                &nbsp;
-                            </td>
-                            <td>&nbsp;</td>
-                            <td>&nbsp;</td>
-                        </tr>
-                    </table>
+                    <s:textfield id="beanTags" name="bean.tags" size="20" maxlength="50"
+                                 label="%{getText('mediaFileView.tags')}"/>
+
+                    <s:submit id="searchButton" cssClass="btn btn-primary"
+                              value="%{getText('mediaFileView.search')}" cssStyle="margin:5px 0;"/>
+
+                    <s:if test="pager">
+                        <input id="resetButton" style="margin:5px 0;" type="button" class="btn"
+                               name="reset" value='<s:text name="mediaFileView.reset" />'/>
+                    </s:if>
 
                 </s:form>
 
@@ -137,51 +94,53 @@
 </div>
 
 
-
 <script>
 
-function onCreateDirectory() {
-    document.mediaFileViewForm.newDirectoryName.value = $("#newDirectoryName").get(0).value;
-    document.mediaFileViewForm.action='<s:url action="mediaFileView!createNewDirectory" />';
-    document.mediaFileViewForm.submit();
-}
+    function onCreateDirectory() {
+        document.mediaFileViewForm.newDirectoryName.value = $("#newDirectoryName").get(0).value;
+        document.mediaFileViewForm.action = '<s:url action="mediaFileView!createNewDirectory" />';
+        document.mediaFileViewForm.submit();
+    }
 
-$("#newDirectoryButton").ready(function () {
-    $("#newDirectoryName").bind("keyup", maintainDirectoryButtonState);
-    $("#newDirectoryButton").attr("disabled", true);
-});
-
-function maintainDirectoryButtonState(e) {
-    if ( jQuery.trim($("#newDirectoryName").get(0).value).length == 0) {
+    $("#newDirectoryButton").ready(function () {
+        $("#newDirectoryName").bind("keyup", maintainDirectoryButtonState);
         $("#newDirectoryButton").attr("disabled", true);
-    } else {
-        $("#newDirectoryButton").attr("disabled", false);
-    }
-}
-
-$("#searchButton").ready(function () {
-
-    maintainSearchButtonState();
-    $("input").bind("keyup", maintainSearchButtonState);
-    $("select").bind("change", maintainSearchButtonState);
-
-    $("#resetButton").bind("click", function() {
-        <s:url var="mediaFileViewURL" action="mediaFileView">
-            <s:param name="weblog" value="%{actionWeblog.handle}" />
-        </s:url>
-        window.location = '<s:property value="%{mediaFileViewURL}" />';
     });
-});
 
-function maintainSearchButtonState(e) {
-    if ( jQuery.trim($("#beanName").get(0).value).length == 0
-     &&  jQuery.trim($("#beanTags").get(0).value).length == 0
-     && (jQuery.trim($("#beanSize").get(0).value).length == 0 || $("#beanSize").get(0).value == 0)
-     && ($("#beanType").get(0).value.length == 0 || $("#beanType").get(0).value == "mediaFileView.any")) {
-        $("#searchButton").attr("disabled", true);
-    } else {
-        $("#searchButton").attr("disabled", false);
+    function maintainDirectoryButtonState(e) {
+        if (jQuery.trim($("#newDirectoryName").get(0).value).length === 0) {
+            $("#newDirectoryButton").attr("disabled", true);
+        } else {
+            $("#newDirectoryButton").attr("disabled", false);
+        }
     }
-}
+
+    $("#searchButton").ready(function () {
+
+        maintainSearchButtonState();
+        $("input").bind("keyup", maintainSearchButtonState);
+        $("select").bind("change", maintainSearchButtonState);
+
+        $("#resetButton").bind("click", function () {
+            <s:url var="mediaFileViewURL" action="mediaFileView">
+            <s:param name="weblog" value="%{actionWeblog.handle}" />
+            </s:url>
+            window.location = '<s:property value="%{mediaFileViewURL}" />';
+        });
+    });
+
+    function maintainSearchButtonState(e) {
+        var beanSize = $("#beanSize").get(0).value;
+        var beanType = $("#beanType").get(0).value;
+
+        if (jQuery.trim($("#beanName").get(0).value).length === 0
+            && jQuery.trim($("#beanTags").get(0).value).length === 0
+            && (jQuery.trim(beanSize).length === 0 || beanSize === 0)
+            && (beanType.length === 0 || beanType === "mediaFileView.any")) {
+            $("#searchButton").attr("disabled", true);
+        } else {
+            $("#searchButton").attr("disabled", false);
+        }
+    }
 
 </script>
diff --git a/app/src/main/webapp/WEB-INF/jsps/editor/MediaFileView.jsp b/app/src/main/webapp/WEB-INF/jsps/editor/MediaFileView.jsp
index 491a18d..c30f863 100644
--- a/app/src/main/webapp/WEB-INF/jsps/editor/MediaFileView.jsp
+++ b/app/src/main/webapp/WEB-INF/jsps/editor/MediaFileView.jsp
@@ -17,81 +17,6 @@
 --%>
 <%@ include file="/WEB-INF/jsps/taglibs-struts2.jsp" %>
 
-
-<script>
-    toggleState = 'Off'
-
-    function onSelectDirectory(id) {
-        window.location = "<s:url action="mediaFileView" />?directoryId=" + id + "&weblog=" + '<s:property value="actionWeblog.handle" />';
-    }
-
-    function onToggle() {
-        if (toggleState == 'Off') {
-            toggleState = 'On';
-            toggleFunction(true, 'selectedMediaFiles');
-            $("#deleteButton").attr('disabled',false)
-            $("#moveButton").attr('disabled',false)
-            $("#moveTargetMenu").attr('disabled',false)
-        } else {
-            toggleState = 'Off';
-            toggleFunction(false, 'selectedMediaFiles');
-            $("#deleteButton").attr('disabled',true)
-            $("#moveButton").attr('disabled',true)
-            $("#moveTargetMenu").attr('disabled',true)
-        }
-    }
-
-    function onDeleteSelected() {
-        if ( confirm("<s:text name='mediaFile.delete.confirm' />") ) {
-            document.mediaFileViewForm.action='<s:url action="mediaFileView!deleteSelected" />';
-            document.mediaFileViewForm.submit();
-        }
-    }
-
-    function onDeleteFolder() {
-        if (confirm("<s:text name='mediaFile.deleteFolder.confirm' />")) {
-            document.bookmarks.action='<s:url action="mediaFileView!deleteFolder" />';
-            document.bookmarks.submit();
-        }
-    }
-
-    function onMoveSelected() {
-        if ( confirm("<s:text name='mediaFile.move.confirm' />") ) {
-            document.mediaFileViewForm.action='<s:url action="mediaFileView!moveSelected" />';
-            document.mediaFileViewForm.submit();
-        }
-    }
-
-    function onView() {
-        document.mediaFileViewForm.action = "<s:url action='mediaFileView!view' />";
-        document.mediaFileViewForm.submit();
-    }
-
-    <%-- code to toggle buttons on/off as media file/directory selections change --%>
-
-    $(document).ready(function() {
-        $("#deleteButton").attr('disabled',true)
-        $("#moveButton").attr('disabled',true)
-        $("#moveTargetMenu").attr('disabled',true)
-
-        $("input[type=checkbox]").change(function() {
-            var count = 0;
-            $("input[type=checkbox]").each(function(index, element) {
-                if (element.checked) count++;
-            });
-            if (count == 0) {
-                $("#deleteButton").attr('disabled',true)
-                $("#moveButton").attr('disabled',true)
-                $("#moveTargetMenu").attr('disabled',true)
-            } else {
-                $("#deleteButton").attr('disabled',false)
-                $("#moveButton").attr('disabled',false)
-                $("#moveTargetMenu").attr('disabled',false)
-            }
-        });
-    });
-</script>
-
 <s:form id="createPostForm" action='entryAddWithMediaFile'>
 	<s:hidden name="salt" />
     <input type="hidden" name="weblog" value='<s:property value="actionWeblog.handle" />' />
@@ -111,7 +36,6 @@
             <s:param value="weblog" />
         </s:text>
     </p>
-    </p>
     <p class="pagetip">
         <s:text name="mediaFileView.rootPageTip" />
     </p>
@@ -170,9 +94,6 @@
             </s:if>
         </ul>
 
-    </p>
-    <br />
-
 </s:elseif>
 
 <s:else>
@@ -254,19 +175,20 @@
                                 <img border="0" src='<s:property value="%{#mediaFile.thumbnailURL}" />'
                                      width='<s:property value="#mediaFile.thumbnailWidth"/>'
                                      height='<s:property value="#mediaFile.thumbnailHeight"/>'
-                                     title='<s:property value="#mediaFile.name" />' />
+                                     title='<s:property value="#mediaFile.name" />'
+                                     onclick="onClickEdit('<s:property value="#mediaFile.id"/>')" />
                             </s:if>
 
                             <s:else>
-                                <s:url var="mediaFileURL" value="/images/page.png"></s:url>
+                                <s:url var="mediaFileURL" value="/images/page.png" />
                                 <img border="0" src='<s:property value="%{mediaFileURL}" />'
-                                     style="padding:40px 50px;" alt="logo" />
+                                     style="padding:40px 50px;" alt="logo"
+                                     onclick="onClickEdit('<s:property value="#mediaFile.id"/>')" />
                             </s:else>
 
                         </div>
 
-                        <div class="mediaObjectInfo"
-                             onmouseover='setupMenuButton("<s:property value='#mediaFile.id' />")'>
+                        <div class="mediaObjectInfo" >
 
                             <input type="checkbox"
                                    name="selectedMediaFiles"
@@ -315,8 +237,7 @@
 
                         </div>
 
-                        <div class="mediaObjectInfo"
-                             onmouseover='setupMenuButton("<s:property value='#mediaFile.id' />")'>
+                        <div class="mediaObjectInfo">
 
                                 <input type="checkbox"
                                        name="selectedMediaFiles"
@@ -380,32 +301,137 @@
 </s:if>
 
 
-<%-- ***************************************************************** --%>
+<%-- ================================================================================================ --%>
 
-<div id="mediafile_edit_lightbox" title="<s:text name='mediaFileEdit.popupTitle'/>" style="display:none">
-    <iframe id="mediaFileEditor"
-            style="visibility:inherit"
-            height="100%"
-            width="100%"
-            frameborder="no"
-            scrolling="auto">
-    </iframe>
-</div>
+<%-- view image modal --%>
+
+<div id="mediafile_edit_lightbox" class="modal fade" tabindex="-1" role="dialog">
+
+    <div class="modal-dialog modal-lg">
+
+        <div class="modal-content">
+
+            <div class="modal-header">
+
+            </div> <%-- modal header --%>
+
+            <div class="modal-body">
+
+                <s:if test="bean.isImage">
+                    <div class="mediaFileThumbnail">
+                        <a href='<s:property value="bean.permalink" />' target="_blank">
+                            <img align="right" alt="thumbnail" src='<s:property value="bean.thumbnailURL" />'
+                                 title='<s:text name="mediaFileEdit.clickToView" />'/>
+                        </a>
+                    </div>
+                </s:if>
+
+                <p class="subtitle">
+                    <s:text name="mediaFileEdit.subtitle">
+                        <s:param value="bean.name"/>
+                    </s:text>
+                </p>
+
+                <p class="pagetip">
+                    <s:text name="mediaFileEdit.pagetip"/>
+                </p>
+
+                <s:form id="entry" action="mediaFileEdit!save" method="POST" enctype="multipart/form-data"
+                    theme="bootd=strap" class="form-vertical">
+
+                    <s:hidden name="salt"/>
+                    <s:hidden name="weblog"/>
+                    <s:hidden name="mediaFileId" id="mediaFileId"/>
+                    <s:hidden name="bean.permalink"/>
+
+                    <%-- ================================================================== --%>
+                    <%-- Title, category, dates and other metadata --%>
+
+                    <s:textfield name="bean.name" size="35" maxlength="100" tabindex="1"
+                                 label="%{getText('generic.name')}"/>
+
+                    <label for="fileInfo"><s:text name="mediaFileEdit.fileInfo"/></label>
+                    <s:text name="mediaFileEdit.fileTypeSize">
+                        <s:param value="bean.contentType"/>
+                        <s:param value="bean.length"/>
+                    </s:text>
+                    <s:if test="bean.isImage">
+                        <s:text name="mediaFileEdit.fileDimensions">
+                            <s:param value="bean.width"/>
+                            <s:param value="bean.height"/>
+                        </s:text>
+                    </s:if>
+
+                    <s:url var="linkIconURL" value="/images/link.png" />
+
+                    <a href='<s:property value="bean.permalink" />' target="_blank"
+                       title='<s:text name="mediaFileEdit.linkTitle" />'>
+                        <img border="0" src='<s:property value="%{linkIconURL}" />' style="padding:2px 2px;" alt="link"/>
+                    </a>
+
+                    <input type="text" id="clip_text" size="50" style="width:90%"
+                           value='<s:property value="bean.permalink" />' readonly/>
+
+
+                    <s:textarea name="bean.description" cols="50" rows="2" tabindex="2" style="width:70%"
+                                label="%{getText('generic.description')}"/>
+
+                    <s:textfield name="bean.tagsAsString" size="30" maxlength="100" tabindex="3" style="width:70%"
+                                 label="%{getText('mediaFileEdit.tags')}"/>
+
+                    <s:textfield name="bean.copyrightText" size="30" maxlength="100" tabindex="4" style="width:70%"
+                                 label="%{getText('mediaFileEdit.copyright')}"/>
+
+                    <s:select name="bean.directoryId" list="allDirectories"
+                              listKey="id" listValue="name" tabindex="5" label="%{getText('')}"/>
+
+                    <s:checkbox name="bean.sharedForGallery" tabindex="6" label="%{getText('')}"/>
+                    <s:text name="mediaFileEdit.includeGalleryHelp"/>
+
+                    <div id="fileControldiv" class="miscControl">
+                        <s:file id="fileControl" name="uploadedFile" size="30" label="%{getText('')}"/>
+                    </div>
+
+                    <!-- original path from base URL of ctx/resources/ -->
+                    <s:if test="getBooleanProp('mediafile.originalPathEdit.enabled')">
+                        <div id="originalPathdiv" class="miscControl">
+                            <s:textfield name="bean.originalPath" id="originalPath" size="30"
+                                         maxlength="100" tabindex="3"/>
+                        </div>
+                    </s:if>
+
+                    <div class="control">
+                        <input type="submit" tabindex="7"
+                               value="<s:text name="generic.save" />" name="submit"/>
+                        <input type="button" tabindex="8"
+                               value="<s:text name="generic.cancel" />" onClick="window.parent.onEditCancelled();"/>
+                    </div>
+
+                </s:form>
+
+            </div> <%-- modal body --%>
+
+            <div class="modal-footer">
+
+            </div> <%-- modal footer --%>
+
+        </div> <%-- modal content --%>
+
+    </div> <%-- modal dialog --%>
+
+</div> <%-- modal --%>
+
 
 <script>
+    toggleState = 'Off'
+
     function onClickEdit(mediaFileId) {
         <s:url var="mediaFileEditURL" action="mediaFileEdit">
             <s:param name="weblog" value="%{actionWeblog.handle}" />
         </s:url>
-        $("#mediaFileEditor").attr('src',
-          '<s:property value="%{mediaFileEditURL}" />' + '&mediaFileId=' + mediaFileId);
-        $(function() {
-            $("#mediafile_edit_lightbox").dialog({
-                modal  : true,
-                width  : 600,
-                height : 630
-            });
-        });
+        $("#mediaFileEditor").attr('src', '<s:property value="%{mediaFileEditURL}" />' + '&mediaFileId=' + mediaFileId);
+
+        $('#mediafile_edit_lightbox').modal({show: true});
     }
 
     function onEditSuccess() {
@@ -417,8 +443,77 @@
         $("#mediafile_edit_lightbox").dialog("close");
         $("#mediaFileEditor").attr('src','about:blank');
     }
-</script>
 
-<br/>
-<br/>
-<br/>
\ No newline at end of file
+
+    function onSelectDirectory(id) {
+        window.location = "<s:url action="mediaFileView" />?directoryId="
+            + id + "&weblog=" + '<s:property value="actionWeblog.handle" />';
+    }
+
+    function onToggle() {
+        if (toggleState === 'Off') {
+            toggleState = 'On';
+            toggleFunction(true, 'selectedMediaFiles');
+            $("#deleteButton").attr('disabled',false);
+            $("#moveButton").attr('disabled',false);
+            $("#moveTargetMenu").attr('disabled',false);
+        } else {
+            toggleState = 'Off';
+            toggleFunction(false, 'selectedMediaFiles');
+            $("#deleteButton").attr('disabled',true);
+            $("#moveButton").attr('disabled',true);
+            $("#moveTargetMenu").attr('disabled',true)
+        }
+    }
+
+    function onDeleteSelected() {
+        if ( confirm("<s:text name='mediaFile.delete.confirm' />") ) {
+            document.mediaFileViewForm.action='<s:url action="mediaFileView!deleteSelected" />';
+            document.mediaFileViewForm.submit();
+        }
+    }
+
+    function onDeleteFolder() {
+        if (confirm("<s:text name='mediaFile.deleteFolder.confirm' />")) {
+            document.bookmarks.action='<s:url action="mediaFileView!deleteFolder" />';
+            document.bookmarks.submit();
+        }
+    }
+
+    function onMoveSelected() {
+        if ( confirm("<s:text name='mediaFile.move.confirm' />") ) {
+            document.mediaFileViewForm.action='<s:url action="mediaFileView!moveSelected" />';
+            document.mediaFileViewForm.submit();
+        }
+    }
+
+    function onView() {
+        document.mediaFileViewForm.action = "<s:url action='mediaFileView!view' />";
+        document.mediaFileViewForm.submit();
+    }
+
+    <%-- code to toggle buttons on/off as media file/directory selections change --%>
+
+    $(document).ready(function() {
+        $("#deleteButton").attr('disabled',true);
+        $("#moveButton").attr('disabled',true);
+        $("#moveTargetMenu").attr('disabled',true);
+
+        $("input[type=checkbox]").change(function() {
+            var count = 0;
+            $("input[type=checkbox]").each(function(index, element) {
+                if (element.checked) count++;
+            });
+            if (count === 0) {
+                $("#deleteButton").attr('disabled',true);
+                $("#moveButton").attr('disabled',true);
+                $("#moveTargetMenu").attr('disabled',true)
+            } else {
+                $("#deleteButton").attr('disabled',false);
+                $("#moveButton").attr('disabled',false);
+                $("#moveTargetMenu").attr('disabled',false)
+            }
+        });
+    });
+
+</script>
\ No newline at end of file
diff --git a/app/src/main/webapp/WEB-INF/jsps/tiles/bannerStatus.jsp b/app/src/main/webapp/WEB-INF/jsps/tiles/bannerStatus.jsp
index 4af4c2e..7c832e0 100644
--- a/app/src/main/webapp/WEB-INF/jsps/tiles/bannerStatus.jsp
+++ b/app/src/main/webapp/WEB-INF/jsps/tiles/bannerStatus.jsp
@@ -18,7 +18,7 @@
 <%@ include file="/WEB-INF/jsps/taglibs-struts2.jsp" %>
 
 <nav class="navbar navbar-default navbar-static-top navbar-inverse">
-    <div class="container">
+    <div class="container-fluid">
         <div id="navbar" class="navbar-collapse collapse">
 
             <div class="navbar-header">
diff --git a/app/src/main/webapp/WEB-INF/jsps/tiles/tiles-errorpage.jsp b/app/src/main/webapp/WEB-INF/jsps/tiles/tiles-errorpage.jsp
index 6b46c64..fc599f4 100644
--- a/app/src/main/webapp/WEB-INF/jsps/tiles/tiles-errorpage.jsp
+++ b/app/src/main/webapp/WEB-INF/jsps/tiles/tiles-errorpage.jsp
@@ -31,7 +31,7 @@
             <tiles:insertAttribute name="banner" />
         </div>
         
-        <div id="wrapper" class="container">
+        <div id="wrapper" class="container-fluid">
             <div id="leftcontent_wrap">
                 <div id="leftcontent"> 
                 </div>
diff --git a/app/src/main/webapp/WEB-INF/jsps/tiles/tiles-installpage.jsp b/app/src/main/webapp/WEB-INF/jsps/tiles/tiles-installpage.jsp
index dfb5bcd..01abda9 100644
--- a/app/src/main/webapp/WEB-INF/jsps/tiles/tiles-installpage.jsp
+++ b/app/src/main/webapp/WEB-INF/jsps/tiles/tiles-installpage.jsp
@@ -31,7 +31,7 @@
             <tiles:insertAttribute name="banner" />
         </div>
         
-        <div id="wrapper" class="container">
+        <div id="wrapper" class="container-fluid">
             <div id="leftcontent_wrap">
                 <div id="leftcontent"> 
                 </div>
diff --git a/app/src/main/webapp/WEB-INF/jsps/tiles/tiles-loginpage.jsp b/app/src/main/webapp/WEB-INF/jsps/tiles/tiles-loginpage.jsp
index e9d503f..08cd90b 100644
--- a/app/src/main/webapp/WEB-INF/jsps/tiles/tiles-loginpage.jsp
+++ b/app/src/main/webapp/WEB-INF/jsps/tiles/tiles-loginpage.jsp
@@ -32,7 +32,7 @@
 <tiles:insertAttribute name="banner"/>
 <tiles:insertAttribute name="bannerStatus"/>
 
-<div class="container">
+<div class="container-fluid">
 
     <div class="row">
         <div class="col-md-4"></div>
diff --git a/app/src/main/webapp/WEB-INF/jsps/tiles/tiles-mainmenupage.jsp b/app/src/main/webapp/WEB-INF/jsps/tiles/tiles-mainmenupage.jsp
index 939bbef..ec41074 100644
--- a/app/src/main/webapp/WEB-INF/jsps/tiles/tiles-mainmenupage.jsp
+++ b/app/src/main/webapp/WEB-INF/jsps/tiles/tiles-mainmenupage.jsp
@@ -33,7 +33,7 @@
 
 <tiles:insertAttribute name="bannerStatus"/>
 
-<div class="container">
+<div class="container-fluid">
 
     <div class="row">
 
@@ -60,7 +60,7 @@
 </div>
 
 <footer class="footer">
-    <div class="container">
+    <div class="container-fluid">
         <tiles:insertAttribute name="footer"/>
     </div>
 </footer>
diff --git a/app/src/main/webapp/WEB-INF/jsps/tiles/tiles-popuppage.jsp b/app/src/main/webapp/WEB-INF/jsps/tiles/tiles-popuppage.jsp
index 1455f3d..a8703ed 100644
--- a/app/src/main/webapp/WEB-INF/jsps/tiles/tiles-popuppage.jsp
+++ b/app/src/main/webapp/WEB-INF/jsps/tiles/tiles-popuppage.jsp
@@ -27,7 +27,7 @@
 
     <body>
 
-        <div id="wrapper" class="container">
+        <div id="wrapper" class="container-fluid">
             <div id="leftcontent_wrap">
                 <div id="leftcontent"> 
                 </div>
diff --git a/app/src/main/webapp/WEB-INF/jsps/tiles/tiles-simple-tabbedpage.jsp b/app/src/main/webapp/WEB-INF/jsps/tiles/tiles-simple-tabbedpage.jsp
index 4b7197b..9a1100e 100644
--- a/app/src/main/webapp/WEB-INF/jsps/tiles/tiles-simple-tabbedpage.jsp
+++ b/app/src/main/webapp/WEB-INF/jsps/tiles/tiles-simple-tabbedpage.jsp
@@ -30,7 +30,7 @@
 
 <tiles:insertAttribute name="bannerStatus"/>
 
-<div class="container">
+<div class="container-fluid">
 
     <div class="row">
         <div class="col-md-12 roller-column-left">
@@ -46,7 +46,7 @@
 </div>
 
 <footer class="footer">
-    <div class="container">
+    <div class="container-fluid">
         <tiles:insertAttribute name="footer"/>
     </div>
 </footer>
diff --git a/app/src/main/webapp/WEB-INF/jsps/tiles/tiles-simplepage.jsp b/app/src/main/webapp/WEB-INF/jsps/tiles/tiles-simplepage.jsp
index cd11777..0076aaf 100644
--- a/app/src/main/webapp/WEB-INF/jsps/tiles/tiles-simplepage.jsp
+++ b/app/src/main/webapp/WEB-INF/jsps/tiles/tiles-simplepage.jsp
@@ -32,7 +32,7 @@
 <tiles:insertAttribute name="banner"/>
 <tiles:insertAttribute name="bannerStatus"/>
 
-<div class="container">
+<div class="container-fluid">
 
     <div class="row">
         <div class="col-md-2"></div>
diff --git a/app/src/main/webapp/WEB-INF/jsps/tiles/tiles-tabbedpage.jsp b/app/src/main/webapp/WEB-INF/jsps/tiles/tiles-tabbedpage.jsp
index 9ac335b..2354139 100644
--- a/app/src/main/webapp/WEB-INF/jsps/tiles/tiles-tabbedpage.jsp
+++ b/app/src/main/webapp/WEB-INF/jsps/tiles/tiles-tabbedpage.jsp
@@ -33,7 +33,7 @@
 
 <tilesx:useAttribute name="sidebar" id="sidebar" classname="java.lang.String"/>
 
-<div class="container">
+<div class="container-fluid">
 
     <div class="row">
 
@@ -72,7 +72,7 @@
 </div>
 
 <footer class="footer">
-    <div class="container">
+    <div class="container-fluid">
         <tiles:insertAttribute name="footer"/>
     </div>
 </footer>
diff --git a/app/src/main/webapp/WEB-INF/tiles.xml b/app/src/main/webapp/WEB-INF/tiles.xml
index 4f38a19..80dc017 100644
--- a/app/src/main/webapp/WEB-INF/tiles.xml
+++ b/app/src/main/webapp/WEB-INF/tiles.xml
@@ -222,11 +222,6 @@
         <put-attribute name="styles" value="/WEB-INF/jsps/tiles/empty.jsp" />
     </definition>
 
-    <definition name=".MediaFileEdit" extends=".tiles-popuppage" >
-        <put-attribute name="head" value="/WEB-INF/jsps/tiles/head.jsp" />
-        <put-attribute name="content" value="/WEB-INF/jsps/editor/MediaFileEdit.jsp" />
-    </definition>
-
     <definition name=".MediaFileAddExternalInclude" extends=".tiles-popuppage-only-content" >
         <put-attribute name="head" value="/WEB-INF/jsps/tiles/head.jsp" />
         <put-attribute name="content" value="/WEB-INF/jsps/editor/MediaFileAddExternalInclude.jsp" />
