From 6ca090b341d0ea9f263b133a9c7f76a01a61844f Mon Sep 17 00:00:00 2001
From: Aleksander Machniak <alec@alec.pl>
Date: Thu, 25 Dec 2014 04:03:51 -0500
Subject: [PATCH] Add _mbox parameter to the 'mark' request sent after opening a message

---
 program/js/common.js |   56 ++++++++++++++++++++++++++++++++++++++++++++------------
 1 files changed, 44 insertions(+), 12 deletions(-)

diff --git a/program/js/common.js b/program/js/common.js
index ff5f9b9..7664306 100644
--- a/program/js/common.js
+++ b/program/js/common.js
@@ -31,7 +31,6 @@
 var SHIFT_KEY = 2;
 var CONTROL_SHIFT_KEY = 3;
 
-
 /**
  * Default browser check class
  * @constructor
@@ -224,7 +223,7 @@
     p.element = document;
 
   if (!p.object._rc_events)
-    p.object._rc_events = [];
+    p.object._rc_events = {};
 
   var key = p.event + '*' + p.method;
   if (!p.object._rc_events[key])
@@ -279,6 +278,28 @@
   e.cancelBubble = true;
 
   return false;
+},
+
+/**
+ * Determine whether the given event was trigered from keyboard
+ */
+is_keyboard: function(e)
+{
+  return e && (
+      (e.pointerType !== undefined && e.pointerType !== 'mouse') ||       // IE 11+
+      (e.mozInputSource && e.mozInputSource == e.MOZ_SOURCE_KEYBOARD) ||  // Firefox
+      (e.offsetX === 0 && e.offsetY === 0) || // Opera
+      (!e.pageX && (e.pageY || 0) <= 0 && !e.clientX && (e.clientY || 0) <= 0) ||  // others
+      (bw.ie && rcube_event._last_keyboard_event && rcube_event._last_keyboard_event.target == e.target)  // hack for IE <= 10
+    );
+},
+
+/**
+ * Accept event if triggered from keyboard action (e.g. <Enter>)
+ */
+keyboard_only: function(e)
+{
+  return rcube_event.is_keyboard(e) ? true : rcube_event.cancel(e);
 },
 
 touchevent: function(e)
@@ -472,21 +493,25 @@
 function rcube_find_object(id, d)
 {
   var n, f, obj, e;
-  if(!d) d = document;
 
-  if(d.getElementsByName && (e = d.getElementsByName(id)))
+  if (!d) d = document;
+
+  if (d.getElementById)
+    if (obj = d.getElementById(id))
+      return obj;
+
+  if (!obj && d.getElementsByName && (e = d.getElementsByName(id)))
     obj = e[0];
-  if(!obj && d.getElementById)
-    obj = d.getElementById(id);
-  if(!obj && d.all)
+
+  if (!obj && d.all)
     obj = d.all[id];
 
-  if(!obj && d.images.length)
+  if (!obj && d.images.length)
     obj = d.images[id];
 
   if (!obj && d.forms.length) {
     for (f=0; f<d.forms.length; f++) {
-      if(d.forms[f].name == id)
+      if (d.forms[f].name == id)
         obj = d.forms[f];
       else if(d.forms[f].elements[id])
         obj = d.forms[f].elements[id];
@@ -494,7 +519,8 @@
   }
 
   if (!obj && d.layers) {
-    if (d.layers[id]) obj = d.layers[id];
+    if (d.layers[id])
+      obj = d.layers[id];
     for (n=0; !obj && n<d.layers.length; n++)
       obj = rcube_find_object(id, d.layers[n].document);
   }
@@ -508,8 +534,8 @@
   var mouse = rcube_event.get_mouse_pos(ev),
     pos = $(obj).offset();
 
-  return ((mouse.x >= pos.left) && (mouse.x < (pos.left + obj.offsetWidth)) &&
-    (mouse.y >= pos.top) && (mouse.y < (pos.top + obj.offsetHeight)));
+  return (mouse.x >= pos.left) && (mouse.x < (pos.left + obj.offsetWidth)) &&
+    (mouse.y >= pos.top) && (mouse.y < (pos.top + obj.offsetHeight));
 };
 
 
@@ -521,6 +547,7 @@
       (path ? "; path=" + path : "") +
       (domain ? "; domain=" + domain : "") +
       (secure ? "; secure" : "");
+
   document.cookie = curCookie;
 };
 
@@ -587,6 +614,11 @@
   };
 }
 
+// array utility function
+jQuery.last = function(arr) {
+  return arr && arr.length ? arr[arr.length-1] : undefined;
+}
+
 // jQuery plugin to emulate HTML5 placeholder attributes on input elements
 jQuery.fn.placeholder = function(text) {
   return this.each(function() {

--
Gitblit v1.9.1