+
+
+
+
diff --git a/UI/WebServerResources/UIxMailToSelection.js b/UI/WebServerResources/UIxMailToSelection.js
index 1966931ba..caa5f2a15 100644
--- a/UI/WebServerResources/UIxMailToSelection.js
+++ b/UI/WebServerResources/UIxMailToSelection.js
@@ -127,9 +127,15 @@ function addressFieldGotFocus(sender) {
idx = this.getIndexFromIdentifier(sender.id);
if ((lastIndex == idx) || (idx == 0)) return;
this.removeLastEditedRowIfEmpty();
+
+
+ return false;
}
+
function addressFieldLostFocus(sender) {
lastIndex = this.getIndexFromIdentifier(sender.id);
+
+ return false;
}
function removeLastEditedRowIfEmpty() {
diff --git a/UI/WebServerResources/generic.js b/UI/WebServerResources/generic.js
index 0befa66e0..7b32d0112 100644
--- a/UI/WebServerResources/generic.js
+++ b/UI/WebServerResources/generic.js
@@ -24,6 +24,18 @@
/* generic stuff */
+logWindow = window.open('', 'logWindow',
+ 'directories = no; location = no; menubar = no; resizable = no;'
+ + 'scrollbars = yes; status = no; toolbar = no; width = 80em; height = 25em;');
+logWindow.document.write('
JavaScript log'
+ + ''
+ + '
'
+ +'');
+logWindow.resizeTo(640,480);
+logArea = logWindow.document.getElementById('logArea');
+logArea.innerHTML = '';
+
function ml_stripActionInURL(url) {
if (url[url.length - 1] != '/') {
var i;
@@ -282,9 +294,10 @@ function onRowClick(node, event) {
/* popup menus */
-bodyOnClick = "";
-acceptClick = false;
-menuClickNode = null;
+var bodyOnClick = "";
+var acceptClick = false;
+var menuClickNode = null;
+var currentSubmenu = null;
function onMenuClick(node, event, menuId)
{
@@ -295,9 +308,11 @@ function onMenuClick(node, event, menuId)
acceptClick = false;
bodyOnClick = "" + document.body.getAttribute("onclick");
document.body.setAttribute("onclick", "onBodyClick('" + menuId + "'); return false;");
- popup = document.getElementById(menuId);
- popup.setAttribute("style", "visibility: visible; top: " + event.pageY
- + "px; left: " + event.pageX + "px;" );
+ var popup = document.getElementById(menuId);
+ hideMenu(popup);
+ popup.style.top = event.pageY + "px";
+ popup.style.left = event.pageX + "px";
+ popup.style.visibility = "visible";
menuClickNode = node;
return false;
@@ -310,13 +325,25 @@ function onBodyClick(menuId)
else
{
popup = document.getElementById(menuId);
- popup.setAttribute("style", "visibility: hidden");
+ hideMenu(popup);
document.body.setAttribute("onclick", bodyOnClick);
}
return false;
}
+function hideMenu(menuNode)
+{
+// log('hiding menu "' + menuNode.getAttribute('id') + '"');
+ if (menuNode.submenu)
+ {
+ hideMenu(menuNode.submenu);
+ menuNode.submenu = null;
+ }
+
+ menuNode.style.visibility = "hidden";
+}
+
function onMenuEntryClick(node, event, menuId)
{
id = node.getAttribute("id");
@@ -325,3 +352,116 @@ function onMenuEntryClick(node, event, menuId)
return false;
}
+function log(message) {
+ if (logArea)
+ logArea.innerHTML = logArea.innerHTML + message + '
' + "\n";
+}
+
+function dropDownSubmenu(event)
+{
+ var node = event.target;
+ var submenu = node.getAttribute("submenu");
+ if (submenu && submenu != "") {
+ if (node.parentNode.parentNode.submenu)
+ hideMenu(node.parentNode.parentNode.submenu);
+
+ var submenuNode = document.getElementById(submenu);
+ node.parentNode.parentNode.submenu = submenuNode;
+ var menuTop = (node.parentNode.parentNode.offsetTop
+ + node.offsetTop - 1);
+ var menuLeft = (node.parentNode.parentNode.offsetLeft
+ + node.parentNode.parentNode.offsetWidth
+ - 2);
+ submenuNode.style.top = menuTop + "px";
+ submenuNode.style.left = menuLeft + "px";
+ submenuNode.style.visibility = "visible";
+ }
+}
+
+/* drag handle */
+
+var dragHandle;
+var dragHandleOrigX;
+var dragHandleOrigLeft;
+var dragHandleOrigRight;
+
+function startHandleDragging(event) {
+ if (event.button == 0) {
+ var leftBlock = event.target.getAttribute('leftblock');
+ var rightBlock = event.target.getAttribute('rightblock');
+
+ dragHandle = event.target;
+ dragHandleOrigX = dragHandle.offsetLeft;
+ dragHandleOrigLeft = document.getElementById(leftBlock).offsetWidth;
+ dragHandleOrigRight = document.getElementById(rightBlock).offsetLeft;
+
+ document.body.setAttribute('onmouseup', 'stopHandleDragging(event);');
+ document.body.setAttribute('onmousemove', 'dragHandleMove(event, "'
+ + leftBlock
+ + '", "'
+ + rightBlock
+ + '");');
+ document.body.style.cursor = "e-resize";
+
+ dragHandleMove(event, leftBlock, rightBlock);
+ event.cancelBubble = true;
+ }
+
+ return false;
+}
+
+function stopHandleDragging(event) {
+ var diffX = (event.clientX - dragHandleOrigX
+ - (dragHandle.offsetWidth / 2));
+ var lBlock
+ = document.getElementById(dragHandle.getAttribute('leftblock'));
+ var rBlock
+ = document.getElementById(dragHandle.getAttribute('rightblock'));
+
+ lBlock.style.width = (dragHandleOrigLeft + diffX) + 'px';
+ rBlock.style.left = (dragHandleOrigRight + diffX) + 'px';
+
+ document.body.setAttribute('onmousemove', '');
+ document.body.setAttribute('onmouseup', '');
+ document.body.setAttribute('style', '');
+ event.cancelBubble = true;
+
+ return false;
+}
+
+function dragHandleMove(event, leftBlock, rightBlock) {
+ if (typeof(dragHandle) == undefined
+ || !dragHandle)
+ stopHandling(event);
+ else {
+ var width = dragHandle.offsetWidth;
+
+ var hX = event.clientX;
+ if (hX > -1) {
+ var newLeft = hX - (width / 2);
+
+ dragHandle.style.left = newLeft + 'px';
+ event.cancelBubble = true;
+
+ return false;
+ }
+ }
+}
+
+function dragHandleDoubleClick(event) {
+ dragHandle = event.target;
+ var lBlock
+ = document.getElementById(dragHandle.getAttribute('leftblock'));
+ var lLeft = lBlock.offsetLeft;
+
+ if (dragHandle.offsetLeft > lLeft) {
+ var rBlock
+ = document.getElementById(dragHandle.getAttribute('rightblock'));
+ var leftDiff = rBlock.offsetLeft - dragHandle.offsetLeft;
+
+ dragHandle.style.left = lLeft + 'px';
+ lBlock.style.width = '0px';
+ rBlock.style.left = (lLeft + leftDiff) + 'px';
+ }
+}
+
diff --git a/UI/WebServerResources/mailer.css b/UI/WebServerResources/mailer.css
index 907adf82f..4d9e17d0f 100644
--- a/UI/WebServerResources/mailer.css
+++ b/UI/WebServerResources/mailer.css
@@ -544,3 +544,22 @@ SPAN.searchBox INPUT
background-repeat: no-repeat;
background-position: 2px 2px;
}
+
+
+/* drag handles */
+DIV#dragHandle
+{
+ position: absolute;
+ z-index: 1;
+ top: 5.5em;
+ left: 14.6em;
+ width: .4em;
+ bottom: 0px;
+}
+
+DIV#dragHandle:active
+{
+ cursor: e-resize;
+ background: #dbdad5;
+ -moz-opacity: 0.5;
+}
diff --git a/UI/WebServerResources/uix.css b/UI/WebServerResources/uix.css
index be9a686b6..49fe177c9 100644
--- a/UI/WebServerResources/uix.css
+++ b/UI/WebServerResources/uix.css
@@ -378,6 +378,7 @@ SPAN.toolbarButton:active
padding-bottom: .2em;
margin: 0px;
width: auto;
+ white-space: nowrap;
}
.menu LI:hover
@@ -394,3 +395,27 @@ SPAN.toolbarButton:active
border-top: 1px solid #aaa;
border-bottom: 1px solid #fff;
}
+
+.menu LI.submenu
+{
+ padding-right: .5em;
+ background-image: url('submenu.gif');
+ background-position: 98% 50%;
+ background-repeat: no-repeat; }
+
+.menu LI.submenu:hover
+{
+ background-image: url('submenu-active.gif');
+}
+
+DIV.log#logArea
+{
+ z-index: 1000;
+ font-family: monospace;
+ position: absolute;
+ background: #000;
+ color: #fff;
+ top: 0px;
+ left: 0px;
+ width: 100%;
+}