Ext.onReady(function(){
   Ext.QuickTips.init();

   // turn on validation errors beside the field globally
   Ext.form.Field.prototype.msgTarget = 'side';
   
   var store = new Ext.data.SimpleStore({
      fields: ['name', 'value'],
      data: [['Training 1', 'Training 1'], ['Training 2', 'Training 2'], ['Training Pack', 'Training Pack']]
   });
   var countryStore = new Ext.data.SimpleStore({
      fields: ['name', 'value'],
      data: [["AFGHANISTAN", "AF"], ["ÅLAND ISLANDS", "AX"], ["ALBANIA", "AL"], ["ALGERIA", "DZ"], ["AMERICAN SAMOA", "AS"], ["ANDORRA", "AD"], ["ANGOLA", "AO"], ["ANGUILLA", "AI"], ["ANTARCTICA", "AQ"], ["ANTIGUA AND BARBUDA", "AG"], ["ARGENTINA", "AR"], ["ARMENIA", "AM"], ["ARUBA", "AW"], ["AUSTRALIA", "AU"], ["AUSTRIA", "AT"], ["AZERBAIJAN", "AZ"], ["BAHAMAS", "BS"], ["BAHRAIN", "BH"], ["BANGLADESH", "BD"], ["BARBADOS", "BB"], ["BELARUS", "BY"], ["BELGIUM", "BE"], ["BELIZE", "BZ"], ["BENIN", "BJ"], ["BERMUDA", "BM"], ["BHUTAN", "BT"], ["BOLIVIA", "BO"], ["BOSNIA AND HERZEGOVINA", "BA"], ["BOTSWANA", "BW"], ["BOUVET ISLAND", "BV"], ["BRAZIL", "BR"], ["BRITISH INDIAN OCEAN TERRITORY", "IO"], ["BRUNEI DARUSSALAM", "BN"], ["BULGARIA", "BG"], ["BURKINA FASO", "BF"], ["BURUNDI", "BI"], ["CAMBODIA", "KH"], ["CAMEROON", "CM"], ["CANADA", "CA"], ["CAPE VERDE", "CV"], ["CAYMAN ISLANDS", "KY"], ["CENTRAL AFRICAN REPUBLIC", "CF"], ["CHAD", "TD"], ["CHILE", "CL"], ["CHINA", "CN"], ["CHRISTMAS ISLAND", "CX"], ["COCOS (KEELING) ISLANDS", "CC"], ["COLOMBIA", "CO"], ["COMOROS", "KM"], ["CONGO", "CG"], ["CONGO, THE DEMOCRATIC REPUBLIC OF THE", "CD"], ["COOK ISLANDS", "CK"], ["COSTA RICA", "CR"], ["CÔTE D'IVOIRE", "CI"], ["CROATIA", "HR"], ["CUBA", "CU"], ["CYPRUS", "CY"], ["CZECH REPUBLIC", "CZ"], ["DENMARK", "DK"], ["DJIBOUTI", "DJ"], ["DOMINICA", "DM"], ["DOMINICAN REPUBLIC", "DO"], ["ECUADOR", "EC"], ["EGYPT", "EG"], ["EL SALVADOR", "SV"], ["EQUATORIAL GUINEA", "GQ"], ["ERITREA", "ER"], ["ESTONIA", "EE"], ["ETHIOPIA", "ET"], ["FALKLAND ISLANDS (MALVINAS)", "FK"], ["FAROE ISLANDS", "FO"], ["FIJI", "FJ"], ["FINLAND", "FI"], ["FRANCE", "FR"], ["FRENCH GUIANA", "GF"], ["FRENCH POLYNESIA", "PF"], ["FRENCH SOUTHERN TERRITORIES", "TF"], ["GABON", "GA"], ["GAMBIA", "GM"], ["GEORGIA", "GE"], ["GERMANY", "DE"], ["GHANA", "GH"], ["GIBRALTAR", "GI"], ["GREECE", "GR"], ["GREENLAND", "GL"], ["GRENADA", "GD"], ["GUADELOUPE", "GP"], ["GUAM", "GU"], ["GUATEMALA", "GT"], ["GUERNSEY", "GG"], ["GUINEA", "GN"], ["GUINEA-BISSAU", "GW"], ["GUYANA", "GY"], ["HAITI", "HT"], ["HEARD ISLAND AND MCDONALD ISLANDS", "HM"], ["HOLY SEE (VATICAN CITY STATE)", "VA"], ["HONDURAS", "HN"], ["HONG KONG", "HK"], ["HUNGARY", "HU"], ["ICELAND", "IS"], ["INDIA", "IN"], ["INDONESIA", "ID"], ["IRAN, ISLAMIC REPUBLIC OF", "IR"], ["IRAQ", "IQ"], ["IRELAND", "IE"], ["ISLE OF MAN", "IM"], ["ISRAEL", "IL"], ["ITALY", "IT"], ["JAMAICA", "JM"], ["JAPAN", "JP"], ["JERSEY", "JE"], ["JORDAN", "JO"], ["KAZAKHSTAN", "KZ"], ["KENYA", "KE"], ["KIRIBATI", "KI"], ["KOREA, DEMOCRATIC PEOPLE'S REPUBLIC OF", "KP"], ["KOREA, REPUBLIC OF", "KR"], ["KUWAIT", "KW"], ["KYRGYZSTAN", "KG"], ["LAO PEOPLE'S DEMOCRATIC REPUBLIC", "LA"], ["LATVIA", "LV"], ["LEBANON", "LB"], ["LESOTHO", "LS"], ["LIBERIA", "LR"], ["LIBYAN ARAB JAMAHIRIYA", "LY"], ["LIECHTENSTEIN", "LI"], ["LITHUANIA", "LT"], ["LUXEMBOURG", "LU"], ["MACAO", "MO"], ["MACEDONIA, THE FORMER YUGOSLAV REPUBLIC OF", "MK"], ["MADAGASCAR", "MG"], ["MALAWI", "MW"], ["MALAYSIA", "MY"], ["MALDIVES", "MV"], ["MALI", "ML"], ["MALTA", "MT"], ["MARSHALL ISLANDS", "MH"], ["MARTINIQUE", "MQ"], ["MAURITANIA", "MR"], ["MAURITIUS", "MU"], ["MAYOTTE", "YT"], ["MEXICO", "MX"], ["MICRONESIA, FEDERATED STATES OF", "FM"], ["MOLDOVA, REPUBLIC OF", "MD"], ["MONACO", "MC"], ["MONGOLIA", "MN"], ["MONTENEGRO", "ME"], ["MONTSERRAT", "MS"], ["MOROCCO", "MA"], ["MOZAMBIQUE", "MZ"], ["MYANMAR", "MM"], ["NAMIBIA", "NA"], ["NAURU", "NR"], ["NEPAL", "NP"], ["NETHERLANDS", "NL"], ["NETHERLANDS ANTILLES", "AN"], ["NEW CALEDONIA", "NC"], ["NEW ZEALAND", "NZ"], ["NICARAGUA", "NI"], ["NIGER", "NE"], ["NIGERIA", "NG"], ["NIUE", "NU"], ["NORFOLK ISLAND", "NF"], ["NORTHERN MARIANA ISLANDS", "MP"], ["NORWAY", "NO"], ["OMAN", "OM"], ["PAKISTAN", "PK"], ["PALAU", "PW"], ["PALESTINIAN TERRITORY, OCCUPIED", "PS"], ["PANAMA", "PA"], ["PAPUA NEW GUINEA", "PG"], ["PARAGUAY", "PY"], ["PERU", "PE"], ["PHILIPPINES", "PH"], ["PITCAIRN", "PN"], ["POLAND", "PL"], ["PORTUGAL", "PT"], ["PUERTO RICO", "PR"], ["QATAR", "QA"], ["REUNION", "RE"], ["ROMANIA", "RO"], ["RUSSIAN FEDERATION", "RU"], ["RWANDA", "RW"], ["SAINT BARTHÉLEMY", "BL"], ["SAINT HELENA", "SH"], ["SAINT KITTS AND NEVIS", "KN"], ["SAINT LUCIA", "LC"], ["SAINT MARTIN", "MF"], ["SAINT PIERRE AND MIQUELON", "PM"], ["SAINT VINCENT AND THE GRENADINES", "VC"], ["SAMOA", "WS"], ["SAN MARINO", "SM"], ["SAO TOME AND PRINCIPE", "ST"], ["SAUDI ARABIA", "SA"], ["SENEGAL", "SN"], ["SERBIA", "RS"], ["SEYCHELLES", "SC"], ["SIERRA LEONE", "SL"], ["SINGAPORE", "SG"], ["SLOVAKIA", "SK"], ["SLOVENIA", "SI"], ["SOLOMON ISLANDS", "SB"], ["SOMALIA", "SO"], ["SOUTH AFRICA", "ZA"], ["SOUTH GEORGIA AND THE SOUTH SANDWICH ISLANDS", "GS"], ["SPAIN", "ES"], ["SRI LANKA", "LK"], ["SUDAN", "SD"], ["SURINAME", "SR"], ["SVALBARD AND JAN MAYEN", "SJ"], ["SWAZILAND", "SZ"], ["SWEDEN", "SE"], ["SWITZERLAND", "CH"], ["SYRIAN ARAB REPUBLIC", "SY"], ["TAIWAN, PROVINCE OF CHINA", "TW"], ["TAJIKISTAN", "TJ"], ["TANZANIA, UNITED REPUBLIC OF", "TZ"], ["THAILAND", "TH"], ["TIMOR-LESTE", "TL"], ["TOGO", "TG"], ["TOKELAU", "TK"], ["TONGA", "TO"], ["TRINIDAD AND TOBAGO", "TT"], ["TUNISIA", "TN"], ["TURKEY", "TR"], ["TURKMENISTAN", "TM"], ["TURKS AND CAICOS ISLANDS", "TC"], ["TUVALU", "TV"], ["UGANDA", "UG"], ["UKRAINE", "UA"], ["UNITED ARAB EMIRATES", "AE"], ["UNITED KINGDOM", "GB"], ["UNITED STATES", "US"], ["UNITED STATES MINOR OUTLYING ISLANDS", "UM"], ["URUGUAY", "UY"], ["UZBEKISTAN", "UZ"], ["VANUATU", "VU"], ["VENEZUELA", "VE"], ["VIET NAM", "VN"], ["VIRGIN ISLANDS, BRITISH", "VG"], ["VIRGIN ISLANDS, U.S.", "VI"], ["WALLIS AND FUTUNA", "WF"], ["WESTERN SAHARA", "EH"], ["YEMEN", "YE"], ["ZAMBIA", "ZM"], ["ZIMBABWE", "ZW"]]
   });

   var simple = new Ext.FormPanel({
      id: 'contact',
      renderTo: 'contact-form',
      labelWidth: 100,
      frame:true,
      border:false,
      width: 400,

      items: [{name: 'formPostName',value: 'training',xtype: 'hidden'}, {name: 'formPostDescription',value: 'Prise de contact - formation',xtype: 'hidden'},
         {xtype:'fieldset',
            title: 'Your training',
            collapsible: false,
            autoHeight:true,
            defaults: {width: 210},
            defaultType: 'textfield',
            width: 354,
            items :[{fieldLabel: 'Training type',name: 'training',xtype: 'combo',editable:false,store: store,displayField: 'name',typeAhead: true,triggerAction: 'all',mode: 'local',emptyText:'Select a training...',allowBlank:false,itemCls: 'required'},
               {fieldLabel: 'Number of trainees',xtype: 'numberfield',name: 'nbTrainees',allowBlank:false,maxLength:2,itemCls: 'required',allowDecimals: false,allowNegative: false},
               {fieldLabel: 'Estimated start date',name: 'estimatedStartDate',xtype:'datefield',allowBlank:false,itemCls: 'required'},
               {fieldLabel: 'Comments',name: 'comments',xtype: 'textarea',maxLength:1000}
            ]
         },
         {xtype:'fieldset',
            title: 'Your organization',
            collapsible: false,
            autoHeight:true,
            defaults: {width: 210},
            defaultType: 'textfield',
            width: 354,
            items :[{fieldLabel: 'First name',name: 'firstName',allowBlank:false,maxLength:100,itemCls: 'required'},
               {fieldLabel: 'Last name',name: 'lastName',allowBlank:false,maxLength:100,itemCls: 'required'},
               {fieldLabel: 'Function',name: 'function',maxLength:100},
               {fieldLabel: 'E-mail',name: 'email',vtype:'email',allowBlank:false,maxLength:100,itemCls: 'required'}
            ]
         },
         {xtype:'fieldset',
            title: 'Your organization',
            collapsible: false,
            autoHeight:true,
            defaults: {width: 210},
            defaultType: 'textfield',
            width: 354,
            items :[{fieldLabel: 'Organization',name: 'organisation',allowBlank:false,maxLength:100,itemCls: 'required'},
               {fieldLabel: 'Web site',name: 'webSite',maxLength:100},
               {fieldLabel: 'Address',name: 'address1',allowBlank:false,maxLength:100,itemCls: 'required'},
               {fieldLabel: 'Address (cont.)',name: 'address2',maxLength:100},
               {fieldLabel: 'Zip code',name: 'zipCode',allowBlank:false,maxLength:100,itemCls: 'required'},
               {fieldLabel: 'City',name: 'city',allowBlank:false,maxLength:100,itemCls: 'required'},
               {fieldLabel: 'State',name: 'organizationAddressState',maxLength: 100},
               {fieldLabel: 'Country',name: 'country',xtype: 'combo',editable:false,store: countryStore, displayField: 'name',typeAhead: true,triggerAction: 'all',mode: 'local',emptyText:'Select a country ...',allowBlank:false,maxLength:100,itemCls: 'required'}
            ]
         },
         {xtype:'panel',
            width: 354,
            buttonAlign:'center',
            buttons:[{
               text: 'Submit',
               handler: function(){
                  if(simple.getForm().isValid()){
                     simple.getForm().submit({url:'/formPosts', method: 'post', headers:{accept:'application/json'},
                  success: function(form, action){
                           obj = Ext.util.JSON.decode(action.response.responseText);
                           Ext.MessageBox.show({
                              title: 'Status',
                              msg: 'Form correctly received.',
                              buttons: Ext.MessageBox.OK,
                              icon: Ext.MessageBox.INFO,
                              modal: false
                           });
                        },
                        failure: function(form, action){
                           obj = Ext.util.JSON.decode(action.response.responseText);
                           Ext.MessageBox.show({
                              title: 'Status',
                              msg: 'An error occurred during the treatment.',
                              buttons: Ext.MessageBox.OK,
                              icon: Ext.MessageBox.ERROR,
                              modal: false
                           });
                        }
                     });
                  }
               }
            }]
         }
      ]
   });
});
