new.jade 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633
  1. extends ../layout
  2. block scripts
  3. script(src="https://js.recurly.com/v3/recurly.js")
  4. script(type='text/javascript').
  5. window.recomendedCurrency = '#{currency}'
  6. window.countryCode = '#{countryCode}'
  7. window.plan_code = '#{plan_code}'
  8. window.recurlyApiKey = "!{settings.apis.recurly.publicKey}"
  9. window.couponCode = "#{couponCode}"
  10. block content
  11. - locals.supressDefaultJs = true
  12. script(data-main=jsPath+'main.js', src=jsPath+'libs/require.js', baseurl=jsPath)
  13. .content.content-alt
  14. .container(ng-controller="NewSubscriptionController" ng-cloak)
  15. .row.card-group
  16. .col-md-5.col-md-push-4
  17. .card.card-highlighted
  18. .page-header
  19. .row
  20. .col-xs-9
  21. h2 {{planName}}
  22. .col-xs-3
  23. div.dropdown.changePlanButton.pull-right(ng-cloak, dropdown)
  24. a.btn.btn-default.dropdown-toggle(
  25. href="#",
  26. data-toggle="dropdown",
  27. dropdown-toggle
  28. )
  29. | {{currencyCode}} ({{plans[currencyCode]['symbol']}})
  30. span.caret
  31. ul.dropdown-menu(role="menu")
  32. li(ng-repeat="(currency, value) in plans")
  33. a(
  34. ng-click="changeCurrency(currency)",
  35. ) {{currency}} ({{value['symbol']}})
  36. hr.thin
  37. .row
  38. .col-md-12.text-center
  39. div(ng-if="trialLength")
  40. span !{translate("first_few_days_free", {trialLen:'{{trialLength}}'})}
  41. span(ng-if="discountMonths && discountRate")   - {{discountMonths}} #{translate("month")}s {{discountRate}}% Off
  42. div(ng-if="price")
  43. strong {{price.currency.symbol}}{{price.next.total}}
  44. span(ng-if="monthlyBilling") #{translate("every")} #{translate("month")}
  45. span(ng-if="!monthlyBilling") #{translate("every")} #{translate("year")}
  46. div(ng-if="normalPrice")
  47. span.small Normally {{price.currency.symbol}}{{normalPrice}}
  48. .row
  49. div(sixpack-switch="subscription-form")
  50. .col-md-12(sixpack-default)
  51. form(ng-show="planName",novalidate)
  52. .row
  53. .col-md-12
  54. .form-group
  55. .row
  56. .col-md-6
  57. label.radio-inline
  58. input.paymentTypeOption(type="radio",value="credit_card", ng-model="paymentMethod")
  59. i.fa.fa-cc-mastercard.fa-3x
  60. span  
  61. i.fa.fa-cc-visa.fa-3x
  62. .col-md-6
  63. label.radio-inline
  64. input.paymentTypeOption(type="radio", value="paypal", ng-model="paymentMethod")
  65. i.fa.fa-cc-paypal.fa-3x
  66. .alert.alert-warning.small(ng-show="genericError")
  67. strong {{genericError}}
  68. span(ng-hide="paymentMethod == 'paypal'")
  69. .row
  70. .col-md-12
  71. .form-group
  72. div.alert.alert-warning.small(ng-hide="validation.correctCvv") #{translate("invalid")} CVV
  73. div.alert.alert-warning.small(ng-hide="validation.correctCardNumber") #{translate("invalid")} #{translate("credit_card_number")}
  74. .row
  75. .col-md-6
  76. .form-group(ng-class="validation.number == false || validation.errorFields.number ? 'has-error' : ''")
  77. input.form-control(ng-model='data.number', ng-blur="validateCardNumber()", placeholder="#{translate('credit_card_number')}")
  78. .col-md-3
  79. .form-group(ng-class="validation.correctCvv == false || validation.errorFields.cvv ? 'has-error' : ''")
  80. input.form-control(ng-model='data.cvv', ng-blur="validateCvv()", placeholder="CVV")
  81. .row
  82. .col-md-12
  83. div.alert.alert-warning.small(ng-hide="validation.correctExpiry") #{translate("invalid")} #{translate("expiry")}
  84. .row
  85. .col-md-3
  86. .form-group(ng-class="validation.correctExpiry == false || validation.errorFields.month ? 'has-error' : ''")
  87. select.form-control(data-recurly='month', ng-change="validateExpiry()", ng-model='data.month')
  88. option(value="", disabled, selected) Month
  89. option(value="01") 01
  90. option(value="02") 02
  91. option(value="03") 03
  92. option(value="04") 04
  93. option(value="05") 05
  94. option(value="06") 06
  95. option(value="07") 07
  96. option(value="08") 08
  97. option(value="09") 09
  98. option(value="10") 10
  99. option(value="11") 11
  100. option(value="12") 12
  101. .col-md-4
  102. .form-group(ng-class="validation.correctExpiry == false || validation.errorFields.year ? 'has-error' : ''")
  103. select.form-control(data-recurly='year', ng-change="validateExpiry()", ng-model='data.year')
  104. option(value="", disabled, selected) Year
  105. option(value="2016") 2016
  106. option(value="2017") 2017
  107. option(value="2018") 2018
  108. option(value="2019") 2019
  109. option(value="2020") 2020
  110. option(value="2021") 2021
  111. option(value="2022") 2022
  112. option(value="2023") 2023
  113. option(value="2024") 2024
  114. option(value="2025") 2025
  115. option(value="2026") 2026
  116. .row
  117. .col-md-6
  118. .form-group(ng-class="validation.errorFields.first_name ? 'has-error' : ''")
  119. input.form-control(type='text', value='', maxlength='255', , onkeyup='', data-recurly="first_name", ng-model="data.first_name", required, placeholder="#{translate('first_name')}")
  120. .col-md-6
  121. .form-group(ng-class="validation.errorFields.last_name ? 'has-error' : ''")
  122. input.form-control(type='text', value='', maxlength='255', onkeyup='', data-recurly="last_name", ng-model="data.last_name", required, placeholder="#{translate('last_name')}")
  123. hr
  124. .row
  125. .col-md-12
  126. .form-group(ng-class="validation.errorFields.address1 ? 'has-error' : ''")
  127. label #{translate("billing_address")}
  128. input.form-control(type='text', value='', maxlength='255', onkeyup='', ng-model="data.address1", placeholder="#{translate('address')}")
  129. .form-group(ng-class="validation.errorFields.address2 ? 'has-error' : ''")
  130. input.form-control(type='text', value='', maxlength='255', onkeyup='', ng-model="data.address2", placeholder="#{translate('address')}")
  131. .form-group(ng-class="validation.errorFields.state ? 'has-error' : ''")
  132. input.form-control(type='text', value='', maxlength='255', onkeyup='', ng-model="data.state", placeholder="#{translate('state')}")
  133. .row
  134. .col-md-7
  135. .form-group(ng-class="validation.errorFields.city ? 'has-error' : ''")
  136. input.form-control(type='text', value='', maxlength='255', onkeyup='', data-recurly="city", ng-model="data.city", placeholder="#{translate('city')}")
  137. .col-md-5(ng-class="validation.errorFields.postal_code ? 'has-error' : ''")
  138. input.form-control(type='text', value='', maxlength='255', onkeyup='', data-recurly="postal_code", ng-model="data.postal_code", placeholder="#{translate('zip_post_code')}")
  139. .row
  140. .col-md-7
  141. .form-group(ng-class="validation.errorFields.country ? 'has-error' : ''")
  142. select.form-control(data-recurly="country", ng-model="data.country", ng-change="updateCountry()", required)
  143. mixin countries_options()
  144. .row
  145. .col-md-8
  146. if (showCouponField)
  147. .form-group
  148. input.form-control(type='text', ng-blur="applyCoupon()", ng-model="data.coupon", placeholder="#{translate('coupon')}")
  149. .row
  150. .col-md-8
  151. if (showVatField)
  152. .form-group
  153. input.form-control(type='text', ng-blur="applyVatNumber()", ng-model="data.vat_number", placeholder="#{translate('vat_number')}")
  154. .row
  155. .col-xs-7
  156. .form-group
  157. button.btn.btn-success(ng-click="submit()", ng-disabled="processing", sixpack-convert="payment-left-menu-bottom") #{translate("upgrade_now")}
  158. .col-xs-3.pricingBreakdown
  159. div(ng-if="price.next.subtotal != price.next.total") Subtotal
  160. div(ng-if="price.next.tax!='0.00'") Tax
  161. div
  162. strong Total
  163. .col-xs-2
  164. div(ng-if="price.next.subtotal != price.next.total").pull-right {{price.currency.symbol}}{{price.next.subtotal}}
  165. div(ng-if="price.next.tax!='0.00'").pull-right {{price.currency.symbol}}{{price.next.tax}}
  166. div.pull-right
  167. strong {{price.currency.symbol}}{{price.next.total}}
  168. .col-md-12(sixpack-when="simple")
  169. form(
  170. ng-if="planName"
  171. name="simpleCCForm"
  172. novalidate
  173. )
  174. div.payment-method-toggle
  175. a.payment-method-toggle-switch(
  176. href
  177. ng-click="setPaymentMethod('credit_card');"
  178. ng-class="paymentMethod === 'credit_card' ? 'payment-method-toggle-switch-selected' : ''"
  179. )
  180. i.fa.fa-cc-mastercard.fa-2x
  181. span  
  182. i.fa.fa-cc-visa.fa-2x
  183. span  
  184. i.fa.fa-cc-amex.fa-2x
  185. a.payment-method-toggle-switch(
  186. href
  187. ng-click="setPaymentMethod('paypal');"
  188. ng-class="paymentMethod === 'paypal' ? 'payment-method-toggle-switch-selected' : ''"
  189. )
  190. i.fa.fa-cc-paypal.fa-2x
  191. .alert.alert-warning.small(ng-show="genericError")
  192. strong {{genericError}}
  193. div(ng-if="paymentMethod === 'credit_card'")
  194. .row
  195. .col-xs-6
  196. .form-group(ng-class="validation.errorFields.first_name || inputHasError(simpleCCForm.firstName) ? 'has-error' : ''")
  197. label(for="first-name") #{translate('first_name')}
  198. input#first-name.form-control(
  199. type="text"
  200. maxlength='255'
  201. data-recurly="first_name"
  202. name="firstName"
  203. ng-model="data.first_name"
  204. required
  205. )
  206. span.input-feedback-message {{ simpleCCForm.firstName.$error.required ? 'This field is required' : '' }}
  207. .col-xs-6
  208. .form-group(for="last-name",ng-class="validation.errorFields.last_name || inputHasError(simpleCCForm.lastName)? 'has-error' : ''")
  209. label(for="last-name") #{translate('last_name')}
  210. input#last-name.form-control(
  211. type="text"
  212. maxlength='255'
  213. data-recurly="last_name"
  214. name="lastName"
  215. ng-model="data.last_name"
  216. required
  217. )
  218. span.input-feedback-message {{ simpleCCForm.lastName.$error.required ? 'This field is required' : '' }}
  219. .form-group(ng-class="validation.correctCardNumber == false || validation.errorFields.number || inputHasError(simpleCCForm.ccNumber) ? 'has-error' : ''")
  220. label(for="card-no") #{translate("credit_card_number")}
  221. input#card-no.form-control(
  222. type="text"
  223. ng-model="data.number"
  224. name="ccNumber"
  225. required
  226. ng-change="validateCardNumber()"
  227. cc-format-card-number
  228. )
  229. span.input-feedback-message {{ simpleCCForm.ccNumber.$error.required ? 'This field is required' : 'Please re-check the card number' }}
  230. .row
  231. .col-xs-6
  232. .form-group.has-feedback(ng-class="validation.correctExpiry == false || validation.errorFields.expiry || inputHasError(simpleCCForm.expiry) ? 'has-error' : ''")
  233. label #{translate("expiry")}
  234. input.form-control(
  235. type="text"
  236. ng-model="data.mmYY"
  237. name="expiry"
  238. required
  239. placeholder="MM / YY"
  240. ng-change="updateExpiry(); validateExpiry()"
  241. cc-format-expiry
  242. )
  243. span.input-feedback-message {{ simpleCCForm.expiry.$error.required ? 'This field is required' : 'Please re-check the expiry date' }}
  244. .col-xs-6
  245. .form-group.has-feedback(ng-class="validation.correctCvv == false || validation.errorFields.cvv || inputHasError(simpleCCForm.cvv) ? 'has-error' : ''")
  246. label #{translate("security_code")}
  247. input.form-control(
  248. type="text"
  249. ng-model="data.cvv"
  250. ng-change="validateCvv()"
  251. name="cvv"
  252. required
  253. cc-format-sec-code
  254. )
  255. .form-control-feedback
  256. a.form-helper(
  257. href
  258. tabindex="-1"
  259. tooltip-template="'cvv-tooltip-tpl.html'"
  260. tooltip-trigger="mouseenter"
  261. tooltip-append-to-body="true"
  262. ) ?
  263. span.input-feedback-message {{ simpleCCForm.cvv.$error.required ? 'This field is required' : 'Please re-check the security code' }}
  264. .form-group(ng-class="validation.errorFields.country || inputHasError(simpleCCForm.country) ? 'has-error' : ''")
  265. label(for="country") #{translate('country')}
  266. select#country.form-control(
  267. data-recurly="country"
  268. ng-model="data.country"
  269. name="country"
  270. ng-change="updateCountry()"
  271. required
  272. )
  273. mixin countries_options()
  274. span.input-feedback-message {{ simpleCCForm.country.$error.required ? 'This field is required' : '' }}
  275. div
  276. if (showVatField)
  277. .form-group
  278. label(for="vat-no") #{translate('vat_number')}
  279. input#vat-no.form-control(
  280. type="text"
  281. ng-blur="applyVatNumber()"
  282. ng-model="data.vat_number"
  283. )
  284. if (showCouponField)
  285. .form-group
  286. label(for="coupon-code") #{translate('coupon_code')}
  287. input#coupon-code.form-control(
  288. type="text"
  289. ng-blur="applyCoupon()"
  290. ng-model="data.coupon"
  291. )
  292. p(ng-if="paymentMethod === 'paypal'") #{translate("paypal_upgrade")}
  293. div.price-breakdown(ng-if="price.next.tax !== '0.00'")
  294. hr.thin
  295. span Total:
  296. strong {{price.currency.symbol}}{{price.next.total}}
  297. span ({{price.currency.symbol}}{{price.next.subtotal}} + {{price.currency.symbol}}{{price.next.tax}} tax)
  298. span(ng-if="monthlyBilling") #{translate("every")} #{translate("month")}
  299. span(ng-if="!monthlyBilling") #{translate("every")} #{translate("year")}
  300. hr.thin
  301. div.payment-submit
  302. button.btn.btn-success.btn-block(
  303. ng-click="submit()"
  304. ng-disabled="processing || !isFormValid(simpleCCForm);"
  305. sixpack-convert="payment-left-menu-bottom"
  306. ) {{ paymentMethod === 'credit_card' ? '#{translate("upgrade_cc_btn")}' : '#{translate("upgrade_paypal_btn")}' }}
  307. .col-md-3.col-md-pull-4
  308. if showStudentPlan == 'true'
  309. a.btn-primary.btn.plansPageStudentLink(
  310. href,
  311. ng-click="switchToStudent()"
  312. ) #{translate("half_price_student")}
  313. .card.card-first
  314. .paymentPageFeatures
  315. h3 #{translate("unlimited_projects")}
  316. p #{translate("create_unlimited_projects")}
  317. h3
  318. if plan.features.collaborators == -1
  319. - var collaboratorCount = 'Unlimited'
  320. else
  321. - var collaboratorCount = plan.features.collaborators
  322. | #{translate("collabs_per_proj", {collabcount:collaboratorCount})}
  323. p #{translate("work_on_single_version")}. #{translate("view_collab_edits")} in real time.
  324. h3 #{translate("full_doc_history")}
  325. p #{translate("see_what_has_been")}
  326. span.added #{translate("added")}
  327. | #{translate("and")}
  328. span.removed #{translate("removed")}.
  329. | #{translate("restore_to_any_older_version")}.
  330. h3 #{translate("sync_to_dropbox")}
  331. p
  332. | #{translate("acces_work_from_anywhere")}.
  333. | #{translate("work_offline_and_sync_with_dropbox")}.
  334. hr
  335. p.small.text-center We're confident that you'll love ShareLaTeX, but if not you can cancel anytime. We'll give you your money back, no questions asked, if you let us know within 30 days.
  336. hr
  337. span                  
  338. a(href="https://www.positivessl.com" style="font-family: arial; font-size: 10px; color: #212121; text-decoration: none;")
  339. img(src="https://www.positivessl.com/images-new/PositiveSSL_tl_trans.png" alt="SSL Certificate" title="SSL Certificate" border="0")
  340. div(style="font-family: arial;font-weight:bold;font-size:15px;color:#86BEE0;")
  341. a(href="https://www.positivessl.com" style="color:#86BEE0; text-decoration: none;")
  342. script(type="text/javascript").
  343. ga('send', 'event', 'pageview', 'payment_form', "#{plan_code}")
  344. script(
  345. type="text/ng-template"
  346. id="cvv-tooltip-tpl.html"
  347. )
  348. p For #[strong Visa, MasterCard and Discover], the #[strong 3 digits] on the #[strong back] of your card.
  349. p For #[strong American Express], the #[strong 4 digits] on the #[strong front] of your card.
  350. mixin countries_options()
  351. option(value='', disabled, selected) #{translate("country")}
  352. option(value='-') --------------
  353. option(value='AF') Afghanistan
  354. option(value='AL') Albania
  355. option(value='DZ') Algeria
  356. option(value='AS') American Samoa
  357. option(value='AD') Andorra
  358. option(value='AO') Angola
  359. option(value='AI') Anguilla
  360. option(value='AQ') Antarctica
  361. option(value='AG') Antigua and Barbuda
  362. option(value='AR') Argentina
  363. option(value='AM') Armenia
  364. option(value='AW') Aruba
  365. option(value='AC') Ascension Island
  366. option(value='AU') Australia
  367. option(value='AT') Austria
  368. option(value='AZ') Azerbaijan
  369. option(value='BS') Bahamas
  370. option(value='BH') Bahrain
  371. option(value='BD') Bangladesh
  372. option(value='BB') Barbados
  373. option(value='BE') Belgium
  374. option(value='BZ') Belize
  375. option(value='BJ') Benin
  376. option(value='BM') Bermuda
  377. option(value='BT') Bhutan
  378. option(value='BO') Bolivia
  379. option(value='BA') Bosnia and Herzegovina
  380. option(value='BW') Botswana
  381. option(value='BV') Bouvet Island
  382. option(value='BR') Brazil
  383. option(value='BQ') British Antarctic Territory
  384. option(value='IO') British Indian Ocean Territory
  385. option(value='VG') British Virgin Islands
  386. option(value='BN') Brunei
  387. option(value='BG') Bulgaria
  388. option(value='BF') Burkina Faso
  389. option(value='BI') Burundi
  390. option(value='KH') Cambodia
  391. option(value='CM') Cameroon
  392. option(value='CA') Canada
  393. option(value='IC') Canary Islands
  394. option(value='CT') Canton and Enderbury Islands
  395. option(value='CV') Cape Verde
  396. option(value='KY') Cayman Islands
  397. option(value='CF') Central African Republic
  398. option(value='EA') Ceuta and Melilla
  399. option(value='TD') Chad
  400. option(value='CL') Chile
  401. option(value='CN') China
  402. option(value='CX') Christmas Island
  403. option(value='CP') Clipperton Island
  404. option(value='CC') Cocos [Keeling] Islands
  405. option(value='CO') Colombia
  406. option(value='KM') Comoros
  407. option(value='CD') Congo [DRC]
  408. option(value='CK') Cook Islands
  409. option(value='CR') Costa Rica
  410. option(value='HR') Croatia
  411. option(value='CU') Cuba
  412. option(value='CY') Cyprus
  413. option(value='CZ') Czech Republic
  414. option(value='DK') Denmark
  415. option(value='DG') Diego Garcia
  416. option(value='DJ') Djibouti
  417. option(value='DM') Dominica
  418. option(value='DO') Dominican Republic
  419. option(value='NQ') Dronning Maud Land
  420. option(value='TL') East Timor
  421. option(value='EC') Ecuador
  422. option(value='EG') Egypt
  423. option(value='SV') El Salvador
  424. option(value='EE') Estonia
  425. option(value='ET') Ethiopia
  426. option(value='FK') Falkland Islands [Islas Malvinas]
  427. option(value='FO') Faroe Islands
  428. option(value='FJ') Fiji
  429. option(value='FI') Finland
  430. option(value='FR') France
  431. option(value='GF') French Guiana
  432. option(value='PF') French Polynesia
  433. option(value='TF') French Southern Territories
  434. option(value='FQ') French Southern and Antarctic Territories
  435. option(value='GA') Gabon
  436. option(value='GM') Gambia
  437. option(value='GE') Georgia
  438. option(value='DE') Germany
  439. option(value='GH') Ghana
  440. option(value='GI') Gibraltar
  441. option(value='GR') Greece
  442. option(value='GL') Greenland
  443. option(value='GD') Grenada
  444. option(value='GP') Guadeloupe
  445. option(value='GU') Guam
  446. option(value='GT') Guatemala
  447. option(value='GG') Guernsey
  448. option(value='GW') Guinea-Bissau
  449. option(value='GY') Guyana
  450. option(value='HT') Haiti
  451. option(value='HM') Heard Island and McDonald Islands
  452. option(value='HN') Honduras
  453. option(value='HK') Hong Kong
  454. option(value='HU') Hungary
  455. option(value='IS') Iceland
  456. option(value='IN') India
  457. option(value='ID') Indonesia
  458. option(value='IE') Ireland
  459. option(value='IM') Isle of Man
  460. option(value='IL') Israel
  461. option(value='IT') Italy
  462. option(value='JM') Jamaica
  463. option(value='JP') Japan
  464. option(value='JE') Jersey
  465. option(value='JT') Johnston Island
  466. option(value='JO') Jordan
  467. option(value='KZ') Kazakhstan
  468. option(value='KE') Kenya
  469. option(value='KI') Kiribati
  470. option(value='KW') Kuwait
  471. option(value='KG') Kyrgyzstan
  472. option(value='LA') Laos
  473. option(value='LV') Latvia
  474. option(value='LS') Lesotho
  475. option(value='LY') Libya
  476. option(value='LI') Liechtenstein
  477. option(value='LT') Lithuania
  478. option(value='LU') Luxembourg
  479. option(value='MO') Macau
  480. option(value='MK') Macedonia [FYROM]
  481. option(value='MG') Madagascar
  482. option(value='MW') Malawi
  483. option(value='MY') Malaysia
  484. option(value='MV') Maldives
  485. option(value='ML') Mali
  486. option(value='MT') Malta
  487. option(value='MH') Marshall Islands
  488. option(value='MQ') Martinique
  489. option(value='MR') Mauritania
  490. option(value='MU') Mauritius
  491. option(value='YT') Mayotte
  492. option(value='FX') Metropolitan France
  493. option(value='MX') Mexico
  494. option(value='FM') Micronesia
  495. option(value='MI') Midway Islands
  496. option(value='MD') Moldova
  497. option(value='MC') Monaco
  498. option(value='MN') Mongolia
  499. option(value='ME') Montenegro
  500. option(value='MS') Montserrat
  501. option(value='MA') Morocco
  502. option(value='MZ') Mozambique
  503. option(value='NA') Namibia
  504. option(value='NR') Nauru
  505. option(value='NP') Nepal
  506. option(value='NL') Netherlands
  507. option(value='AN') Netherlands Antilles
  508. option(value='NT') Neutral Zone
  509. option(value='NC') New Caledonia
  510. option(value='NZ') New Zealand
  511. option(value='NI') Nicaragua
  512. option(value='NE') Niger
  513. option(value='NG') Nigeria
  514. option(value='NU') Niue
  515. option(value='NF') Norfolk Island
  516. option(value='VD') North Vietnam
  517. option(value='MP') Northern Mariana Islands
  518. option(value='NO') Norway
  519. option(value='OM') Oman
  520. option(value='QO') Outlying Oceania
  521. option(value='PC') Pacific Islands Trust Territory
  522. option(value='PK') Pakistan
  523. option(value='PW') Palau
  524. option(value='PS') Palestinian Territories
  525. option(value='PA') Panama
  526. option(value='PZ') Panama Canal Zone
  527. option(value='PY') Paraguay
  528. option(value='YD') People's Democratic Republic of Yemen
  529. option(value='PE') Peru
  530. option(value='PH') Philippines
  531. option(value='PN') Pitcairn Islands
  532. option(value='PL') Poland
  533. option(value='PT') Portugal
  534. option(value='PR') Puerto Rico
  535. option(value='QA') Qatar
  536. option(value='RO') Romania
  537. option(value='RU') Russia
  538. option(value='RW') Rwanda
  539. option(value='RE') Réunion
  540. option(value='BL') Saint Barthélemy
  541. option(value='SH') Saint Helena
  542. option(value='KN') Saint Kitts and Nevis
  543. option(value='LC') Saint Lucia
  544. option(value='MF') Saint Martin
  545. option(value='PM') Saint Pierre and Miquelon
  546. option(value='VC') Saint Vincent and the Grenadines
  547. option(value='WS') Samoa
  548. option(value='SM') San Marino
  549. option(value='SA') Saudi Arabia
  550. option(value='SN') Senegal
  551. option(value='RS') Serbia
  552. option(value='CS') Serbia and Montenegro
  553. option(value='SC') Seychelles
  554. option(value='SL') Sierra Leone
  555. option(value='SG') Singapore
  556. option(value='SK') Slovakia
  557. option(value='SI') Slovenia
  558. option(value='SB') Solomon Islands
  559. option(value='ZA') South Africa
  560. option(value='GS') South Georgia and the South Sandwich Islands
  561. option(value='KR') South Korea
  562. option(value='ES') Spain
  563. option(value='LK') Sri Lanka
  564. option(value='SR') Suriname
  565. option(value='SJ') Svalbard and Jan Mayen
  566. option(value='SZ') Swaziland
  567. option(value='SE') Sweden
  568. option(value='CH') Switzerland
  569. option(value='ST') São Tomé and Príncipe
  570. option(value='TW') Taiwan
  571. option(value='TJ') Tajikistan
  572. option(value='TZ') Tanzania
  573. option(value='TH') Thailand
  574. option(value='TG') Togo
  575. option(value='TK') Tokelau
  576. option(value='TO') Tonga
  577. option(value='TT') Trinidad and Tobago
  578. option(value='TA') Tristan da Cunha
  579. option(value='TN') Tunisia
  580. option(value='TR') Turkey
  581. option(value='TM') Turkmenistan
  582. option(value='TC') Turks and Caicos Islands
  583. option(value='TV') Tuvalu
  584. option(value='UM') U.S. Minor Outlying Islands
  585. option(value='PU') U.S. Miscellaneous Pacific Islands
  586. option(value='VI') U.S. Virgin Islands
  587. option(value='UG') Uganda
  588. option(value='UA') Ukraine
  589. option(value='AE') United Arab Emirates
  590. option(value='GB') United Kingdom
  591. option(value='US') United States
  592. option(value='UY') Uruguay
  593. option(value='UZ') Uzbekistan
  594. option(value='VU') Vanuatu
  595. option(value='VA') Vatican City
  596. option(value='VE') Venezuela
  597. option(value='VN') Vietnam
  598. option(value='WK') Wake Island
  599. option(value='WF') Wallis and Futuna
  600. option(value='EH') Western Sahara
  601. option(value='YE') Yemen
  602. option(value='ZM') Zambia
  603. option(value='AX') Åland Islands