diff --git a/addressfield.module b/addressfield.module
index 7e6c0e1..2fc7293 100644
--- a/addressfield.module
+++ b/addressfield.module
@@ -589,6 +589,7 @@ function addressfield_default_mapping() {
     'BR' => 'AddressFieldForm_br',
     'GB' => 'AddressFieldForm_gb',
     'US' => 'AddressFieldForm_us',
+    'IT' => 'AddressFieldForm_it'
     // TODO: complete the mapping.
   );
 }
diff --git a/includes/addressfield_form_it.inc b/includes/addressfield_form_it.inc
new file mode 100644
index 0000000..292bc75
--- /dev/null
+++ b/includes/addressfield_form_it.inc
@@ -0,0 +1,158 @@
+<?php
+
+/**
+ * Address handler for Italy.
+ */
+class AddressFieldForm_it implements AddressFieldForm {
+  public function form($address, $field, $instance, $langcode, $items, $delta, $element) {
+    $required = $delta == 0 && $instance['required'];
+
+    $form['thoroughfare'] = array(
+      '#title' => t('Street'),
+      '#type' => 'textfield',
+      '#size' => 30,
+      '#required' => $required,
+      '#default_value' => $address['thoroughfare'],
+    );
+    $form['locality'] = array(
+      '#title' => t('City'),
+      '#type' => 'textfield',
+      '#size' => 30,
+      '#required' => $required,
+      '#default_value' => $address['locality'],
+    );
+    $form['administrative_area'] = array(
+      '#title' => t('Province'),
+      '#type' => 'select',
+      '#options' => $this->italian_provinces(),
+      '#default_value' => $address['administrative_area'],
+      '#required' => $required,
+    );
+    $form['postal_code'] = array(
+      '#title' => t('Post Code'),
+      '#type' => 'textfield',
+      '#size' => 10,
+      '#required' => $required,
+      '#default_value' => $address['postal_code'],
+    );
+    return $form;
+  }
+  
+  
+  private function italian_provinces(){
+    
+    return (array(
+      'AG' =>	'Agrigento',
+      'AL' =>	'Alessandria',
+      'AN' =>	'Ancona',
+      'AO' =>	'Valle d\'Aosta/Vallee d\'Aoste',
+      'AP' =>	'Ascoli Piceno',
+      'AQ' =>	'L\'Aquila',
+      'AR' =>	'Arezzo',
+      'AT' =>	'Asti',
+      'AV' =>	'Avellino',
+      'BA' =>	'Bari',
+      'BG' =>	'Bergamo',
+      'BI' =>	'Biella',
+      'BL' =>	'Belluno',
+      'BN' =>	'Benevento',
+      'BO' =>	'Bologna',
+      'BR' =>	'Brindisi',
+      'BS' =>	'Brescia',
+      'BT' =>	'Barletta-Andria-Trani',
+      'BZ' =>	'Bolzano/Bozen',
+      'CA' =>	'Cagliari',
+      'CB' =>	'Campobasso',
+      'CE' =>	'Caserta',
+      'CH' =>	'Chieti',
+      'CI' =>	'Carbonia-Iglesias',
+      'CL' =>	'Caltanissetta',
+      'CN' =>	'Cuneo',
+      'CO' =>	'Como',
+      'CR' =>	'Cremona',
+      'CS' =>	'Cosenza',
+      'CT' =>	'Catania',
+      'CZ' =>	'Catanzaro',
+      'EN' =>	'Enna',
+      'FC' =>	'Forli-Cesena',
+      'FE' =>	'Ferrara',
+      'FG' =>	'Foggia',
+      'FI' =>	'Firenze',
+      'FM' =>	'Fermo',
+      'FR' =>	'Frosinone',
+      'GE' =>	'Genova',
+      'GO' =>	'Gorizia',
+      'GR' =>	'Grosseto',
+      'IM' =>	'Imperia',
+      'IS' =>	'Isernia',
+      'KR' =>	'Crotone',
+      'LC' =>	'Lecco',
+      'LE' =>	'Lecce',
+      'LI' =>	'Livorno',
+      'LO' =>	'Lodi',
+      'LT' =>	'Latina',
+      'LU' =>	'Lucca',
+      'MB' =>	'Monza e della Brianza',
+      'MC' =>	'Macerata',
+      'ME' =>	'Messina',
+      'MI' =>	'Milano',
+      'MN' =>	'Mantova',
+      'MO' =>	'Modena',
+      'MS' =>	'Massa-Carrara',
+      'MT' =>	'Matera',
+      'NA' =>	'Napoli',
+      'NO' =>	'Novara',
+      'NU' =>	'Nuoro',
+      'OG' =>	'Ogliastra',
+      'OR' =>	'Oristano',
+      'OT' =>	'Olbia-Tempio',
+      'PA' =>	'Palermo',
+      'PC' =>	'Piacenza',
+      'PD' =>	'Padova',
+      'PE' =>	'Pescara',
+      'PG' =>	'Perugia',
+      'PI' =>	'Pisa',
+      'PN' =>	'Pordenone',
+      'PO' =>	'Prato',
+      'PR' =>	'Parma',
+      'PT' =>	'Pistoia',
+      'PU' =>	'Pesaro e Urbino',
+      'PV' =>	'Pavia',
+      'PZ' =>	'Potenza',
+      'RA' =>	'Ravenna',
+      'RC' =>	'Reggio di Calabria',
+      'RE' =>	'Reggio nell\'Emilia',
+      'RG' =>	'Ragusa',
+      'RI' =>	'Rieti',
+      'RM' =>	'Roma',
+      'RN' =>	'Rimini',
+      'RO' =>	'Rovigo',
+      'SA' =>	'Salerno',
+      'SI' =>	'Siena',
+      'SO' =>	'Sondrio',
+      'SP' =>	'La Spezia',
+      'SR' =>	'Siracusa',
+      'SS' =>	'Sassari',
+      'SV' =>	'Savona',
+      'TA' =>	'Taranto',
+      'TE' =>	'Teramo',
+      'TN' =>	'Trento',
+      'TO' =>	'Torino',
+      'TP' =>	'Trapani',
+      'TR' =>	'Terni',
+      'TS' =>	'Trieste',
+      'TV' =>	'Treviso',
+      'UD' =>	'Udine',
+      'VA' =>	'Varese',
+      'VB' =>	'Verbano-Cusio-Ossola',
+      'VC' =>	'Vercelli',
+      'VE' =>	'Venezia',
+      'VI' =>	'Vicenza',
+      'VR' =>	'Verona',
+      'VS' =>	'Medio Campidano',
+      'VT' =>	'Viterbo',
+      'VV' =>	'Vibo Valentia',      
+      )
+    );
+  }
+}

