alecpl
2012-04-14 651da7934ed4c13e2cbc2e4a82caf2ebaba87373
skins/larry/ui.js
@@ -24,6 +24,7 @@
    groupmenu:          { above:1 },
    mailboxmenu:        { above:1 },
    composeoptionsmenu: { editable:1, overlap:1 },
    spellmenu:          { callback: spellmenu },
    // toggle: #1486823, #1486930
    'attachment-form':  { editable:1, above:1, toggle:!bw.ie&&!bw.linux },
    'upload-form':      { editable:1, toggle:!bw.ie&&!bw.linux }
@@ -112,12 +113,14 @@
        if (previewframe)
          mailviewsplit.init();
        new rcube_scroller('#folderlist-content', '#folderlist-header', '#folderlist-footer');
        rcmail.addEventListener('setquota', update_quota);
      }
      if ($('#mailview-left').length) {
        new rcube_splitter({ id:'mailviewsplitterv', p1:'#mailview-left', p2:'#mailview-right',
          orientation:'v', relative:true, start:248, min:150, size:12, callback:render_mailboxlist, render:resize_leftcol }).init();
          orientation:'v', relative:true, start:226, min:150, size:12, callback:render_mailboxlist, render:resize_leftcol }).init();
      }
    }
    /***  settings task  ***/
@@ -133,13 +136,15 @@
      if (rcmail.env.action == 'folders') {
        new rcube_splitter({ id:'folderviewsplitter', p1:'#folderslist', p2:'#folder-details',
          orientation:'v', relative:true, start:305, min:150, size:12 }).init();
          orientation:'v', relative:true, start:266, min:180, size:12 }).init();
        new rcube_scroller('#folderslist-content', '#folderslist-header', '#folderslist-footer');
        rcmail.addEventListener('setquota', update_quota);
      }
      else if (rcmail.env.action == 'identities') {
        new rcube_splitter({ id:'identviewsplitter', p1:'#identitieslist', p2:'#identity-details',
          orientation:'v', relative:true, start:305, min:150, size:12 }).init();
          orientation:'v', relative:true, start:266, min:180, size:12 }).init();
      }
    }
    /***  addressbook task  ***/
@@ -150,25 +155,9 @@
        new rcube_splitter({ id:'addressviewsplitterd', p1:'#addressview-left', p2:'#addressview-right',
          orientation:'v', relative:true, start:226, min:150, size:12, render:resize_leftcol }).init();
        new rcube_splitter({ id:'addressviewsplitter', p1:'#addresslist', p2:'#contacts-box',
          orientation:'v', relative:true, start:296, min:220, size:12 }).init();
      }
    }
    /***  login page  ***/
    else if (rcmail.env.task == 'login') {
      if (bw.ie && bw.vendver < 8) {
        var popup = $('<div>')
          .addClass('readtext')
          .html("Roundcube will not work well with the crappy browser ya' using. Get yourself a new internet browsing software and don't come back without!<p>Sincerly,<br/>the Roundcube Dev Team</p>")
          .appendTo(document.body)
          .dialog({
            dialogClass: 'alert',
            closeOnEscape: true,
            title: "No way, are you serious?",
            close: function() {
              popup.dialog('destroy').remove();
            },
            width: 450
          });
          orientation:'v', relative:true, start:286, min:270, size:12 }).init();
        new rcube_scroller('#directorylist-content', '#directorylist-header', '#directorylist-footer');
      }
    }
@@ -176,26 +165,30 @@
    $('.tabbed').each(function(idx, elem){ init_tabs(elem); })
    // decorate select elements
    if (!bw.opera) {
      $('select.decorated').each(function(){
        var title = $('option', this).first().text();
        if ($('option:selected', this).val() != '')
          title = $('option:selected', this).text();
        var select = $(this)
          .change(function(){
            var val = $('option:selected', this).text();
            $(this).next().children().html(val);
          });
    $('select.decorated').each(function(){
      if (bw.opera) {
        $(this).removeClass('decorated');
        return;
      }
        $('<a class="menuselector dropdownselector"><span class="handle">' + title + '</span></a>')
          .css('position', 'absolute')
          .offset(select.position())
          .insertAfter(select)
          .children().width(select.outerWidth() - 40);
      var title = $('option', this).first().text();
      if ($('option:selected', this).val() != '')
        title = $('option:selected', this).text();
        select.parent().css('position', 'relative');
      });
    }
      var select = $(this)
        .change(function(){
          var val = $('option:selected', this).text();
          $(this).next().children().html(val);
        });
      $('<a class="menuselector dropdownselector"><span class="handle">' + title + '</span></a>')
        .css('position', 'absolute')
        .offset(select.position())
        .insertAfter(select)
        .children().width(select.outerWidth() - 40);
      select.parent().css('position', 'relative');
    });
    $(document.body)
      .bind('mouseup', body_mouseup)
@@ -328,13 +321,13 @@
    bottom.css('height', (form.height() - bottom.position().top) + 'px');
    w = body.parent().width() - 6;
    h = body.parent().height() - 36;
    w = body.parent().width() - 5;
    h = body.parent().height() - 16;
    body.width(w).height(h);
    if (window.tinyMCE && tinyMCE.get('composebody')) {
      $('#composebody_tbl').width((w+10)+'px').height('').css('margin-top', '1px');
      $('#composebody_ifr').width((w+10)+'px').height((h-22)+'px');
      $('#composebody_tbl').width((w+8)+'px').height('').css('margin-top', '1px');
      $('#composebody_ifr').width((w+8)+'px').height((h-40)+'px');
    }
    else {
      $('#googie_edit_layer').height(h+'px');
@@ -415,7 +408,7 @@
      $('select').css('visibility', show?'hidden':'inherit');
      $('select', obj).css('visibility', 'inherit');
    }
    return show;
  }
@@ -541,6 +534,42 @@
          $('#s_mod_' + n).prop('checked', true);
      }
    }
  }
  function spellmenu(show)
  {
    var link, li,
      lang = rcmail.spellcheck_lang(),
      menu = popups.spellmenu,
      ul = $('ul', menu);
    if (!ul.length) {
      ul = $('<ul class="toolbarmenu selectable">');
      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');
    });
  }
@@ -833,6 +862,43 @@
}
/**
 * Roundcube Scroller class
 */
function rcube_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);
  };
};
/**
 * Roundcube UI splitter class
@@ -1063,4 +1129,3 @@
{
  return rcube_splitter._instances[id];
};