From ecf7590cb84bb944d4adcd46124fbf0d081848f3 Mon Sep 17 00:00:00 2001
From: thomascube <thomas@roundcube.net>
Date: Sun, 13 Nov 2005 14:02:28 -0500
Subject: [PATCH] Added new languages and new XMLHttpRequest class

---
 CHANGELOG                               |    8 
 index.php                               |    8 
 program/localization/ru/messages.inc    |   62 +++
 program/localization/pt_BR/labels.inc   |   22 
 program/localization/el/messages.inc    |   81 ++++
 program/localization/nn_NO/messages.inc |   60 +++
 program/localization/ru/labels.inc      |  178 ++++++++++
 program/localization/nn_NO/labels.inc   |  176 ++++++++++
 program/js/app.js                       |  236 +++++++++++--
 program/localization/el/labels.inc      |  183 ++++++++++
 program/localization/index.inc          |    1 
 11 files changed, 959 insertions(+), 56 deletions(-)

diff --git a/CHANGELOG b/CHANGELOG
index 618c51f..c534d56 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -60,9 +60,9 @@
 - Display folder names with special chars correctly (Bug #1330157)
 
 
-2005/11/06
+2005/11/13
 ----------
-- Added Finnish, Romanian, Polish, Czech, British, Norwegian and Chinese translation
+- Added Finnish, Romanian, Polish, Czech, British, Norwegian, Greek, Russian and Chinese translation
 - Get IMAP server capabilities in array
 - Check for NAMESPACE capability before sending command
 - Set default user language from config 'locale_string'
@@ -77,5 +77,7 @@
 - Added messages/warning to compose step (Patch #1323895)
 - Added favicon to the default skin
 - Fixed Bug #1334337 as far as possible
-- Added Reply-To-All functionality
+- Added Reply-To-All functionality (Request #1326395, Patch #1349777)
+- Redesign of client side AJAX code (enable multi threading)
+- Added keep-alive signal every minute
 
diff --git a/index.php b/index.php
index dcb6566..16a3540 100644
--- a/index.php
+++ b/index.php
@@ -289,6 +289,14 @@
   }
 
 
+// handle keep-alive signal
+if ($_action=='keep-alive')
+  {
+  rcube_remote_response('');
+  exit;
+  }
+
+
 // only allow these templates to be included
 $valid_tasks = array('mail','settings','addressbook');
 
diff --git a/program/js/app.js b/program/js/app.js
index 9825c18..095c89d 100644
--- a/program/js/app.js
+++ b/program/js/app.js
@@ -6,7 +6,7 @@
  | Copyright (C) 2005, RoundCube Dev, - Switzerland                      |
  | Licensed under the GNU GPL                                            |
  |                                                                       |
- | Modified: 2005/11/08 (roundcube)                                      |
+ | Modified: 2005/11/13 (roundcube)                                      |
  |                                                                       |
  +-----------------------------------------------------------------------+
  | Author: Thomas Bruederli <roundcube@gmail.com>                        |
@@ -33,6 +33,7 @@
   this.dblclick_time = 600;
   this.message_time = 5000;
   this.request_timeout = 180000;
+  this.kepp_alive_interval = 60000;
   this.mbox_expression = new RegExp('[^0-9a-z\-_]', 'gi');
   this.env.blank_img = 'skins/default/images/blank.gif';
   
@@ -217,6 +218,10 @@
     // show message
     if (this.pending_message)
       this.display_message(this.pending_message[0], this.pending_message[1]);
+      
+    // start interval for keep-alive siganl
+    if (this.kepp_alive_interval)
+      this.kepp_alive_int = setInterval(this.ref+'.send_keep_alive()', this.kepp_alive_interval);
     };
 
 
@@ -1189,7 +1194,7 @@
     // send request to server
     var url = '_mbox='+escape(mbox)+(page ? '&_page='+page : '');
     this.set_busy(true, 'loading');
-    this.http_request('list', url+add_url);
+    this.http_request('list', url+add_url, true);
     };
 
 
@@ -1217,13 +1222,18 @@
           this.message_rows[id].obj.style.display = 'none';
         }
       }
+      
+    var lock = false;
 
     // show wait message
     if (this.env.action=='show')
+      {
+      lock = true;
       this.set_busy(true, 'movingmessage');
+      }
 
     // send request to server
-    this.http_request('moveto', '_uid='+a_uids.join(',')+'&_mbox='+escape(this.env.mailbox)+'&_target_mbox='+escape(mbox)+'&_from='+(this.env.action ? this.env.action : ''));
+    this.http_request('moveto', '_uid='+a_uids.join(',')+'&_mbox='+escape(this.env.mailbox)+'&_target_mbox='+escape(mbox)+'&_from='+(this.env.action ? this.env.action : ''), lock);
     };
 
 
@@ -1692,7 +1702,7 @@
     // send request to server
     var url = page ? '&_page='+page : '';
     this.set_busy(true, 'loading');
-    this.http_request('list', url);
+    this.http_request('list', url, true);
     };
 
 
@@ -1834,7 +1844,7 @@
       name = form.elements['_folder_name'].value;
 
     if (name)
-      this.http_request('create-folder', '_name='+escape(name));
+      this.http_request('create-folder', '_name='+escape(name), true);
     else if (form.elements['_folder_name'])
       form.elements['_folder_name'].focus();
     };
@@ -2346,18 +2356,29 @@
   /********************************************************/
 
 
-  // send a http request to the server
-  this.http_request = function(action, querystring)
+  this.http_sockets = new Array();
+  
+  // find a non-busy socket or create a new one
+  this.get_request_obj = function()
     {
-    if (window.XMLHttpRequest)
-      this.request_obj = new XMLHttpRequest();
-    else if (window.ActiveXObject)
-      this.request_obj = new ActiveXObject("Microsoft.XMLHTTP");
-    else
+    for (var n=0; n<this.http_sockets.length; n++)
       {
-      
+      if (!this.http_sockets[n].busy)
+        return this.http_sockets[n];
       }
+    
+    // create a new XMLHTTP object
+    var i = this.http_sockets.length;
+    this.http_sockets[i] = new rcube_http_request();
 
+    return this.http_sockets[i];
+    };
+  
+
+  // send a http request to the server
+  this.http_request = function(action, querystring, lock)
+    {
+    var request_obj = this.get_request_obj();
     querystring += '&_remote=1';
     
     // add timestamp to request url to avoid cacheing problems in Safari
@@ -2365,51 +2386,77 @@
       querystring += '&_ts='+(new Date().getTime());
 
     // send request
-    if (this.request_obj)
+    if (request_obj)
       {
       // prompt('request', this.env.comm_path+'&_action='+escape(action)+'&'+querystring);
       console('HTTP request: '+this.env.comm_path+'&_action='+escape(action)+'&'+querystring);
-      this.set_busy(true);
-      this.request_action = action;
-      this.request_obj.onreadystatechange = function(){ rcube_webmail_client.http_response(); };
-      this.request_obj.open('GET', this.env.comm_path+'&_action='+escape(action)+'&'+querystring);
-      this.request_obj.send(null);
+
+      if (lock)
+        this.set_busy(true);
+
+      request_obj.__lock = lock ? true : false;
+      request_obj.__action = action;
+      request_obj.onerror = function(o){ rcube_webmail_client.http_error(o); };
+      request_obj.oncomplete = function(o){ rcube_webmail_client.http_response(o); };
+      request_obj.GET(this.env.comm_path+'&_action='+escape(action)+'&'+querystring);
       }
     };
 
 
-  // handle http response
-  this.http_response = function()
+  // handle HTTP response
+  this.http_response = function(request_obj)
     {
-    if (this.request_obj.readyState == 4) // || this.request_obj.readyState == 2)
-      {
-      var ctype = this.request_obj.getResponseHeader('Content-Type');
-      if (ctype)
-        ctype = String(ctype).toLowerCase();
+    var ctype = request_obj.get_header('Content-Type');
+    if (ctype)
+      ctype = String(ctype).toLowerCase();
 
+    if (request_obj.__lock)
       this.set_busy(false);
 
-  console(this.request_obj.responseText);
+  console(request_obj.responseText);
 
-      // if we get javascript code from server -> execute it
-      if (this.request_obj.responseText && (ctype=='text/javascript' || ctype=='application/x-javascript'))
-        eval(this.request_obj.responseText);
+    // if we get javascript code from server -> execute it
+    if (request_obj.responseText && (ctype=='text/javascript' || ctype=='application/x-javascript'))
+      eval(request_obj.responseText);
 
-      // process the response data according to the sent action
-      switch (this.request_action)
-        {
-        case 'delete':
-        case 'moveto':
-          if (this.env.action=='show')
-            this.command('list');
-          break;
+    // process the response data according to the sent action
+    switch (request_obj.__action)
+      {
+      case 'delete':
+      case 'moveto':
+        if (this.env.action=='show')
+          this.command('list');
+        break;
           
-        case 'list':
-          this.enable_command('select-all', 'select-none', this.env.messagecount ? true : false);
-          break;
-        }
+      case 'list':
+        this.enable_command('select-all', 'select-none', this.env.messagecount ? true : false);
+        break;
       }
+
+    request_obj.reset();
     };
+
+
+  // handle HTTP request errors
+  this.http_error = function(request_obj)
+    {
+    alert('Error sending request: '+request_obj.url);
+
+    if (request_obj.__lock)
+      this.set_busy(false);
+
+    request_obj.reset();
+    request_obj.__lock = false;
+    };
+
+
+  // use an image to send a keep-alive siganl to the server
+  this.send_keep_alive = function()
+    {
+    var d = new Date();
+    this.http_request('keep-alive', '_t='+d.getTime());
+    };
+    
 
 
   /********************************************************/
@@ -2525,6 +2572,111 @@
 
 
 
+// class for HTTP requests
+function rcube_http_request()
+  {
+  this.url = '';
+  this.busy = false;
+  this.xmlhttp = null;
+
+
+  // reset object properties
+  this.reset = function()
+    {
+    // set unassigned event handlers
+    this.onloading = function(){ };
+    this.onloaded = function(){ };
+    this.oninteractive = function(){ };
+    this.oncomplete = function(){ };
+    this.onabort = function(){ };
+    this.onerror = function(){ };
+    
+    this.url = '';
+    this.busy = false;
+    this.xmlhttp = null;
+    }
+
+
+  // create HTMLHTTP object
+  this.build = function()
+    {
+    if (window.XMLHttpRequest)
+      this.xmlhttp = new XMLHttpRequest();
+    else if (window.ActiveXObject)
+      this.xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
+    else
+      {
+      
+      }
+    }
+
+  // sedn GET request
+  this.GET = function(url)
+    {
+    this.build();
+
+    if (!this.xmlhttp)
+      {
+      this.onerror(this);
+      return false;
+      }
+
+    var ref = this;
+    this.url = url;
+    this.busy = true;
+
+    this.xmlhttp.onreadystatechange = function(){ ref.xmlhttp_onreadystatechange(); };
+    this.xmlhttp.open('GET', url);
+    this.xmlhttp.send(null);
+    };
+
+
+  this.POST = function(url, a_param)
+    {
+    // not implemented yet
+    };
+
+
+  // handle onreadystatechange event
+  this.xmlhttp_onreadystatechange = function()
+    {
+    if(this.xmlhttp.readyState == 1)
+      this.onloading(this);
+
+    else if(this.xmlhttp.readyState == 2)
+      this.onloaded(this);
+
+    else if(this.xmlhttp.readyState == 3)
+      this.oninteractive(this);
+
+    else if(this.xmlhttp.readyState == 4)
+      {
+      this.responseText = this.xmlhttp.responseText;
+      this.responseXML = this.xmlhttp.responseXML;
+      
+      if(this.xmlhttp.status == 0)
+        this.onabort(this);
+      else if(this.xmlhttp.status == 200)
+        this.oncomplete(this);
+      else
+        this.onerror(this);
+        
+      this.busy = false;
+      }
+    }
+
+  // getter method for HTTP headers
+  this.get_header = function(name)
+    {
+    return this.xmlhttp.getResponseHeader(name);
+    };
+
+
+  this.reset();
+  
+  }  // end class rcube_http_request
+
+
 
 function console(str)
   {
diff --git a/program/localization/el/labels.inc b/program/localization/el/labels.inc
new file mode 100755
index 0000000..929ce11
--- /dev/null
+++ b/program/localization/el/labels.inc
@@ -0,0 +1,183 @@
+<?php
+
+/*
+ +------------------------------------------------------------------------------+
+ | language/el/labels.inc                                                       |
+ |                                                                              |
+ | Language file of the RoundCube Webmail client                                |
+ | Copyright (C) 2005, RoundQube Dev. - Switzerland                             |
+ | Licensed under the GNU GPL                                                   |
+ |                                                                              |
+ +------------------------------------------------------------------------------+
+ | Author: Thomas Bruederli <roundcube@gmail.com>                               |
+ +------------------------------------------------------------------------------+
+ | Greek Translation: Panormitis Petrou <panormitis@gmx.net>                    |
+ +------------------------------------------------------------------------------+
+
+ $Id$
+
+*/
+
+$utf8_decoding = TRUE;
+
+$labels = array();
+
+// login page
+$labels['username']  = 'Όνομα χρήστη';
+$labels['password']  = 'Κωδικός πρόσβασης';
+$labels['server']    = 'Διακομιστής';
+$labels['login']     = 'Είσοδος';
+
+// taskbar
+$labels['logout']   = 'Αποσύνδεση';
+$labels['mail']     = 'E-Mail';
+$labels['settings'] = 'Προσωπικές ρυθμίσεις';
+$labels['addressbook'] = 'Βιβλίο διευθύνσεων';
+
+// mailbox names
+$labels['inbox']  = 'Εισερχόμενα';
+$labels['sent']   = 'Απεσταλμένα';
+$labels['trash']  = 'Κάδος αχρήστων';
+$labels['drafts'] = 'Προσχέδια';
+$labels['junk']   = '’χρηστα';
+
+// message listing
+$labels['subject'] = 'Θέμα';
+$labels['nosubject']  = '(χωρίς θέμα)';
+$labels['from']    = 'Αποστολέας';
+$labels['to']      = 'Παραλήπτης';
+$labels['cc']      = 'Κοινοποίηση';
+$labels['bcc']     = 'Κρυφή κοινοποίηση';
+$labels['replyto'] = 'Απάντηση προς';
+$labels['replytoallmessage'] = 'Απάντηση προς τον αποστολέα και προς όλους τους παραλήπτες';
+$labels['date']    = 'Ημερομηνία';
+$labels['size']    = 'Μέγεθος';
+$labels['priority'] = 'Προτεραιότητα';
+$labels['organization'] = 'Οργανισμός';
+$labels['sortby']   = 'Ταξινόμηση κατά';
+$labels['sortasc']  = 'Αύξουσα ταξινόμηση';
+$labels['sortdesc'] = 'Φθίνουσα ταξινόμηση';
+
+// aliases
+$labels['reply-to'] = $labels['Απάντηση προς'];
+
+$labels['mailboxlist'] = 'Φάκελοι';
+$labels['messagesfromto'] = 'Μηνύματα $from έως $to από $count';
+$labels['messagenrof'] = 'Μήνυμα $nr από $count';
+
+$labels['moveto']   = 'Μετακίνηση σε...';
+$labels['download'] = 'Λήψη';
+
+$labels['filename'] = 'Όνομα αρχείου';
+$labels['filesize'] = 'Μέγεθος αρχείου';
+
+$labels['preferhtml'] = 'Προτιμάται HTML';
+$labels['htmlmessage'] = 'Μήνυμα HTML';
+$labels['prettydate'] = 'Μορφοποιημένες ημερομηνίες';
+
+$labels['addtoaddressbook'] = 'Προσθήκη στο βιβλίο διευθύνσεων';
+
+// weekdays short
+$labels['sun'] = 'Κυρ';
+$labels['mon'] = 'Δευ';
+$labels['tue'] = 'Τρι';
+$labels['wed'] = 'Τετ';
+$labels['thu'] = 'Πεμ';
+$labels['fri'] = 'Παρ';
+$labels['sat'] = 'Σαβ';
+
+// weekdays long
+$labels['sunday']    = 'Κυριακή';
+$labels['monday']    = 'Δευτέρα';
+$labels['tuesday']   = 'Τρίτη';
+$labels['wednesday'] = 'Τετάρτη';
+$labels['thursday']  = 'Πέμπτη';
+$labels['friday']    = 'Παρασκευή';
+$labels['saturday']  = 'Σάββατο';
+
+$labels['today'] = 'Σήμερα';
+
+// toolbar buttons
+$labels['writenewmessage']  = 'Δημιουργία νέου μηνύματος';
+$labels['replytomessage']   = 'Απάντηση μηνύματος';
+$labels['forwardmessage']   = 'Προώθηση μηνύματος';
+$labels['deletemessage']    = 'Μεταφορά του μηνύματος στον κάδο αχρήστων';
+$labels['printmessage']     = 'Εκτύπωση μηνύματος';
+$labels['previousmessages'] = 'Εμφάνιση προηγουμένων μηνυμάτων';
+$labels['nextmessages']     = 'Εμφάνιση επομένων μηνυμάτων';
+$labels['backtolist']       = 'Επιστροφή στη λίστα μηνυμάτων';
+$labels['viewsource']       = 'Προβολή προέλευσης';
+
+$labels['select'] = 'Επιλογή';
+$labels['all'] = 'Όλα';
+$labels['none'] = 'Κανένα';
+$labels['unread'] = 'Αδιάβαστα';
+
+// message compose
+$labels['compose']  = 'Σύνθεση μηνύματος';
+$labels['sendmessage']  = 'Αποστολή του μηνύματος τώρα';
+$labels['addattachment']  = 'Επισύναψη αρχείου';
+$labels['attachments'] = 'Συνημμένα';
+$labels['upload'] = 'Αποστολή';
+$labels['close']  = 'Κλείσιμο';
+
+$labels['low']     = 'Χαμηλή';
+$labels['lowest']  = 'Χαμηλότατη';
+$labels['normal']  = 'Κανονική';
+$labels['high']    = 'Υψηλή';
+$labels['highest'] = 'Ύψιστη';
+
+$labels['showimages'] = 'Εμφάνιση εικόνων';
+
+
+// address boook
+$labels['name']      = 'Εμφάνιση ονόματος';
+$labels['firstname'] = 'Όνομα';
+$labels['surname']   = 'Επώνυμο';
+$labels['email']     = 'Διεύθυνση e-mail';
+
+$labels['addcontact'] = 'Προσθήκη νέας επαφής';
+$labels['editcontact'] = 'Επεξεργασία επαφής';
+
+$labels['edit']   = 'Επεξεργασία';
+$labels['cancel'] = '’κυρο';
+$labels['save']   = 'Αποθήκευση';
+$labels['delete'] = 'Διαγραφή';
+
+$labels['newcontact']     = 'Δημιουργία νέας κάρτας επαφής';
+$labels['deletecontact']  = 'Διαγραφή επιλεγμένων επαφών';
+$labels['composeto']      = 'Σύνθεση μηνύματος προς';
+$labels['contactsfromto'] = 'Επαφές $from έως $to από $count';
+$labels['print']          = 'Εκτύπωση';
+$labels['export']         = 'Εξαγωγή';
+
+
+// settings
+$labels['settingsfor']  = 'Ρυθμίσεις για';
+
+$labels['preferences']  = 'Προτιμήσεις';
+$labels['userpreferences']  = 'Προτιμήσεις χρήστη';
+$labels['editpreferences']  = 'Επεξεργασία προτιμήσεων χρήστη';
+
+$labels['identities']  = 'Ταυτότητες';
+$labels['manageidentities']  = 'Διαχείριση ταυτοτήτων αυτού του λογαριασμού';
+$labels['newidentity']  = 'Νέα ταυτότητα';
+
+$labels['newitem']  = 'Νέο αντικείμενο';
+$labels['edititem']  = 'Επεξεργασία αντικειμένου';
+
+$labels['setdefault']  = 'Ορισμός προεπιλογών';
+$labels['language']  = 'Γλώσσα';
+$labels['timezone']  = 'Ζώνη ώρας';
+$labels['pagesize']  = 'Γραμμές ανά σελίδα';
+
+$labels['folders']  = 'Φάκελοι';
+$labels['foldername']  = 'Όνομα φακέλου';
+$labels['subscribed']  = 'Εγγεγραμμένοι φάκελοι';
+$labels['create']  = 'Δημιουργία';
+$labels['createfolder']  = 'Δημιουργία νέου φακέλου';
+$labels['deletefolder']  = 'Διαγραφή φακέλου';
+$labels['managefolders']  = 'Διαχείριση φακέλων';
+
+
+?>
\ No newline at end of file
diff --git a/program/localization/el/messages.inc b/program/localization/el/messages.inc
new file mode 100755
index 0000000..0b07a5e
--- /dev/null
+++ b/program/localization/el/messages.inc
@@ -0,0 +1,81 @@
+<?php
+
+/*
+ +------------------------------------------------------------------------------+
+ | language/el/messages.inc                                                     |
+ |                                                                              |
+ | Language file of the RoundCube Webmail client                                |
+ | Copyright (C) 2005, RoundQube Dev. - Switzerland                             |
+ | Licensed under the GNU GPL                                                   |
+ |                                                                              |
+ +------------------------------------------------------------------------------+
+ | Author: Thomas Bruederli <roundcube@gmail.com>                               |
+ +------------------------------------------------------------------------------+
+ | Greek Translation: Panormitis Petrou <panormitis@gmx.net>                    |
+ +------------------------------------------------------------------------------+
+ 
+ $Id$
+
+*/
+$utf8_decoding = TRUE;
+
+$messages = array();
+
+$messages['loginfailed']  = 'Η είσοδος απέτυχε';
+
+$messages['cookiesdisabled'] = 'Ο φυλλομετρητής σας δεν υποστηρίζει cookies';
+
+$messages['sessionerror'] = 'Η σύνοδος σας δεν είναι έγκυρη ή έχει λήξει';
+
+$messages['imaperror'] = 'Η σύνδεση με τον διακομιστή IMAP απέτυχε';
+
+$messages['nomessagesfound'] = 'Δεν βρέθηκαν μηνύματα σε αυτό το γραμματοκιβώτιο';
+
+$messages['loggedout'] = 'Έχετε αποσυνδεθεί επιτυχώς. Αντίο!';
+
+$messages['mailboxempty'] = 'Το γραμματοκιβώτιο είναι άδειο';
+
+$messages['loading'] = 'Φόρτωση...';
+
+$messages['loadingdata'] = 'Φόρτωση δεδομένων...';
+
+$messages['sendingmessage'] = 'Αποστολή μηνύματος...';
+
+$messages['messagesent'] = 'Το μήνυμα στάλθηκε επιτυχώς';
+
+$messages['successfullysaved'] = 'Αποθηκεύτηκε επιτυχώς';
+
+$messages['addedsuccessfully'] = 'Η επαφή προστέθηκε επιτυχώς στο βιβλίο διευθύνσεων';
+
+$messages['contactexists'] = 'Υπάρχει ήδη επαφή με αυτή τη διεύθυνση e-mail';
+
+$messages['blockedimages'] = 'Για τη δική σας προστασία, έχουν μπλοκαριστεί οι απομακρυσμένες εικόνες που έχει αυτό το μήνυμα.';
+
+$messages['encryptedmessage'] = 'Αυτό είναι ένα κρυπτογραφημένο μήνυμα και δεν μπορεί να εμφανιστεί. Συγνώμη!';
+
+$messages['noemailwarning']    = 'Παρακαλώ εισάγετε μια έγκυρη διεύθυνση e-mail';
+
+$messages['nonamewarning']     = 'Παρακαλώ εισάγετε ένα όνομα';
+
+$messages['nopagesizewarning'] = 'Παρακαλώ εισάγετε ένα μέγεθος σελίδας';
+
+$messages['formincomplete']    = 'Η φόρμα δεν συμπληρώθηκε τελείως';
+
+$messages['norecipientwarning'] = 'Παρακαλώ εισάγετε τουλάχιστον έναν παραλήπτη';
+
+$messages['nosubjectwarning']  = 'Το πεδίο "Θέμα" είναι άδειο. Θέλετε να το πληκτρολογήσετε τώρα;';
+
+$messages['nobodywarning'] = 'Θέλετε να στείλετε αυτό το μήνυμα χωρίς κείμενο';
+
+$messages['nocontactsfound'] = 'Δεν βρέθηκαν επαφές';
+
+$messages['sendingfailed'] = 'Η αποστολή του μηνύματος απέτυχε';
+
+$messages['errorsaving'] = 'Εμφανίστηκε ένα σφάλμα κατά την αποθήκευση';
+
+$messages['errormoving']   = 'Το μήνυμα δεν μπόρεσε να μετακινηθεί';
+
+$messages['errordeleting'] = 'Το μήνυμα δεν μπόρεσε να διαγραφτεί';
+
+
+?>
\ No newline at end of file
diff --git a/program/localization/index.inc b/program/localization/index.inc
index 1ac2df1..d617bf1 100644
--- a/program/localization/index.inc
+++ b/program/localization/index.inc
@@ -62,6 +62,7 @@
 	'ru' => 'Windows-1251',
 	'lv' => 'ISO-8859-2',
 	'pl' => 'ISO-8859-2',
+	'el' => 'ISO-8859-7',
 	'tw' => 'BIG5'
 );
 
diff --git a/program/localization/nn_NO/labels.inc b/program/localization/nn_NO/labels.inc
new file mode 100644
index 0000000..15b7800
--- /dev/null
+++ b/program/localization/nn_NO/labels.inc
@@ -0,0 +1,176 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | language/nn/labels.inc                                                |
+ |                                                                       |
+ | Language file of the RoundCube Webmail client                         |
+ | Copyright (C) 2005, RoundQube Dev. - Switzerland                      |
+ | Licensed under the GNU GPL                                            |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Per-Stian Vatne <psv@orsta.org>                               |
+ +-----------------------------------------------------------------------+
+
+ $Id$
+
+*/
+
+$labels = array();
+
+// login page
+$labels['username']  = 'Brukarnamn';
+$labels['password']  = 'Passord';
+$labels['server']    = 'Tenar';
+$labels['login']     = 'Logg inn';
+
+// taskbar
+$labels['logout']   = 'Logg ut';
+$labels['mail']     = 'E-post';
+$labels['settings'] = 'Personlege innstillingar';
+$labels['addressbook'] = 'Adressebok';
+
+// mailbox names
+$labels['inbox']  = 'Innboks';
+$labels['sent']   = 'Sende element';
+$labels['trash']  = 'Sletta element';
+$labels['drafts'] = 'Kladd';
+$labels['junk']   = 'S�ppel';
+
+// message listing
+$labels['subject'] = 'Emne';
+$labels['from']    = 'Sendar';
+$labels['to']      = 'Mottakar';
+$labels['cc']      = 'Kopi';
+$labels['bcc']     = 'Blindkopi';
+$labels['replyto'] = 'Svar-til';
+$labels['date']    = 'Dato';
+$labels['size']    = 'Storleik';
+$labels['priority'] = 'Prioritet';
+$labels['organization'] = 'Organisasjon';
+
+// aliases
+$labels['reply-to'] = $labels['replyto'];
+
+$labels['mailboxlist'] = 'Katalogar';
+$labels['messagesfromto'] = 'Meldingar $from til $to av $count';
+$labels['messagenrof'] = 'Melding $nr av $count';
+
+$labels['moveto']   = 'flytt til...';
+$labels['download'] = 'last ned';
+
+$labels['filename'] = 'Filnamn';
+$labels['filesize'] = 'Filstorleik';
+
+$labels['preferhtml'] = 'F�retrekk HTML';
+$labels['htmlmessage'] = 'HTML-melding';
+$labels['prettydate'] = 'Pene datoar';
+
+$labels['addtoaddressbook'] = 'Legg til i adressebok';
+
+// weekdays short
+$labels['sun'] = 'Sun';
+$labels['mon'] = 'M�n';
+$labels['tue'] = 'Tys';
+$labels['wed'] = 'Ons';
+$labels['thu'] = 'Tor';
+$labels['fri'] = 'Fre';
+$labels['sat'] = 'Lau';
+
+// weekdays long
+$labels['sunday']    = 'Sundag';
+$labels['monday']    = 'M�ndag';
+$labels['tuesday']   = 'Tysdag';
+$labels['wednesday'] = 'Onsdag';
+$labels['thursday']  = 'Torsdag';
+$labels['friday']    = 'Fredag';
+$labels['saturday']  = 'Laurdag';
+
+$labels['today'] = 'I dag';
+
+// toolbar buttons
+$labels['writenewmessage']  = 'Skriv ei ny melding';
+$labels['replytomessage']   = 'Svar p� meldinga';
+$labels['forwardmessage']   = 'Vidaresend meldinga';
+$labels['deletemessage']    = 'Flytt melding til Sletta element';
+$labels['printmessage']     = 'Skriv ut meldinga';
+$labels['previousmessages'] = 'Vis f�reg�ande side med meldingar';
+$labels['nextmessages']     = 'Vis neste side med med meldingar';
+$labels['backtolist']       = 'Tilbake til meldingslista';
+$labels['viewsource']       = 'Vis kjelde';
+
+$labels['select'] = 'Vel';
+$labels['all'] = 'Alle';
+$labels['none'] = 'Ingen';
+$labels['unread'] = 'Uleste';
+
+// message compose
+$labels['compose']  = 'Skriv ei melding';
+$labels['sendmessage']  = 'Send meldinga no';
+$labels['addattachment']  = 'Legg ved ei fil';
+
+$labels['attachments'] = 'Vedlegg';
+$labels['upload'] = 'Last opp';
+$labels['close']  = 'Steng';
+
+$labels['low']     = 'L�g';
+$labels['lowest']  = 'L�gast';
+$labels['normal']  = 'Normal';
+$labels['high']    = 'H�g';
+$labels['highest'] = 'H�gast';
+
+$labels['showimages'] = 'Vis bilete';
+
+
+// address book
+$labels['name']      = 'Visingsnamn';
+$labels['firstname'] = 'F�renamn';
+$labels['surname']   = 'Etternamn';
+$labels['email']     = 'E-post';
+
+$labels['addcontact'] = 'Legg til ny kontakt';
+$labels['editcontact'] = 'Redigere kontakt';
+
+$labels['edit']   = 'Redigere';
+$labels['cancel'] = 'Avbryt';
+$labels['save']   = 'Lagre';
+$labels['delete'] = 'Slette';
+
+$labels['newcontact']     = 'Opprett nytt kontaktkort';
+$labels['deletecontact']  = 'Slett valde kontaktar';
+$labels['composeto']      = 'Ny melding til';
+$labels['contactsfromto'] = 'Kontaktar $from til $to av $count';
+$labels['print']          = 'Skriv ut';
+$labels['export']         = 'Eksport';
+
+
+// settings
+$labels['settingsfor']  = 'Innstillingar for';
+
+$labels['preferences']  = 'Innstillingar';
+$labels['userpreferences']  = 'Brukarinnstillingar';
+$labels['editpreferences']  = 'Redigere brukarinnstillingar';
+
+$labels['identities']  = 'Identitetar';
+$labels['manageidentities']  = 'Administrere identitetar for denne kontoen';
+$labels['newidentity']  = 'Ny identitet';
+
+$labels['newitem']  = 'Nytt element';
+$labels['edititem']  = 'Redigere element';
+
+$labels['setdefault']  = 'Set som standard';
+$labels['language']  = 'Spr�k';
+$labels['timezone']  = 'Tidssone';
+$labels['pagesize']  = 'Rader pr side';
+
+
+$labels['folders']  = 'Mapper';
+$labels['foldername']  = 'Mappenamn';
+$labels['subscribed']  = 'Abonnert';
+$labels['create']  = 'Opprette';
+$labels['createfolder']  = 'Opprett ny mappe';
+$labels['deletefolder']  = 'Slett mappe';
+$labels['managefolders']  = 'Administrere mapper';
+
+
+?>
diff --git a/program/localization/nn_NO/messages.inc b/program/localization/nn_NO/messages.inc
new file mode 100644
index 0000000..31a1c64
--- /dev/null
+++ b/program/localization/nn_NO/messages.inc
@@ -0,0 +1,60 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | language/nn/messages.inc                                              |
+ |                                                                       |
+ | Language file of the RoundCube Webmail client                         |
+ | Copyright (C) 2005, RoundCube Dev. - Switzerland                      |
+ | Licensed under the GNU GPL                                            |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Per-Stian Vatne <psv@orsta.org>                               |
+ +-----------------------------------------------------------------------+
+
+ $Id$
+
+*/
+
+$messages = array();
+
+$messages['loginfailed']  = 'Feil ved innlogging';
+
+$messages['cookiesdisabled'] = 'Nettlesaren din tillet ikkje informasjonskapslar (cookies)';
+
+$messages['sessionerror'] = 'Sesjonen din er ulovleg eller har g�tt ut p� tid';
+
+$messages['imaperror'] = 'Feil ved tilkopling til IMAP-tenar';
+
+$messages['nomessagesfound'] = 'Ingen meldingar i denne postkassa';
+
+$messages['loggedout'] = 'Du har avslutta sesjonen. Ha det bra!';
+
+$messages['mailboxempty'] = 'Postkassa er tom';
+
+$messages['loadingdata'] = 'Lastar inn data...';
+
+$messages['messagesent'] = 'Meldinga vart send';
+
+$messages['successfullysaved'] = 'Meldinga vart lagra';
+
+$messages['addedsuccessfully'] = 'Kontakta vart lagt til i adresseboka';
+
+$messages['contactexists'] = 'Ei kontakt med denne e-postadressa eksisterer allereie';
+
+$messages['blockedimages'] = 'For � ta vare p� privatlivet ditt er eksterne bilete blokkert i denne meldinga.';
+
+$messages['encryptedmessage'] = 'Dette er ei kryptert melding og kan ikkje visast. Orsak!';
+
+$messages['nocontactsfound'] = 'Fann ingen kontaktar';
+
+$messages['sendingfailed'] = 'Kunne ikkje sende meldinga';
+
+$messages['errorsaving'] = 'Det skjedde ein feil ved lagring';
+
+$messages['errormoving'] = 'Kunne ikkje flytte meldinga';
+
+$messages['errordeleting'] = 'Kunne ikkje slette meldinga';
+
+
+?>
diff --git a/program/localization/pt_BR/labels.inc b/program/localization/pt_BR/labels.inc
index e0c3256..6945ff8 100644
--- a/program/localization/pt_BR/labels.inc
+++ b/program/localization/pt_BR/labels.inc
@@ -22,7 +22,7 @@
 $labels = array();
 
 // login page
-$labels['username']  = 'Usu&aacute;rio';
+$labels['username']  = 'Nome de Usu�rio';
 $labels['password']  = 'Senha';
 $labels['server']    = 'Servidor';
 $labels['login']     = 'Login';
@@ -30,8 +30,8 @@
 // taskbar
 $labels['logout']   = 'Sair';
 $labels['mail']     = 'E-Mail';
-$labels['settings'] = 'Configura&cedil;&otilde;es pessoais';
-$labels['addressbook'] = 'Cat&aacute;logo de endere&cedil;os';
+$labels['settings'] = 'Configura��es pessoais';
+$labels['addressbook'] = 'Cat�logo de endere�os';
 
 // mailbox names
 $labels['inbox']  = 'Caixa de entrada';
@@ -44,19 +44,19 @@
 $labels['subject'] = 'Assunto';
 $labels['from']    = 'De';
 $labels['to']      = 'Para';
-$labels['cc']      = 'C&oacute;pia';
+$labels['cc']      = 'C�pia';
 $labels['bcc']     = 'Bcc';
 $labels['replyto'] = 'Responder para';
 $labels['date']    = 'Data';
 $labels['size']    = 'Tamanho';
 $labels['priority'] = 'Prioridade';
-$labels['organization'] = 'Organiza&cedil;&atilde;o';
+$labels['organization'] = 'Organiza��o';
 
 // aliases
 $labels['reply-to'] = $labels['replyto'];
 
 $labels['mailboxlist'] = 'Mensagens';
-$labels['messagesfromto'] = 'Mensagens $from at&eacute; $to de $count';
+$labels['messagesfromto'] = 'Mensagens $from at� $to de $count';
 $labels['messagenrof'] = 'Mensagens $nr de $count';
 
 $labels['moveto']   = 'mover para ...';
@@ -69,7 +69,7 @@
 $labels['htmlmessage'] = 'Mensagem HTML';
 $labels['prettydate'] = 'Formatar datas';
 
-$labels['addtoaddressbook'] = 'Incluir no cat&aacute;logo de endere&cedil;os';
+$labels['addtoaddressbook'] = 'Incluir no cat�logo de endere�os';
 
 // weekdays short
 $labels['sun'] = 'Dom';
@@ -78,16 +78,16 @@
 $labels['wed'] = 'Qua';
 $labels['thu'] = 'Qui';
 $labels['fri'] = 'Sex';
-$labels['sat'] = 'Sáb';
+$labels['sat'] = 'S�b';
 
 // weekdays long
 $labels['sunday']    = 'Domingo';
 $labels['monday']    = 'Segunda';
-$labels['tuesday']   = 'Ter&cedil;a';
+$labels['tuesday']   = 'Ter�a';
 $labels['wednesday'] = 'Quarta';
 $labels['thursday']  = 'Quinta';
 $labels['friday']    = 'Sexta';
-$labels['saturday']  = 'S&aacute;bado';
+$labels['saturday']  = 'S�bado';
 
 $labels['today'] = 'Hoje';
 
@@ -99,7 +99,7 @@
 $labels['deletemessage']    = 'Mover para a lixeira';
 $labels['printmessage']     = 'Imprimir';
 $labels['previousmessages'] = 'Anterior';
-$labels['nextmessages']     = 'Pr&oacute;ximo';
+$labels['nextmessages']     = 'Pr�ximo';
 $labels['backtolist']       = 'Voltar';
 
 $labels['select'] = 'Selecionar';
diff --git a/program/localization/ru/labels.inc b/program/localization/ru/labels.inc
new file mode 100755
index 0000000..2b89e07
--- /dev/null
+++ b/program/localization/ru/labels.inc
@@ -0,0 +1,178 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | language/ru/labels.inc                                                |
+ |                                                                       |
+ | Language file of the RoundCube Webmail client                         |
+ | Copyright (C) 2005, RoundQube Dev. - Switzerland                      |
+ | Licensed under the GNU GPL                                            |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Maxim Zenin <maxx@webmechanics.ru>, www.webmechanics.ru       |
+ +-----------------------------------------------------------------------+
+
+ $Id$
+
+*/
+
+$utf8_decoding = TRUE;
+
+$labels = array();
+
+// login page
+$labels['username']  = 'Имя пользователя';
+$labels['password']  = 'Пароль';
+$labels['server']    = 'Сервер';
+$labels['login']     = 'Логин';
+
+// taskbar
+$labels['logout']   = 'Выход';
+$labels['mail']     = 'E-Mail';
+$labels['settings'] = 'Настройки';
+$labels['addressbook'] = 'Адресная книга';
+
+// mailbox names
+$labels['inbox']  = 'Входящие';
+$labels['sent']   = 'Отправленные';
+$labels['trash']  = 'Корзина';
+$labels['drafts'] = 'Черновики';
+$labels['junk']   = 'СПАМ';
+
+// message listing
+$labels['subject'] = 'Тема';
+$labels['from']    = 'отправитель';
+$labels['to']      = 'Получатель';
+$labels['cc']      = 'Копия';
+$labels['bcc']     = 'Скрытая';
+$labels['replyto'] = 'Отвечать на';
+$labels['date']    = 'Дата';
+$labels['size']    = 'Размер';
+$labels['priority'] = 'Приоритет';
+$labels['organization'] = 'Организация';
+
+// aliases
+$labels['reply-to'] = $labels['replyto'];
+
+$labels['mailboxlist'] = 'Папки';
+$labels['messagesfromto'] = 'Сообщения  с $from по $to из $count';
+$labels['messagenrof'] = 'Сообщение $nr из $count';
+
+$labels['moveto']   = 'переместить в...';
+$labels['download'] = 'загрузить';
+
+$labels['filename'] = 'Имя файла';
+$labels['filesize'] = 'Размер файла';
+
+$labels['preferhtml'] = 'предпочитать HTML';
+$labels['htmlmessage'] = 'Сообщение HTML';
+$labels['prettydate'] = 'Красивые даты';
+
+$labels['addtoaddressbook'] = 'Добавить в адресную книгу';
+
+// weekdays short
+$labels['sun'] = 'Вс';
+$labels['mon'] = 'Пн';
+$labels['tue'] = 'Вт';
+$labels['wed'] = 'Ср';
+$labels['thu'] = 'Чт';
+$labels['fri'] = 'Пт';
+$labels['sat'] = 'Сб';
+
+// weekdays long
+$labels['sunday']    = 'Воскресенье';
+$labels['monday']    = 'Понедельник';
+$labels['tuesday']   = 'Вторник';
+$labels['wednesday'] = 'Среда';
+$labels['thursday']  = 'Четверг';
+$labels['friday']    = 'Пятница';
+$labels['saturday']  = 'Суббота';
+
+$labels['today'] = 'Сегодня';
+
+// toolbar buttons
+$labels['writenewmessage']  = 'Новое сообщение';
+$labels['replytomessage']   = 'Ответить';
+$labels['forwardmessage']   = 'Переслать';
+$labels['deletemessage']    = 'В корзину';
+$labels['printmessage']     = 'Печать';
+$labels['previousmessages'] = 'Показать предыдущее';
+$labels['nextmessages']     = 'Показать следующее';
+$labels['backtolist']       = 'К списку сообщений';
+$labels['viewsource']       = 'Показать источник';
+
+$labels['select'] = 'Выбрать';
+$labels['all'] = 'Все';
+$labels['none'] = 'Ничего';
+$labels['unread'] = 'Непрочитанные';
+
+// message compose
+$labels['compose']  = 'Написать';
+$labels['sendmessage']  = 'Отправить сейчас';
+$labels['addattachment']  = 'Вложение';
+
+$labels['attachments'] = 'Вложения';
+$labels['upload'] = 'Загрузить';
+$labels['close']  = 'Закрыть';
+
+$labels['low']     = 'Низкий';
+$labels['lowest']  = 'Самый низкий';
+$labels['normal']  = 'Нормальный';
+$labels['high']    = 'Высокий';
+$labels['highest'] = 'Самый высокий';
+
+$labels['showimages'] = 'Показать картинки';
+
+
+// address boook
+$labels['name']      = 'Псевдоним';
+$labels['firstname'] = 'Имя';
+$labels['surname']   = 'Фамилия';
+$labels['email']     = 'E-Mail';
+
+$labels['addcontact'] = 'Добавть контакт';
+$labels['editcontact'] = 'Редактировать контакт';
+
+$labels['edit']   = 'Правка';
+$labels['cancel'] = 'Отмена';
+$labels['save']   = 'Сохранить';
+$labels['delete'] = 'Отмена';
+
+$labels['newcontact']     = 'Создать карточку контакта';
+$labels['deletecontact']  = 'Удалить выбранные контакты';
+$labels['composeto']      = 'Новое сообщение контакту';
+$labels['contactsfromto'] = 'Контакты с $from по $to из $count';
+$labels['print']          = 'Печать';
+$labels['export']         = 'Экспорт';
+
+
+// settings
+$labels['settingsfor']  = 'Настройки для';
+
+$labels['preferences']  = 'Настройки';
+$labels['userpreferences']  = 'Настройки пользователя';
+$labels['editpreferences']  = 'Редактировать настройки пользователя';
+
+$labels['identities']  = 'Профили';
+$labels['manageidentities']  = 'Управление профилями';
+$labels['newidentity']  = 'новый профиль';
+
+$labels['newitem']  = 'Новый элемент';
+$labels['edititem']  = 'Редактировать элемент';
+
+$labels['setdefault']  = 'Сделать основным';
+$labels['language']  = 'Язык';
+$labels['timezone']  = 'Часовой пояс';
+$labels['pagesize']  = 'Строк на странице';
+
+
+$labels['folders']  = 'Папки';
+$labels['foldername']  = 'Имя папки';
+$labels['subscribed']  = 'Подписан';
+$labels['create']  = 'Создать';
+$labels['createfolder']  = 'Создать новую папку';
+$labels['deletefolder']  = 'Удалить папку';
+$labels['managefolders']  = 'Настройка папок';
+
+
+?>
\ No newline at end of file
diff --git a/program/localization/ru/messages.inc b/program/localization/ru/messages.inc
new file mode 100755
index 0000000..5dc0d98
--- /dev/null
+++ b/program/localization/ru/messages.inc
@@ -0,0 +1,62 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | language/ru/messages.inc                                              |
+ |                                                                       |
+ | Language file of the RoundCube Webmail client                         |
+ | Copyright (C) 2005, RoundCube Dev. - Switzerland                      |
+ | Licensed under the GNU GPL                                            |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Maxim Zenin <maxx@webmechanics.ru>, www.webmechanics.ru       |
+ +-----------------------------------------------------------------------+
+
+ $Id$
+
+*/
+
+$utf8_decoding = TRUE;
+
+$messages = array();
+
+$messages['loginfailed']  = 'Неудачная авторизация';
+
+$messages['cookiesdisabled'] = 'Ваш броузер не поддерживает cookies';
+
+$messages['sessionerror'] = 'Ваш сеанс истек';
+
+$messages['imaperror'] = 'неудачное соединение с IMAP сервером';
+
+$messages['nomessagesfound'] = 'Сообщения в этой папке не найдены';
+
+$messages['loggedout'] = 'Ваша сессия завершена. До свидания!';
+
+$messages['mailboxempty'] = 'почтовый ящик пуст';
+
+$messages['loadingdata'] = 'Загрузка данных...';
+
+$messages['messagesent'] = 'Сообщение отправлено';
+
+$messages['successfullysaved'] = 'Сохранено';
+
+$messages['addedsuccessfully'] = 'Контакт добавлен в адресную книгу';
+
+$messages['contactexists'] = 'Контакт с указанным адресом уже содержится в адресной книге';
+
+$messages['blockedimages'] = 'Для вашей безопасности изображения с удаленных сайтов заблокированы.';
+
+$messages['encryptedmessage'] = 'Это сообщение зашифровано и не может быть отображено. Извините.';
+
+$messages['nocontactsfound'] = 'Контактов не найдено';
+
+$messages['sendingfailed'] = 'Невоможно отправить сообщение';
+
+$messages['errorsaving'] = 'Невозможно сохранить';
+
+$messages['errormoving'] = 'Невозможно перенести сообщение';
+
+$messages['errordeleting'] = 'Невозможно удалить сообщение';
+
+
+?>
\ No newline at end of file

--
Gitblit v1.9.1