From 8fa9229d578a9c2f265b4e46278c3f5f4329baae Mon Sep 17 00:00:00 2001
From: alecpl <alec@alec.pl>
Date: Fri, 16 Apr 2010 09:46:54 -0400
Subject: [PATCH] - code formatting, cleanup and small improvements

---
 program/js/list.js |  220 +++++++++++++++++++++++--------------------------------
 1 files changed, 92 insertions(+), 128 deletions(-)

diff --git a/program/js/list.js b/program/js/list.js
index 3e7bc62..a39ba62 100644
--- a/program/js/list.js
+++ b/program/js/list.js
@@ -22,18 +22,18 @@
  * @contructor
  */
 function rcube_list_widget(list, p)
-  {
+{
   // static contants
   this.ENTER_KEY = 13;
   this.DELETE_KEY = 46;
   this.BACKSPACE_KEY = 8;
-  
+
   this.list = list ? list : null;
   this.frame = null;
   this.rows = [];
   this.selection = [];
   this.rowcount = 0;
-  
+
   this.subject_col = -1;
   this.shiftkey = false;
   this.multiselect = false;
@@ -42,7 +42,7 @@
   this.draggable = false;
   this.keyboard = false;
   this.toggleselect = false;
-  
+
   this.dont_select = false;
   this.drag_active = false;
   this.last_selected = 0;
@@ -52,12 +52,12 @@
   this.drag_mouse_start = null;
   this.dblclick_time = 600;
   this.row_init = function(){};
-  
+
   // overwrite default paramaters
-  if (p && typeof(p)=='object')
+  if (p && typeof(p) == 'object')
     for (var n in p)
       this[n] = p[n];
-  }
+};
 
 
 rcube_list_widget.prototype = {
@@ -68,17 +68,14 @@
  */
 init: function()
 {
-  if (this.list && this.list.tBodies[0])
-  {
-    this.rows = new Array();
+  if (this.list && this.list.tBodies[0]) {
+    this.rows = [];
     this.rowcount = 0;
 
     var row;
-    for(var r=0; r<this.list.tBodies[0].childNodes.length; r++)
-    {
+    for(var r=0; r<this.list.tBodies[0].childNodes.length; r++) {
       row = this.list.tBodies[0].childNodes[r];
-      while (row && row.nodeType != 1)
-      {
+      while (row && row.nodeType != 1) {
         row = row.nextSibling;
         r++;
       }
@@ -104,8 +101,7 @@
 init_row: function(row)
 {
   // make references in internal array and set event handlers
-  if (row && String(row.id).match(/rcmrow([a-z0-9\-_=\+\/]+)/i))
-  {
+  if (row && String(row.id).match(/rcmrow([a-z0-9\-_=\+\/]+)/i)) {
     var p = this;
     var uid = RegExp.$1;
     row.uid = uid;
@@ -131,10 +127,11 @@
   var tbody = document.createElement('tbody');
   this.list.insertBefore(tbody, this.list.tBodies[0]);
   this.list.removeChild(this.list.tBodies[1]);
-  this.rows = new Array();
+  this.rows = [];
   this.rowcount = 0;
-  
-  if (sel) this.clear_selection();
+
+  if (sel)
+    this.clear_selection();
 },
 
 
@@ -181,8 +178,7 @@
 focus: function(e)
 {
   this.focused = true;
-  for (var n=0; n<this.selection.length; n++)
-  {
+  for (var n=0; n<this.selection.length; n++) {
     id = this.selection[n];
     if (this.rows[id] && this.rows[id].obj) {
       $(this.rows[id].obj).addClass('selected').removeClass('unfocused');
@@ -201,8 +197,7 @@
 {
   var id;
   this.focused = false;
-  for (var n=0; n<this.selection.length; n++)
-  {
+  for (var n=0; n<this.selection.length; n++) {
     id = this.selection[n];
     if (this.rows[id] && this.rows[id].obj) {
       $(this.rows[id].obj).removeClass('selected').addClass('unfocused');
@@ -221,22 +216,20 @@
   var tagname = evtarget.tagName.toLowerCase();
   if (this.dont_select || (evtarget && (tagname == 'input' || tagname == 'img')))
     return true;
-    
+
   // accept right-clicks
   if (rcube_event.get_button(e) == 2)
     return true;
-  
+
   this.in_selection_before = this.in_selection(id) ? id : false;
 
   // selects currently unselected row
-  if (!this.in_selection_before)
-  {
+  if (!this.in_selection_before) {
     var mod_key = rcube_event.get_modifier(e);
     this.select_row(id, mod_key, false);
   }
 
-  if (this.draggable && this.selection.length)
-  {
+  if (this.draggable && this.selection.length) {
     this.drag_start = true;
     this.drag_mouse_start = rcube_event.get_mouse_pos(e);
     rcube_event.add_listener({event:'mousemove', object:this, method:'drag_mouse_move'});
@@ -272,12 +265,11 @@
     return true;
 
   // don't do anything (another action processed before)
-  if (this.dont_select)
-    {
+  if (this.dont_select) {
     this.dont_select = false;
     return false;
     }
-    
+
   var dblclicked = now - this.rows[id].clicked < this.dblclick_time;
 
   // unselects currently selected row
@@ -425,7 +417,7 @@
     new_row = row.obj.nextSibling;
     this.update_expando(row.uid);
     this.triggerEvent('expandcollapse', { uid:row.uid, expanded:row.expanded });
-    
+
     // don't collapse sub-root tree in multiexpand mode 
     if (depth && this.multiexpand)
       return false; 
@@ -535,28 +527,28 @@
 
 get_first_row: function()
 {
-  if (this.rowcount)
-    {
+  if (this.rowcount) {
     var rows = this.list.tBodies[0].rows;
 
     for(var i=0; i<rows.length-1; i++)
       if(rows[i].id && String(rows[i].id).match(/rcmrow([a-z0-9\-_=\+\/]+)/i) && this.rows[RegExp.$1] != null)
+
 	return RegExp.$1;
-    }
+  }
 
   return null;
 },
 
 get_last_row: function()
 {
-  if (this.rowcount)
-    {
+  if (this.rowcount) {
     var rows = this.list.tBodies[0].rows;
 
     for(var i=rows.length-1; i>=0; i--)
       if(rows[i].id && String(rows[i].id).match(/rcmrow([a-z0-9\-_=\+\/]+)/i) && this.rows[RegExp.$1] != null)
+
 	return RegExp.$1;
-    }
+  }
 
   return null;
 },
@@ -570,20 +562,17 @@
   var select_before = this.selection.join(',');
   if (!this.multiselect)
     mod_key = 0;
-    
+
   if (!this.shift_start)
     this.shift_start = id
 
-  if (!mod_key)
-  {
+  if (!mod_key) {
     this.shift_start = id;
     this.highlight_row(id, false);
     this.multi_selecting = false;
   }
-  else
-  {
-    switch (mod_key)
-    {
+  else {
+    switch (mod_key) {
       case SHIFT_KEY:
         this.shift_select(id, false);
         break;
@@ -612,8 +601,7 @@
     $(this.rows[this.last_selected].obj).removeClass('focused');
 
   // unselect if toggleselect is active and the same row was clicked again
-  if (this.toggleselect && this.last_selected == id)
-  {
+  if (this.toggleselect && this.last_selected == id) {
     this.clear_selection();
     id = null;
   }
@@ -690,7 +678,7 @@
 {
   if (!this.rows[uid] || !this.rows[uid].has_children)
     return;
-  
+
   var depth = this.rows[uid].depth;
   var row = this.rows[uid].obj.nextSibling;
   while (row) {
@@ -722,16 +710,13 @@
   var j = ((from_rowIndex > to_rowIndex)? from_rowIndex : to_rowIndex);
 
   // iterate through the entire message list
-  for (var n in this.rows)
-  {
-    if ((this.rows[n].obj.rowIndex >= i) && (this.rows[n].obj.rowIndex <= j))
-    {
+  for (var n in this.rows) {
+    if ((this.rows[n].obj.rowIndex >= i) && (this.rows[n].obj.rowIndex <= j)) {
       if (!this.in_selection(n)) {
         this.highlight_row(n, true);
       }
     }
-    else
-    {
+    else {
       if  (this.in_selection(n) && !control) {
         this.highlight_row(n, true);
       }
@@ -763,17 +748,14 @@
 
   // reset but remember selection first
   var select_before = this.selection.join(',');
-  this.selection = new Array();
-  
-  for (var n in this.rows)
-  {
-    if (!filter || (this.rows[n] && this.rows[n][filter] == true))
-    {
+  this.selection = [];
+
+  for (var n in this.rows) {
+    if (!filter || (this.rows[n] && this.rows[n][filter] == true)) {
       this.last_selected = n;
       this.highlight_row(n, true);
     }
-    else if (this.rows[n])
-    {
+    else if (this.rows[n]) {
       $(this.rows[n].obj).removeClass('selected').removeClass('unfocused');
     }
   }
@@ -798,7 +780,7 @@
 
   // remember old selection
   var select_before = this.selection.join(',');
-  
+
   for (var n in this.rows)
     this.highlight_row(n, true);
 
@@ -820,24 +802,22 @@
   var num_select = this.selection.length;
 
   // one row
-  if (id)
-    {
+  if (id) {
     for (var n=0; n<this.selection.length; n++)
       if (this.selection[n] == id) {
         this.selection.splice(n,1);
         break;
       }
-    }
+  }
   // all rows
-  else
-    {
+  else {
     for (var n=0; n<this.selection.length; n++)
       if (this.rows[this.selection[n]]) {
         $(this.rows[this.selection[n]].obj).removeClass('selected').removeClass('unfocused');
-        }
-    
-    this.selection = new Array();
-    }
+      }
+
+    this.selection = [];
+  }
 
   if (num_select && !this.selection.length)
     this.triggerEvent('select');
@@ -870,25 +850,20 @@
  */
 highlight_row: function(id, multiple)
 {
-  if (this.rows[id] && !multiple)
-  {
-    if (this.selection.length > 1 || !this.in_selection(id))
-    {
+  if (this.rows[id] && !multiple) {
+    if (this.selection.length > 1 || !this.in_selection(id)) {
       this.clear_selection();
       this.selection[0] = id;
       $(this.rows[id].obj).addClass('selected');
     }
   }
-  else if (this.rows[id])
-  {
-    if (!this.in_selection(id))  // select row
-    {
+  else if (this.rows[id]) {
+    if (!this.in_selection(id)) { // select row
       this.selection[this.selection.length] = id;
       $(this.rows[id].obj).addClass('selected');
     }
-    else  // unselect row
-    {
-      var p = jQuery.inArray(id, this.selection);
+    else { // unselect row
+      var p = $.inArray(id, this.selection);
       var a_pre = this.selection.slice(0, p);
       var a_post = this.selection.slice(p+1, this.selection.length);
       this.selection = a_pre.concat(a_post);
@@ -909,8 +884,7 @@
   var keyCode = rcube_event.get_keycode(e);
   var mod_key = rcube_event.get_modifier(e);
 
-  switch (keyCode)
-  {
+  switch (keyCode) {
     case 40:
     case 38: 
     case 63233: // "down", in safari keypress
@@ -938,11 +912,11 @@
       this.shiftkey = e.shiftKey;
       this.key_pressed = keyCode;
       this.triggerEvent('keypress');
-      
+
       if (this.key_pressed == this.BACKSPACE_KEY)
         return rcube_event.cancel(e);
   }
-  
+
   return true;
 },
 
@@ -951,12 +925,11 @@
  */
 key_down: function(e)
 {
-  switch (rcube_event.get_keycode(e))
-  {
+  switch (rcube_event.get_keycode(e)) {
     case 27:
       if (this.drag_active)
 	return this.drag_mouse_up(e);
-	
+
     case 40:
     case 38: 
     case 63233:
@@ -967,10 +940,10 @@
     case 32:
       if (!rcube_event.get_modifier(e) && this.focused)
         return rcube_event.cancel(e);
-        
+
     default:
   }
-  
+
   return true;
 },
 
@@ -988,8 +961,7 @@
   else if (keyCode == 38 || keyCode == 63232) // up arrow key pressed
     new_row = this.get_prev_row();
 
-  if (new_row)
-  {
+  if (new_row) {
     this.select_row(new_row.uid, mod_key, true);
     this.scrollto(new_row.uid);
   }
@@ -1034,8 +1006,7 @@
 scrollto: function(id)
 {
   var row = this.rows[id].obj;
-  if (row && this.frame)
-  {
+  if (row && this.frame) {
     var scroll_to = Number(row.offsetTop);
 
     // expand thread if target row is hidden (collapsed)
@@ -1058,17 +1029,16 @@
  */
 drag_mouse_move: function(e)
 {
-  if (this.drag_start)
-  {
+  if (this.drag_start) {
     // check mouse movement, of less than 3 pixels, don't start dragging
     var m = rcube_event.get_mouse_pos(e);
 
     if (!this.drag_mouse_start || (Math.abs(m.x - this.drag_mouse_start.x) < 3 && Math.abs(m.y - this.drag_mouse_start.y) < 3))
       return false;
-  
+
     if (!this.draglayer)
       this.draglayer = $('<div>').attr('id', 'rcmdraglayer').css({ position:'absolute', display:'none', 'z-index':2000 }).appendTo(document.body);
-      
+
     // also select childs of (collapsed) threads for dragging
     var selection = $.merge([], this.selection);
     var depth, row, uid, r;
@@ -1081,42 +1051,37 @@
     // get subjects of selected messages
     var names = '';
     var c, i, subject, obj;
-    for(var n=0; n<this.selection.length; n++)
-    {
-      if (n>12)  // only show 12 lines
-      {
+    for(var n=0; n<this.selection.length; n++) {
+      // only show 12 lines
+      if (n>12) {
         names += '...';
         break;
       }
 
-      if (obj = this.rows[this.selection[n]].obj)
-      {
+      if (obj = this.rows[this.selection[n]].obj) {
         subject = '';
 
-        for (c=0, i=0; i<obj.childNodes.length; i++)
-        {
-	  if (obj.childNodes[i].nodeName == 'TD')
-          {
+        for (c=0, i=0; i<obj.childNodes.length; i++) {
+	      if (obj.childNodes[i].nodeName == 'TD') {
             if (n == 0)
-	      this.drag_start_pos = $(obj.childNodes[i]).offset();
+	          this.drag_start_pos = $(obj.childNodes[i]).offset();
 
-	    if (this.subject_col < 0 || (this.subject_col >= 0 && this.subject_col == c))
-	    {
-	      var node, tmp_node, nodes = obj.childNodes[i].childNodes;
-	      // find text node
-	      for (m=0; m<nodes.length; m++) {
-	        if ((tmp_node = obj.childNodes[i].childNodes[m]) && (tmp_node.nodeType==3 || tmp_node.nodeName=='A'))
-	          node = tmp_node;
-	      }
-	      
-	      if (!node)
-	        break;
+	        if (this.subject_col < 0 || (this.subject_col >= 0 && this.subject_col == c)) {
+	          var node, tmp_node, nodes = obj.childNodes[i].childNodes;
+	          // find text node
+	          for (m=0; m<nodes.length; m++) {
+	            if ((tmp_node = obj.childNodes[i].childNodes[m]) && (tmp_node.nodeType==3 || tmp_node.nodeName=='A'))
+	              node = tmp_node;
+	          }
+
+	          if (!node)
+	            break;
 
               subject = node.nodeType==3 ? node.data : node.innerHTML;
-	      // remove leading spaces
-	      subject = subject.replace(/^\s+/i, '');
+	          // remove leading spaces
+	          subject = subject.replace(/^\s+/i, '');
               // truncate line to 50 characters
-	      names += (subject.length > 50 ? subject.substring(0, 50)+'...' : subject) + '<br />';
+	          names += (subject.length > 50 ? subject.substring(0, 50)+'...' : subject) + '<br />';
               break;
             }
             c++;
@@ -1132,8 +1097,7 @@
     this.triggerEvent('dragstart');
   }
 
-  if (this.drag_active && this.draglayer)
-  {
+  if (this.drag_active && this.draglayer) {
     var pos = rcube_event.get_mouse_pos(e);
     this.draglayer.css({ left:(pos.x+20)+'px', top:(pos.y-5 + (bw.ie ? document.documentElement.scrollTop : 0))+'px' });
     this.triggerEvent('dragmove', e?e:window.event);

--
Gitblit v1.9.1