<?php
/**
 * Piwik - Open source web analytics
 *
 * @link http://piwik.org
 * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
 *
 * @category Piwik
 * @package DataFiles
 */

/**
 * Country code and continent database.
 *
 * The mapping of countries to continents is from MaxMind with the exception
 * of Central America.  MaxMind groups Central American countries with
 * North America.  Piwik previously grouped Central American countries with
 * South America.  Given this conflict and the fact that most of Central
 * America lies on its own continental plate (i.e., the Caribbean Plate), we
 * currently use a separate continent code (amc).
 */
if(!isset($GLOBALS['Piwik_CountryList']))
{
	// Primary reference: ISO 3166-1 alpha-2
	$GLOBALS['Piwik_CountryList'] = array(
		'ad' => 'eur',
		'ae' => 'asi',
		'af' => 'asi',
		'ag' => 'amc',
		'ai' => 'amc',
		'al' => 'eur',
		'am' => 'asi',
		'ao' => 'afr',
		'aq' => 'ant',
		'ar' => 'ams',
		'as' => 'oce',
		'at' => 'eur',
		'au' => 'oce',
		'aw' => 'amc',
		'ax' => 'eur',
		'az' => 'asi',
		'ba' => 'eur',
		'bb' => 'amc',
		'bd' => 'asi',
		'be' => 'eur',
		'bf' => 'afr',
		'bg' => 'eur',
		'bh' => 'asi',
		'bi' => 'afr',
		'bj' => 'afr',
		'bl' => 'amc',
		'bm' => 'amc',
		'bn' => 'asi',
		'bo' => 'ams',
		'bq' => 'amc',
		'br' => 'ams',
		'bs' => 'amc',
		'bt' => 'asi',
		'bv' => 'ant',
		'bw' => 'afr',
		'by' => 'eur',
		'bz' => 'amc',
		'ca' => 'amn',
		'cc' => 'asi',
		'cd' => 'afr',
		'cf' => 'afr',
		'cg' => 'afr',
		'ch' => 'eur',
		'ci' => 'afr',
		'ck' => 'oce',
		'cl' => 'ams',
		'cm' => 'afr',
		'cn' => 'asi',
		'co' => 'ams',
		'cr' => 'amc',
		'cu' => 'amc',
		'cv' => 'afr',
		'cw' => 'amc',
		'cx' => 'asi',
		'cy' => 'eur',
		'cz' => 'eur',
		'de' => 'eur',
		'dj' => 'afr',
		'dk' => 'eur',
		'dm' => 'amc',
		'do' => 'amc',
		'dz' => 'afr',
		'ec' => 'ams',
		'ee' => 'eur',
		'eg' => 'afr',
		'eh' => 'afr',
		'er' => 'afr',
		'es' => 'eur',
		'et' => 'afr',
		'fi' => 'eur',
		'fj' => 'oce',
		'fk' => 'ams',
		'fm' => 'oce',
		'fo' => 'eur',
		'fr' => 'eur',
		'ga' => 'afr',
		'gb' => 'eur',
		'gd' => 'amc',
		'ge' => 'asi',
		'gf' => 'ams',
		'gg' => 'eur',
		'gh' => 'afr',
		'gi' => 'eur',
		'gl' => 'amn',
		'gm' => 'afr',
		'gn' => 'afr',
		'gp' => 'amc',
		'gq' => 'afr',
		'gr' => 'eur',
		'gs' => 'ant',
		'gt' => 'amc',
		'gu' => 'oce',
		'gw' => 'afr',
		'gy' => 'ams',
		'hk' => 'asi',
		'hm' => 'ant',
		'hn' => 'amc',
		'hr' => 'eur',
		'ht' => 'amc',
		'hu' => 'eur',
		'id' => 'asi',
		'ie' => 'eur',
		'il' => 'asi',
		'im' => 'eur',
		'in' => 'asi',
		'io' => 'asi',
		'iq' => 'asi',
		'ir' => 'asi',
		'is' => 'eur',
		'it' => 'eur',
		'je' => 'eur',
		'jm' => 'amc',
		'jo' => 'asi',
		'jp' => 'asi',
		'ke' => 'afr',
		'kg' => 'asi',
		'kh' => 'asi',
		'ki' => 'oce',
		'km' => 'afr',
		'kn' => 'amc',
		'kp' => 'asi',
		'kr' => 'asi',
		'kw' => 'asi',
		'ky' => 'amc',
		'kz' => 'asi',
		'la' => 'asi',
		'lb' => 'asi',
		'lc' => 'amc',
		'li' => 'eur',
		'lk' => 'asi',
		'lr' => 'afr',
		'ls' => 'afr',
		'lt' => 'eur',
		'lu' => 'eur',
		'lv' => 'eur',
		'ly' => 'afr',
		'ma' => 'afr',
		'mc' => 'eur',
		'md' => 'eur',
		'me' => 'eur',
		'mf' => 'amc',
		'mg' => 'afr',
		'mh' => 'oce',
		'mk' => 'eur',
		'ml' => 'afr',
		'mm' => 'asi',
		'mn' => 'asi',
		'mo' => 'asi',
		'mp' => 'oce',
		'mq' => 'amc',
		'mr' => 'afr',
		'ms' => 'amc',
		'mt' => 'eur',
		'mu' => 'afr',
		'mv' => 'asi',
		'mw' => 'afr',
		'mx' => 'amn',
		'my' => 'asi',
		'mz' => 'afr',
		'na' => 'afr',
		'nc' => 'oce',
		'ne' => 'afr',
		'nf' => 'oce',
		'ng' => 'afr',
		'ni' => 'amc',
		'nl' => 'eur',
		'no' => 'eur',
		'np' => 'asi',
		'nr' => 'oce',
		'nu' => 'oce',
		'nz' => 'oce',
		'om' => 'asi',
		'pa' => 'amc',
		'pe' => 'ams',
		'pf' => 'oce',
		'pg' => 'oce',
		'ph' => 'asi',
		'pk' => 'asi',
		'pl' => 'eur',
		'pm' => 'amn',
		'pn' => 'oce',
		'pr' => 'amc',
		'ps' => 'asi',
		'pt' => 'eur',
		'pw' => 'oce',
		'py' => 'ams',
		'qa' => 'asi',
		're' => 'afr',
		'ro' => 'eur',
		'rs' => 'eur',
		'ru' => 'eur',
		'rw' => 'afr',
		'sa' => 'asi',
		'sb' => 'oce',
		'sc' => 'afr',
		'sd' => 'afr',
		'se' => 'eur',
		'sg' => 'asi',
		'sh' => 'afr',
		'si' => 'eur',
		'sj' => 'eur',
		'sk' => 'eur',
		'sl' => 'afr',
		'sm' => 'eur',
		'sn' => 'afr',
		'so' => 'afr',
		'sr' => 'ams',
		'ss' => 'afr',
		'st' => 'afr',
		'sv' => 'amc',
		'sx' => 'amc',
		'sy' => 'asi',
		'sz' => 'afr',
		'tc' => 'amc',
		'td' => 'afr',
		'tf' => 'ant',
		'tg' => 'afr',
		'th' => 'asi',
		'ti' => 'asi',
		'tj' => 'asi',
		'tk' => 'oce',
		'tl' => 'asi',
		'tm' => 'asi',
		'tn' => 'afr',
		'to' => 'oce',
		'tr' => 'eur',
		'tt' => 'amc',
		'tv' => 'oce',
		'tw' => 'asi',
		'tz' => 'afr',
		'ua' => 'eur',
		'ug' => 'afr',
		'um' => 'oce',
		'us' => 'amn',
		'uy' => 'ams',
		'uz' => 'asi',
		'va' => 'eur',
		'vc' => 'amc',
		've' => 'ams',
		'vg' => 'amc',
		'vi' => 'amc',
		'vn' => 'asi',
		'vu' => 'oce',
		'wf' => 'oce',
		'ws' => 'oce',
		'ye' => 'asi',
		'yt' => 'afr',
		'za' => 'afr',
		'zm' => 'afr',
		'zw' => 'afr',
	);

	// codes for internal use
	$GLOBALS['Piwik_CountryList_Extras'] = array(
		// unknown
		'xx' => 'unk',

		// exceptionally reserved
		'ac' => 'afr', // .ac TLD
		'cp' => 'amc',
		'dg' => 'asi',
		'ea' => 'afr',
		'eu' => 'eur', // .eu TLD
		'fx' => 'eur',
		'ic' => 'afr',
		'su' => 'eur', // .su TLD
		'ta' => 'afr',
		'uk' => 'eur', // .uk TLD

		// transitionally reserved
		'an' => 'amc', // former Netherlands Antilles
		'bu' => 'asi',
		'cs' => 'eur', // former Serbia and Montenegro
		'nt' => 'asi',
		'sf' => 'eur',
		'tp' => 'oce', // .tp TLD
		'yu' => 'eur', // .yu TLD
		'zr' => 'afr',

		// MaxMind GeoIP specific
		'a1' => 'unk',
		'a2' => 'unk',
		'ap' => 'asi',
		'o1' => 'unk',

		// Catalonia (Spain)
		'cat' => 'eur',
	);
}

if(!isset($GLOBALS['Piwik_ContinentList']))
{
	// Primary reference: ISO 3166-1 alpha-2
	$GLOBALS['Piwik_ContinentList'] = array(
		'unk', // unknown
		'amn', // North America
		'amc', // Central America
		'ams', // South America
		'eur', // Europe
		'afr', // Africa
		'asi', // Asia
		'oce', // Oceania
		'ant', // Antarctica
	);
}
