diff --git a/webconsole/src/main/resources/res/lib/support.js b/webconsole/src/main/resources/res/lib/support.js
index fdcc3c4..0698624 100644
--- a/webconsole/src/main/resources/res/lib/support.js
+++ b/webconsole/src/main/resources/res/lib/support.js
@@ -268,6 +268,30 @@
 	return element;
 }
 
+/**
+ * Sets the name cookie at the appRoot (/system/console by default) path
+ * to last for 20 years.
+ * @param name The name of the cookie
+ * @param value The value for the cookie
+ */
+function setCookie( /* String */name, /* String */value) {
+    var date = new Date();
+    date.setFullYear(date.getFullYear() + 20);
+    $.cookies.set("felix-webconsole-" + name, value, {
+        expiresAt : date,
+        path : appRoot
+    });
+}
+
+/**
+ * Returns the value of the name cookie or nothing if the cookie does
+ * not exist or is not accessible.
+ * @param name The name of the cookie
+ */
+/* String */ function getCookie(/*String */name) {
+    $.cookies.get("felix-webconsole-" + name);
+}
+
 // language selection element
 var langSelect = false;
 $(document).ready(function() {
@@ -275,14 +299,10 @@
 		function() { $(this).find('.flags').show('blind') },
 		function() { $(this).find('.flags').hide('blind') });
 	langSelect.find('.flags img').click(function() {
-	        var date = new Date();
-	        date.setFullYear(date.getFullYear() + 20);
-		$.cookies.set('felix.webconsole.locale',
-			$(this).attr('alt'),
-			{ expiresAt: date });
+        setCookie("locale", $(this).attr('alt'));
 		location.reload();
 	});
-	var locale = $.cookies.get('felix.webconsole.locale');
+	var locale = getCookie("locale");
 	if (locale) {
 		if ( !$.datepicker.regional[locale] ) locale = '';
 		$.datepicker.setDefaults($.datepicker.regional[locale]);
diff --git a/webconsole/src/main/resources/res/ui/bundles.js b/webconsole/src/main/resources/res/ui/bundles.js
index ff429be..9406b16 100644
--- a/webconsole/src/main/resources/res/ui/bundles.js
+++ b/webconsole/src/main/resources/res/ui/bundles.js
@@ -41,8 +41,10 @@
     }
     initStaticWidgets();
 
-	var cv = $.cookies.get("webconsolebundlelist");
-	if (cv) bundlesTable.trigger('sorton', [cv]);
+	var cv = getCookie("bundlelist");
+	if (cv) {
+	    bundlesTable.trigger('sorton', [cv]);
+	}
 
 	// show dialog on error
 	if (eventData.error) bundleOpError.dialog('open').find('pre').text(eventData.error)
@@ -261,9 +263,11 @@
 		},
 		textExtraction:mixedLinksExtraction
 	}).bind("sortEnd", function() {
-		var t = bundlesTable.eq(0).attr("config");
-		if (t.sortList) $.cookies.set("webconsolebundlelist", t.sortList);
-	});
+        var t = bundlesTable.eq(0).attr("config");
+        if (t.sortList) {
+            setCookie("bundlelist", t.sortList);
+        }
+    });
 	bundlesBody     = bundlesTable.find('tbody');
 	bundlesTemplate = bundlesBody.find('tr').clone();
 
