Index: /trunk/admin/themes/default/js/batchManagerGlobal.js
===================================================================
--- /trunk/admin/themes/default/js/batchManagerGlobal.js	(revision 28806)
+++ /trunk/admin/themes/default/js/batchManagerGlobal.js	(revision 28806)
@@ -0,0 +1,51 @@
+
+/* Shift-click: select all photos between the click and the shift+click */
+jQuery(document).ready(function() {
+	var last_clicked=0,
+		last_clickedstatus=true;
+	jQuery.fn.enableShiftClick = function() {
+		var inputs = [],
+			count=0;
+		this.find('input[type=checkbox]').each(function() {
+			var pos=count;
+			inputs[count++]=this;
+			$(this).bind("shclick", function (dummy,event) {
+				if (event.shiftKey) {
+					var first = last_clicked;
+					var last = pos;
+					if (first > last) {
+						first=pos;
+						last=last_clicked;
+					}
+
+					for (var i=first; i<=last;i++) {
+						input = $(inputs[i]);
+						$(input).prop('checked', last_clickedstatus);
+						if (last_clickedstatus)
+						{
+							$(input).siblings("span.wrap2").addClass("thumbSelected");
+						}
+						else
+						{
+							$(input).siblings("span.wrap2").removeClass("thumbSelected");
+						}
+					}
+				}
+				else {
+					last_clicked = pos;
+					last_clickedstatus = this.checked;
+				}
+				return true;
+			});
+			$(this).click(function(event) { $(this).triggerHandler("shclick",event)});
+		});
+	}
+	$('ul.thumbnails').enableShiftClick();
+});
+
+jQuery('[data-datepicker]').pwgDatepicker({
+	showTimepicker: true,
+	cancelButton: lang.Cancel
+});
+
+jQuery("a.preview-box").colorbox();
Index: /trunk/admin/themes/default/template/batch_manager_global.tpl
===================================================================
--- /trunk/admin/themes/default/template/batch_manager_global.tpl	(revision 28805)
+++ /trunk/admin/themes/default/template/batch_manager_global.tpl	(revision 28806)
@@ -1,5 +1,4 @@
-{include file='include/tag_selection.inc.tpl'}
-{include file='include/datepicker.inc.tpl'}
-{include file='include/colorbox.inc.tpl'}
+{include file='include/datepicker.inc.tpl' load_mode='async'}
+{include file='include/colorbox.inc.tpl' load_mode='async'}
 {include file='include/add_album.inc.tpl'}
 
@@ -15,61 +14,16 @@
 {combine_css id='jquery.selectize' path="themes/default/js/plugins/selectize.`$selectizeTheme`.css"}
 
-{combine_script id='jquery.progressBar' load='footer' path='themes/default/js/plugins/jquery.progressbar.min.js'}
-{combine_script id='jquery.ajaxmanager' load='footer' path='themes/default/js/plugins/jquery.ajaxmanager.js'}
-
-{footer_script}{literal}
-/* Shift-click: select all photos between the click and the shift+click */
+{combine_script id='jquery.progressBar' load='async' path='themes/default/js/plugins/jquery.progressbar.min.js'}
+{combine_script id='jquery.ajaxmanager' load='async' path='themes/default/js/plugins/jquery.ajaxmanager.js'}
+
+{combine_script id='batchManagerGlobal' load='async' require='jquery,datepicker,jquery.colorbox,addAlbum' path='admin/themes/default/js/batchManagerGlobal.js'}
+
+{footer_script}
+var lang = {
+	Cancel: '{'Cancel'|translate|escape:'javascript'}'
+};
+
 jQuery(document).ready(function() {
-  var last_clicked=0;
-  var last_clickedstatus=true;
-  jQuery.fn.enableShiftClick = function() {
-    var inputs = [];
-    var count=0;
-    this.find('input[type=checkbox]').each(function() {
-      var pos=count;
-      inputs[count++]=this;
-      $(this).bind("shclick", function (dummy,event) {
-        if (event.shiftKey) {
-          var first = last_clicked;
-          var last = pos;
-          if (first > last) {
-            first=pos;
-            last=last_clicked;
-          }
-
-          for (var i=first; i<=last;i++) {
-            input = $(inputs[i]);
-            $(input).prop('checked', last_clickedstatus);
-            if (last_clickedstatus)
-            {
-              $(input).siblings("span.wrap2").addClass("thumbSelected");
-            }
-            else
-            {
-              $(input).siblings("span.wrap2").removeClass("thumbSelected");
-            }
-          }
-        }
-        else {
-          last_clicked = pos;
-          last_clickedstatus = this.checked;
-        }
-        return true;
-      });
-      $(this).click(function(event) { $(this).triggerHandler("shclick",event)});
-    });
-  }
-	$('ul.thumbnails').enableShiftClick();
-});
-{/literal}
-
-jQuery(document).ready(function() {ldelim}
-  jQuery('[data-datepicker]').pwgDatepicker({
-    showTimepicker: true,
-    cancelButton: '{'Cancel'|translate}'
-  });
-
-  jQuery("a.preview-box").colorbox();
-  
+
   {* <!-- TAGS --> *}
   var tagsCache = new TagsCache({
Index: /trunk/admin/themes/default/template/include/add_album.inc.tpl
===================================================================
--- /trunk/admin/themes/default/template/include/add_album.inc.tpl	(revision 28805)
+++ /trunk/admin/themes/default/template/include/add_album.inc.tpl	(revision 28806)
@@ -1,3 +1,4 @@
-{include file='include/colorbox.inc.tpl'}
+{if empty($load_mode)}{$load_mode='footer'}{/if}
+{include file='include/colorbox.inc.tpl' load_mode=$load_mode}
 
 {assign var="selectizeTheme" value=($themeconf.name=='roma')|ternary:'dark':'default'}
@@ -5,5 +6,5 @@
 {combine_css id='jquery.selectize' path="themes/default/js/plugins/selectize.`$selectizeTheme`.css"}
 
-{combine_script id='addAlbum.js' load='footer' require='jquery.colorbox' path='admin/themes/default/js/addAlbum.js'}
+{combine_script id='addAlbum' load=$load_mode path='admin/themes/default/js/addAlbum.js'}
 
 <div style="display:none">
Index: /trunk/admin/themes/default/template/include/colorbox.inc.tpl
===================================================================
--- /trunk/admin/themes/default/template/include/colorbox.inc.tpl	(revision 28805)
+++ /trunk/admin/themes/default/template/include/colorbox.inc.tpl	(revision 28806)
@@ -1,2 +1,3 @@
-{combine_script id='jquery.colorbox' load='footer' require='jquery' path='themes/default/js/plugins/jquery.colorbox.min.js'}
+{if empty($load_mode)}{$load_mode='footer'}{/if}
+{combine_script id='jquery.colorbox' load=$load_mode require='jquery' path='themes/default/js/plugins/jquery.colorbox.min.js'}
 {combine_css id='jquery.colorbox' path="themes/default/js/plugins/colorbox/style2/colorbox.css"}
Index: /trunk/admin/themes/default/template/include/datepicker.inc.tpl
===================================================================
--- /trunk/admin/themes/default/template/include/datepicker.inc.tpl	(revision 28805)
+++ /trunk/admin/themes/default/template/include/datepicker.inc.tpl	(revision 28806)
@@ -1,13 +1,14 @@
-{combine_script id='jquery.ui.timepicker-addon' load='footer' require='jquery.ui.datepicker,jquery.ui.slider' path="themes/default/js/ui/jquery.ui.timepicker-addon.js"}
-{combine_script id='datepicker.js' load='footer' require='jquery.ui.timepicker-addon' path='admin/themes/default/js/datepicker.js'}
+{if empty($load_mode)}{$load_mode='footer'}{/if}
+{combine_script id='jquery.ui.timepicker-addon' load=$load_mode require='jquery.ui.datepicker,jquery.ui.slider' path="themes/default/js/ui/jquery.ui.timepicker-addon.js"}
+{combine_script id='datepicker' load=$load_mode require='jquery.ui.timepicker-addon' path='admin/themes/default/js/datepicker.js'}
 
 {assign var="datepicker_language" value="themes/default/js/ui/i18n/jquery.ui.datepicker-`$lang_info.code`.js"}
 {if "PHPWG_ROOT_PATH"|@constant|@cat:$datepicker_language|@file_exists}
-{combine_script id="jquery.ui.datepicker-$lang_info.code" load='footer' require='jquery.ui.datepicker' path=$datepicker_language}
+{combine_script id="jquery.ui.datepicker-$lang_info.code" load=$load_mode require='jquery.ui.datepicker' path=$datepicker_language}
 {/if}
 
 {assign var="timepicker_language" value="themes/default/js/ui/i18n/jquery.ui.timepicker-`$lang_info.code`.js"}
 {if "PHPWG_ROOT_PATH"|@constant|@cat:$datepicker_language|@file_exists}
-{combine_script id="jquery.ui.timepicker-$lang_info.code" load='footer' require='jquery.ui.timepicker-addon' path=$timepicker_language}
+{combine_script id="jquery.ui.timepicker-$lang_info.code" load=$load_mode require='jquery.ui.timepicker-addon' path=$timepicker_language}
 {/if}
 
