Address Form – Best Practice

In my application, I have a web-form for creating a "New Company" object. Each Company has a name and an Address field.

The address field should (but not have to) be composed from these fields:
- Country
- State/Region
- ZipCode
- City
- Street
- Street number
- Any additional information may be included (entrance, floor, etc..)

My question what is the best practice for Address forms? Should each field be on his own line? or maybe some fields can share a line? Do I need to use "State" in my form, since many countries don't have states? Should I use drop-downs for some values or textboxs are a good solution? Should I add form validation? Any additional information, thoughts will be much appreciation.