diff -ru roundcubemail-0.5/config/main.inc.php.dist roundcubemail-0.5-extended_addressbook/config/main.inc.php.dist
--- roundcubemail-0.5/config/main.inc.php.dist	2011-01-12 09:13:40.000000000 +0100
+++ roundcubemail-0.5-extended_addressbook/config/main.inc.php.dist	2011-01-13 18:52:36.000000000 +0100
@@ -471,6 +471,15 @@
   'email_field'   => 'mail',  // this field represents the contact's e-mail
   'surname_field' => 'sn',    // this field represents the contact's last name
   'firstname_field' => 'gn',  // this field represents the contact's first name
+  'work_number_field'   => 'telephoneNumber',	// contact work phone number
+  'home_number_field'   => 'homePhone',		// contact home phone number
+  'fax_number_field'    => 'facsimileTelephoneNumber',	// contact fax number
+  'mobile_number_field' => 'mobile',		// contact cell number
+  'title_field'         => 'title',		// contact company title
+  'company_field'       => 'o', 		// contact company name
+  'work_address_field'  => 'postalAddress', 	// contact work address
+  'home_address_field'  => 'homePostalAddress',	// contact home address
+  'note_field'          => 'description', 	// contact notes
   'sort'          => 'cn',    // The field to sort the listing by.
   'scope'         => 'sub',   // search mode: sub|base|list
   'filter'        => '',      // used for basic listing (if not empty) and will be &'d with search queries. example: status=act
Only in roundcubemail-0.5-extended_addressbook/config: main.inc.php.dist.orig
diff -ru roundcubemail-0.5/program/include/rcube_contacts.php roundcubemail-0.5-extended_addressbook/program/include/rcube_contacts.php
--- roundcubemail-0.5/program/include/rcube_contacts.php	2010-10-27 09:23:57.000000000 +0200
+++ roundcubemail-0.5-extended_addressbook/program/include/rcube_contacts.php	2011-01-13 18:52:36.000000000 +0100
@@ -44,7 +44,7 @@
     private $search_fields;
     private $search_string;
     private $cache;
-    private $table_cols = array('name', 'email', 'firstname', 'surname', 'vcard');
+    private $table_cols = array('name', 'email', 'firstname', 'surname', 'work_number', 'home_number', 'fax_number', 'mobile_number', 'title', 'company', 'work_address', 'home_address', 'note', 'vcard');
 
     // public properties
     var $primary_key = 'contact_id';
diff -ru roundcubemail-0.5/program/include/rcube_vcard.php roundcubemail-0.5-extended_addressbook/program/include/rcube_vcard.php
--- roundcubemail-0.5/program/include/rcube_vcard.php	2011-01-04 23:00:35.000000000 +0100
+++ roundcubemail-0.5-extended_addressbook/program/include/rcube_vcard.php	2011-01-13 18:52:36.000000000 +0100
@@ -85,6 +85,30 @@
     $this->nickname = $this->raw['NICKNAME'][0][0];
     $this->organization = $this->raw['ORG'][0][0];
     $this->business = ($this->raw['X-ABSHOWAS'][0][0] == 'COMPANY') || (join('', (array)$this->raw['N'][0]) == '' && !empty($this->organization));
+    $this->title = $this->raw['TITLE'][0];
+    $this->note = $this->raw['NOTE'][0];
+    foreach ($this->raw['LABEL'] as $entry) {
+        if ($entry['type'][0] == "HOME"){
+            $this->home_address = $entry[0];
+        }
+        elseif ($entry['type'][0] == "WORK") {
+            $this->work_address = $entry[0];
+        }
+    }
+    foreach ($this->raw['TEL'] as $entry) {
+        if ($entry['type'][0] == "HOME"){
+            $this->home_number = $entry[0];
+        }
+        elseif ($entry['type'][0] == "WORK") {
+            $this->work_number = $entry[0];
+        }
+        elseif ($entry['type'][0] == "CELL") {
+            $this->mobile_number = $entry[0];
+        }
+        elseif ($entry['type'][0] == "FAX") {
+            $this->fax_number = $entry[0];
+        }
+    }
     
     foreach ((array)$this->raw['EMAIL'] as $i => $raw_email)
       $this->email[$i] = is_array($raw_email) ? $raw_email[0] : $raw_email;
@@ -155,6 +179,47 @@
           $this->raw['EMAIL'][$index][0] = $value;
         }
         break;
+
+      case 'home_number':
+        $index=$this->get_type_index('TEL','HOME');
+        if (!is_array($this->raw['TEL'][$index])) {
+            $this->raw['TEL'][$index] =  array(0 => $value, 'type' => 'HOME');
+        }
+        else {
+            $this->raw['TEL'][0][0] = $value;
+        }
+        break;
+
+      case 'work_number':
+        $index=$this->get_type_index('TEL','WORK');
+        if (!is_array($this->raw['TEL'][$index])) {
+            $this->raw['TEL'][$index] = array(0 => $value, 'type' => 'WORK');
+        }
+        else {
+            $this->raw['TEL'][0][0] = $value;
+        }
+        break;
+
+      case 'mobile_number':
+        $index=$this->get_type_index('TEL','CELL');
+        if (!is_array($this->raw['TEL'][$index])) {
+            $this->raw['TEL'][$index] = array(0 => $value, 'type' => 'CELL');
+        }
+        else {
+            $this->raw['TEL'][0][0] = $value;
+        }
+        break;
+
+      case 'fax_number':
+        $index=$this->get_type_index('TEL','FAX');
+        if (!is_array($this->raw['TEL'][$index])) {
+            $this->raw['TEL'][$index] = array(0 => $value, 'type' => 'FAX');
+        }
+        else {
+            $this->raw['TEL'][0][0] = $value;
+        }
+        break;
+
     }
   }
 
Only in roundcubemail-0.5-extended_addressbook/program/include: rcube_vcard.php.orig
diff -ru roundcubemail-0.5/program/localization/en_US/labels.inc roundcubemail-0.5-extended_addressbook/program/localization/en_US/labels.inc
--- roundcubemail-0.5/program/localization/en_US/labels.inc	2010-12-22 19:45:15.000000000 +0100
+++ roundcubemail-0.5-extended_addressbook/program/localization/en_US/labels.inc	2011-01-13 18:52:36.000000000 +0100
@@ -247,11 +247,25 @@
 $labels['firstname'] = 'First name';
 $labels['surname']   = 'Last name';
 $labels['email']     = 'E-Mail';
+$labels['phone']         = 'Phone';
+$labels['work_number']   = 'Work Phone';
+$labels['home_number']   = 'Home Phone';
+$labels['fax_number']    = 'Fax Number';
+$labels['mobile_number'] = 'Mobile Phone';
+$labels['title']         = 'Job Title';
+$labels['company']       = 'Company';
+$labels['work_address']  = 'Work Address';
+$labels['home_address']  = 'Home Address';
+$labels['note']          = 'Note';
 
 $labels['addcontact'] = 'Add new contact';
 $labels['editcontact'] = 'Edit contact';
 $labels['contacts'] = 'Contacts';
 $labels['contactproperties'] = 'Contact properties';
+$labels['contactname'] = 'General';
+$labels['contactwork'] = 'Work';
+$labels['contacthome'] = 'Home';
+$labels['contactnote'] = 'Notes';
 
 $labels['edit']   = 'Edit';
 $labels['cancel'] = 'Cancel';
Only in roundcubemail-0.5-extended_addressbook/program/localization/en_US: labels.inc.orig
diff -ru roundcubemail-0.5/program/steps/addressbook/edit.inc roundcubemail-0.5-extended_addressbook/program/steps/addressbook/edit.inc
--- roundcubemail-0.5/program/steps/addressbook/edit.inc	2010-11-04 10:59:55.000000000 +0100
+++ roundcubemail-0.5-extended_addressbook/program/steps/addressbook/edit.inc	2011-01-13 18:52:36.000000000 +0100
@@ -57,9 +57,33 @@
                 'name' => array('type' => 'text', 'size' => $i_size),
                 'firstname' => array('type' => 'text', 'size' => $i_size),
                 'surname' => array('type' => 'text', 'size' => $i_size),
+		'mobile_number' => array('type' => 'text', 'size' => $i_size),
                 'email' => array('type' => 'text', 'size' => $i_size),
             ),
         ),
+        'home' => array(
+            'name'    => rcube_label('contacthome'),
+            'content' => array(
+                'home_number' => array('type' => 'text', 'size' => $i_size),
+                'home_address' => array('type' => 'textarea', 'size' => $i_size),
+            ),
+        ),
+        'work' => array(
+            'name'    => rcube_label('contactwork'),
+            'content' => array(
+                'work_number' => array('type' => 'text', 'size' => $i_size),
+                'fax_number' => array('type' => 'text', 'size' => $i_size),
+                'title' => array('type' => 'text', 'size' => $i_size),
+                'company' => array('type' => 'text', 'size' => $i_size),
+                'work_address' => array('type' => 'textarea', 'size' => $i_size),
+            ),
+        ),
+        'note' => array(
+            'name'    => rcube_label('contactnote'),
+            'content' => array(
+                'note' => array('type' => 'textarea', 'size' => $i_size),
+            ),
+        ),
     );
 
 
diff -ru roundcubemail-0.5/program/steps/addressbook/export.inc roundcubemail-0.5-extended_addressbook/program/steps/addressbook/export.inc
--- roundcubemail-0.5/program/steps/addressbook/export.inc	2010-09-25 15:03:53.000000000 +0200
+++ roundcubemail-0.5-extended_addressbook/program/steps/addressbook/export.inc	2011-01-13 18:52:36.000000000 +0100
@@ -35,6 +35,15 @@
   $vcard->set('firstname', $row['firstname']);
   $vcard->set('surname', $row['surname']);
   $vcard->set('email', $row['email']);
+  $vcard->set('title', $row['title']);
+  $vcard->set('company', $row['company']);
+  $vcard->set('work_number', $row['work_number']);
+  $vcard->set('home_number', $row['home_number']);
+  $vcard->set('mobile_number', $row['mobile_number']);
+  $vcard->set('fax_number', $row['fax_number']);
+  $vcard->set('work_address', $row['work_address']);
+  $vcard->set('home_address', $row['home_address']);
+  $vcard->set('note', $row['note']);
   
   echo $vcard->export();
 }
diff -ru roundcubemail-0.5/program/steps/addressbook/import.inc roundcubemail-0.5-extended_addressbook/program/steps/addressbook/import.inc
--- roundcubemail-0.5/program/steps/addressbook/import.inc	2010-10-04 15:20:41.000000000 +0200
+++ roundcubemail-0.5-extended_addressbook/program/steps/addressbook/import.inc	2011-01-13 18:52:36.000000000 +0100
@@ -155,6 +155,15 @@
         'firstname' => $vcard->firstname,
         'surname' => $vcard->surname,
         'email' => $email,
+        'work_number'   => $vcard->work_number,
+        'home_number'   => $vcard->home_number,
+        'mobile_number' => $vcard->mobile_number,
+        'fax_number'    => $vcard->fax_number,
+        'title'         => $vcard->title,
+        'company'       => $vcard->organization,
+        'work_address'  => $vcard->work_address,
+        'home_address'  => $vcard->home_address,
+        'note'          => $vcard->note,
         'vcard' => $vcard->export(),
       );
       
diff -ru roundcubemail-0.5/program/steps/addressbook/save.inc roundcubemail-0.5-extended_addressbook/program/steps/addressbook/save.inc
--- roundcubemail-0.5/program/steps/addressbook/save.inc	2010-11-02 10:27:03.000000000 +0100
+++ roundcubemail-0.5-extended_addressbook/program/steps/addressbook/save.inc	2011-01-13 18:52:36.000000000 +0100
@@ -38,7 +38,7 @@
 
 
 // setup some vars we need
-$a_save_cols = array('name', 'firstname', 'surname', 'email');
+$a_save_cols = array('name', 'firstname', 'surname', 'email', 'work_number', 'home_number', 'fax_number', 'mobile_number', 'title', 'company', 'work_address', 'home_address', 'note');
 $a_record = array();
 
 // read POST values into hash array
diff -ru roundcubemail-0.5/program/steps/addressbook/show.inc roundcubemail-0.5-extended_addressbook/program/steps/addressbook/show.inc
--- roundcubemail-0.5/program/steps/addressbook/show.inc	2010-11-04 10:59:55.000000000 +0100
+++ roundcubemail-0.5-extended_addressbook/program/steps/addressbook/show.inc	2011-01-13 18:52:36.000000000 +0100
@@ -44,14 +44,38 @@
 
     $form = array(
         'info' => array(
-            'name'    => rcube_label('contactproperties'),
+            'name'    => rcube_label('contactname'),
             'content' => array(
                 'name' => array('type' => 'text', 'size' => $i_size),
                 'firstname' => array('type' => 'text', 'size' => $i_size),
                 'surname' => array('type' => 'text', 'size' => $i_size),
+		'mobile_number' => array('type' => 'text', 'size' => $i_size),
                 'email' => array('type' => 'text', 'size' => $i_size),
             ),
         ),
+        'home' => array(
+            'name'    => rcube_label('contacthome'),
+            'content' => array(
+		'home_number' => array('type' => 'text', 'size' => $i_size),
+		'home_address' => array('type' => 'textarea', 'size' => $i_size),
+	    ),
+        ),
+        'work' => array(
+            'name'    => rcube_label('contactwork'),
+            'content' => array(
+		'work_number' => array('type' => 'text', 'size' => $i_size),
+		'fax_number' => array('type' => 'text', 'size' => $i_size),
+		'title' => array('type' => 'text', 'size' => $i_size),
+		'company' => array('type' => 'text', 'size' => $i_size),
+		'work_address' => array('type' => 'textarea', 'size' => $i_size),
+	    ),
+        ),
+        'note' => array(
+            'name'    => rcube_label('contactnote'),
+            'content' => array(
+		'note' => array('type' => 'textarea', 'size' => $i_size),
+	    ),
+        ),
         'groups' => array(
             'name'    => rcube_label('groups'),
             'content' => '',
diff -ru roundcubemail-0.5/SQL/mysql.initial.sql roundcubemail-0.5-extended_addressbook/SQL/mysql.initial.sql
--- roundcubemail-0.5/SQL/mysql.initial.sql	2010-11-02 10:27:03.000000000 +0100
+++ roundcubemail-0.5-extended_addressbook/SQL/mysql.initial.sql	2011-01-13 18:52:36.000000000 +0100
@@ -86,6 +86,15 @@
  `email` varchar(255) NOT NULL,
  `firstname` varchar(128) NOT NULL DEFAULT '',
  `surname` varchar(128) NOT NULL DEFAULT '',
+ `work_number` varchar(50) NOT NULL,
+ `home_number` varchar(50) NOT NULL,
+ `fax_number` varchar(50) NOT NULL,
+ `mobile_number` varchar(50) NOT NULL,
+ `title` varchar(50) NOT NULL,
+ `company` varchar(128) NOT NULL,
+ `work_address` varchar(255) NOT NULL,
+ `home_address` varchar(255) NOT NULL,
+ `note` text NULL, 
  `vcard` text NULL,
  `user_id` int(10) UNSIGNED NOT NULL DEFAULT '0',
  PRIMARY KEY(`contact_id`),
diff -ru roundcubemail-0.5/SQL/mysql.update.sql roundcubemail-0.5-extended_addressbook/SQL/mysql.update.sql
--- roundcubemail-0.5/SQL/mysql.update.sql	2010-11-02 10:27:03.000000000 +0100
+++ roundcubemail-0.5-extended_addressbook/SQL/mysql.update.sql	2011-01-13 18:56:35.000000000 +0100
@@ -131,3 +131,13 @@
 
 ALTER TABLE `contacts` MODIFY `email` varchar(255) NOT NULL;
 
+ALTER TABLE `contacts`
+  ADD `work_number` varchar(50) NOT NULL DEFAULT '',
+  ADD `home_number` varchar(50) NOT NULL DEFAULT '',
+  ADD `fax_number` varchar(50) NOT NULL DEFAULT '',
+  ADD `mobile_number` varchar(50) NOT NULL DEFAULT '',
+  ADD `title` varchar(50) NOT NULL DEFAULT '',
+  ADD `company` varchar(128) NOT NULL DEFAULT '',
+  ADD `work_address` varchar(255) NOT NULL DEFAULT '',
+  ADD `home_address` varchar(255) NOT NULL DEFAULT '',
+  ADD `note` text NOT NULL DEFAULT '';
diff -ru roundcubemail-0.5/SQL/postgres.initial.sql roundcubemail-0.5-extended_addressbook/SQL/postgres.initial.sql
--- roundcubemail-0.5/SQL/postgres.initial.sql	2010-11-02 10:27:03.000000000 +0100
+++ roundcubemail-0.5-extended_addressbook/SQL/postgres.initial.sql	2011-01-13 18:52:36.000000000 +0100
@@ -110,6 +110,15 @@
     email varchar(255) DEFAULT '' NOT NULL,
     firstname varchar(128) DEFAULT '' NOT NULL,
     surname varchar(128) DEFAULT '' NOT NULL,
+    work_number character varying(50) DEFAULT ''::character varying NOT NULL,
+    home_number character varying(50) DEFAULT ''::character varying NOT NULL,
+    fax_number character varying(50) DEFAULT ''::character varying NOT NULL,
+    mobile_number character varying(50) DEFAULT ''::character varying NOT NULL,
+    title character varying(50) DEFAULT ''::character varying NOT NULL,
+    company character varying(128) DEFAULT ''::character varying NOT NULL,
+    work_address character varying(255) DEFAULT ''::character varying NOT NULL,
+    home_address character varying(255) DEFAULT ''::character varying NOT NULL,
+    note text DEFAULT ''::character varying NOT NULL,
     vcard text
 );
 
diff -ru roundcubemail-0.5/SQL/postgres.update.sql roundcubemail-0.5-extended_addressbook/SQL/postgres.update.sql
--- roundcubemail-0.5/SQL/postgres.update.sql	2010-11-02 10:27:03.000000000 +0100
+++ roundcubemail-0.5-extended_addressbook/SQL/postgres.update.sql	2011-01-13 18:57:16.000000000 +0100
@@ -88,3 +88,12 @@
 ALTER TABLE users ADD UNIQUE (username, mail_host);
 ALTER TABLE contacts ALTER email TYPE varchar(255);
 
+ALTER TABLE contacts ADD work_number character varying(50) DEFAULT ''::character varying NOT NULL;
+ALTER TABLE contacts ADD home_number character varying(50) DEFAULT ''::character varying NOT NULL;
+ALTER TABLE contacts ADD fax_number character varying(50) DEFAULT ''::character varying NOT NULL;
+ALTER TABLE contacts ADD mobile_number character varying(50) DEFAULT ''::character varying NOT NULL;
+ALTER TABLE contacts ADD title character varying(50) DEFAULT ''::character varying NOT NULL;
+ALTER TABLE contacts ADD company character varying(128) DEFAULT ''::character varying NOT NULL;
+ALTER TABLE contacts ADD work_address character varying(255) DEFAULT ''::character varying NOT NULL;
+ALTER TABLE contacts ADD home_address character varying(255) DEFAULT ''::character varying NOT NULL;
+ALTER TABLE contacts ADD note text DEFAULT ''::character varying NOT NULL;
diff -ru roundcubemail-0.5/SQL/sqlite.initial.sql roundcubemail-0.5-extended_addressbook/SQL/sqlite.initial.sql
--- roundcubemail-0.5/SQL/sqlite.initial.sql	2010-11-02 10:27:03.000000000 +0100
+++ roundcubemail-0.5-extended_addressbook/SQL/sqlite.initial.sql	2011-01-13 18:52:36.000000000 +0100
@@ -31,6 +31,15 @@
   email varchar(255) NOT NULL default '',
   firstname varchar(128) NOT NULL default '',
   surname varchar(128) NOT NULL default '',
+  work_number varchar(50) NOT NULL default '',
+  home_number varchar(50) NOT NULL default '',
+  mobile_number varchar(50) NOT NULL default '',
+  fax_number varchar(50) NOT NULL default '',
+  title varchar(50) NOT NULL default '',
+  company varchar(128) NOT NULL default '',
+  work_address varchar(255) NOT NULL default '',
+  home_address varchar(255) NOT NULL default '',
+  note text NOT NULL default '',
   vcard text NOT NULL default ''
 );
 
diff -ru roundcubemail-0.5/SQL/sqlite.update.sql roundcubemail-0.5-extended_addressbook/SQL/sqlite.update.sql
--- roundcubemail-0.5/SQL/sqlite.update.sql	2010-11-02 10:27:03.000000000 +0100
+++ roundcubemail-0.5-extended_addressbook/SQL/sqlite.update.sql	2011-01-13 19:01:26.000000000 +0100
@@ -171,6 +171,15 @@
     email varchar(255) NOT NULL default '',
     firstname varchar(128) NOT NULL default '',
     surname varchar(128) NOT NULL default '',
+    work_number varchar(50) NOT NULL default '',
+    home_number varchar(50) NOT NULL default '',
+    fax_number varchar(50) NOT NULL default '',
+    mobile_number varchar(50) NOT NULL default '',
+    title varchar(50) NOT NULL default '',
+    company varchar(128) NOT NULL default '',
+    work_address varchar(255) NOT NULL default '',
+    home_address varchar(255) NOT NULL default '',
+    note text NOT NULL default '',
     vcard text NOT NULL default ''
 );
 
