root
2012-05-08 269b1433db56f58d9e8a1d38c0580fd483021871
skins/default/functions.js
@@ -102,6 +102,7 @@
    groupmenu:      {id:'groupoptionsmenu', above:1},
    mailboxmenu:    {id:'mailboxoptionsmenu', above:1},
    composemenu:    {id:'composeoptionsmenu', editable:1, overlap:1},
    spellmenu:      {id:'spellmenu'},
    // toggle: #1486823, #1486930
    uploadmenu:     {id:'attachment-form', editable:1, above:1, toggle:!bw.ie&&!bw.linux },
    uploadform:     {id:'upload-form', editable:1, toggle:!bw.ie&&!bw.linux }
@@ -351,6 +352,43 @@
  rcmail.set_list_options(cols, sort, ord, thread == 'thread' ? 1 : 0);
},
spellmenu: function(show)
{
  var link, li,
    lang = rcmail.spellcheck_lang(),
    menu = this.popups.spellmenu.obj,
    ul = $('ul', menu);
  if (!ul.length) {
    ul = $('<ul>');
    for (i in rcmail.env.spell_langs) {
      li = $('<li>');
      link = $('<a href="#">').text(rcmail.env.spell_langs[i])
        .addClass('active').data('lang', i)
        .click(function() {
          rcmail.spellcheck_lang_set($(this).data('lang'));
        });
      link.appendTo(li);
      li.appendTo(ul);
    }
    ul.appendTo(menu);
  }
  // select current language
  $('li', ul).each(function() {
    var el = $('a', this);
    if (el.data('lang') == lang)
      el.addClass('selected');
    else if (el.hasClass('selected'))
      el.removeClass('selected');
  });
  this.show_popupmenu('spellmenu', show);
},
body_mouseup: function(evt, p)
{
  var i, target = rcube_event.get_target(evt);
@@ -470,15 +508,10 @@
  w -= 8;  // 2 x 3px padding + 2 x 1px border
  h -= 4;
  $('#compose-body_tbl').width((w+6)+'px').height('');
  $('#compose-body_ifr').width((w+6)+'px').height((h-54)+'px');
  $('#compose-body').width(w+'px').height(h+'px');
  if (window.tinyMCE && tinyMCE.get('compose-body')) {
    $('#compose-body_tbl').width((w+6)+'px').height('');
    $('#compose-body_ifr').width((w+6)+'px').height((h-54)+'px');
  }
  else {
    $('#googie_edit_layer').height(h+'px');
  }
  $('#googie_edit_layer').height(h+'px');
},
resize_compose_body_ev: function()
@@ -558,6 +591,44 @@
};
/**
 * Scroller
 */
function rcmail_scroller(list, top, bottom)
{
  var ref = this;
  this.list = $(list);
  this.top = $(top);
  this.bottom = $(bottom);
  this.step_size = 6;
  this.step_time = 20;
  this.delay = 500;
  this.top
    .mouseenter(function() { ref.ts = window.setTimeout(function() { ref.scroll('down'); }, ref.delay); })
    .mouseout(function() { if (ref.ts) window.clearTimeout(ref.ts); });
  this.bottom
    .mouseenter(function() { ref.ts = window.setTimeout(function() { ref.scroll('up'); }, ref.delay); })
    .mouseout(function() { if (ref.ts) window.clearTimeout(ref.ts); });
  this.scroll = function(dir)
  {
    var ref = this, size = this.step_size;
    if (!rcmail.drag_active)
      return;
    if (dir == 'down')
      size *= -1;
    this.list.get(0).scrollTop += size;
    this.ts = window.setTimeout(function() { ref.scroll(dir); }, this.step_time);
  };
};
// Events handling in iframes (eg. preview pane)
function iframe_events()
@@ -565,7 +636,7 @@
  // this==iframe
  var doc = this.contentDocument ? this.contentDocument : this.contentWindow ? this.contentWindow.document : null;
  rcube_event.add_listener({ element: doc, object:rcmail_ui, method:'body_mouseup', event:'mouseup' });
}
};
// Abbreviate mailbox names to fit width of the container
function rcube_render_mailboxlist()
@@ -592,7 +663,7 @@
      elem.attr('title', text);
    elem.contents().filter(function(){ return (this.nodeType == 3); }).get(0).data = abbrev;
  });
}
};
// inspired by https://gist.github.com/24261/7fdb113f1e26111bd78c0c6fe515f6c0bf418af5
function fit_string_to_size(str, elem, len)
@@ -636,12 +707,12 @@
  }
  return result;
}
};
function update_quota(data)
{
  percent_indicator(rcmail.gui_objects.quotadisplay, data);
}
};
// percent (quota) indicator
function percent_indicator(obj, data)
@@ -705,7 +776,7 @@
  $(obj).html('').append(bar1).append(bar2).append(main);
  // update #quotaimg title
  $('#quotaimg').attr('title', data.title);
}
};
// Optional parameters used by TinyMCE
var rcmail_editor_settings = {
@@ -740,6 +811,8 @@
      rcmail.addEventListener('responseaftergetunread', rcube_render_mailboxlist);
      rcmail.addEventListener('responseaftercheck-recent', rcube_render_mailboxlist);
      rcmail.addEventListener('aftercollapse-folder', rcube_render_mailboxlist);
      new rcmail_scroller('#mailboxlist-content', '#mailboxlist-title', '#mailboxlist-footer');
    }
    if (rcmail.env.action == 'compose')
@@ -747,5 +820,12 @@
  }
  else if (rcmail.env.task == 'addressbook') {
    rcmail.addEventListener('afterupload-photo', function(){ rcmail_ui.show_popup('uploadform', false); });
    if (rcmail.gui_objects.folderlist)
      new rcmail_scroller('#directorylist-content', '#directorylist-title', '#directorylist-footer');
  }
  else if (rcmail.env.task == 'settings') {
    if (rcmail.gui_objects.subscriptionlist)
      new rcmail_scroller('#folderlist-content', '#folderlist-title', '#folderlist-footer');
  }
}