import {
    observable, action
} from 'mobx';

export class CountryStore {

    defaultCountryList = [
        { label: 'United States', value: 3, code: 1 },
        { label: 'Australia', value: 18, code: 61 },
        { label: 'United Kingdom', value: 7, code: 44 },
        { label: 'Germany', value: 6, code: 49 },
        { label: 'Italy', value: 9, code: 39 },
        { label: 'Spain', value: 26, code: 34 },
        { label: 'Canada', value: 5, code: 1 },
        { label: 'China', value: 1, code: 86 },
        { label: 'Singapore', value: 27, code: 65 },
        { label: 'Holand', value: 39, code: 31 },
        { label: 'France', value: 8, code: 33 },
        { label: 'Malaysia', value: 19, code: 60 },
        { label: 'Switzerland', value: 25, code: 41 },
        { label: 'Brazil', value: 38, code: 55 },
        { label: 'Argentina', value: 467, code: 54 },
        { label: 'Poland', value: 611, code: 48 },
        { label: 'Belgium', value: 477, code: 32 },
        { label: 'Indonesia', value: 549, code: 62 },
        { label: 'New Zealand', value: 20, code: 64 },
        { label: 'India', value: 22, code: 91 }
    ];

    remoteCountryList = [{ 'value': 1, 'label': 'China', 'code': '86' }, { 'value': 2, 'label': 'Japan', 'code': '81' }, { 'value': 3, 'label': 'United States', 'code': '1' }, { 'value': 5, 'label': 'Canada', 'code': '1' }, { 'value': 6, 'label': 'Germany', 'code': '49' }, { 'value': 7, 'label': 'United Kingdom', 'code': '44' }, { 'value': 8, 'label': 'France', 'code': '33' }, { 'value': 9, 'label': 'Italy', 'code': '39' }, { 'value': 18, 'label': 'Australia', 'code': '61' }, { 'value': 19, 'label': 'Malaysia', 'code': '60' }, { 'value': 20, 'label': 'New Zealan', 'code': '64' }, { 'value': 21, 'label': 'Israe', 'code': '972' }, { 'value': 22, 'label': 'India', 'code': '91' }, { 'value': 23, 'label': 'Philippine', 'code': '63' }, { 'value': 24, 'label': 'Russian Federation\r\n', 'code': '7' }, { 'value': 25, 'label': 'Switzerlan', 'code': '41' }, { 'value': 26, 'label': 'Spain', 'code': '34' }, { 'value': 27, 'label': 'Singapore', 'code': '65' }, { 'value': 28, 'label': 'Thailand', 'code': '66' }, { 'value': 29, 'label': 'MN', 'code': '976' }, { 'value': 30, 'label': 'VN', 'code': '84' }, { 'value': 31, 'label': 'NP', 'code': '977' }, { 'value': 32, 'label': 'Mexican', 'code': '52' }, { 'value': 35, 'label': 'LW', 'code': '856' }, { 'value': 36, 'label': 'Iceland', 'code': '354' }, { 'value': 37, 'label': 'Norway', 'code': '47' }, { 'value': 38, 'label': 'Brazil', 'code': '55' }, { 'value': 39, 'label': 'Holand', 'code': '31' }, { 'value': 458, 'label': 'Afghanistan', 'code': '93' }, { 'value': 459, 'label': 'Albania', 'code': '355' }, { 'value': 460, 'label': 'Algeria', 'code': '213' }, { 'value': 461, 'label': 'American Samoa', 'code': '1684' }, { 'value': 462, 'label': 'Andorra', 'code': '376' }, { 'value': 463, 'label': 'Angola', 'code': '244' }, { 'value': 464, 'label': 'Anguilla', 'code': '1264' }, { 'value': 466, 'label': 'Antigua And Barbuda', 'code': '1268' }, { 'value': 467, 'label': 'Argentina', 'code': '54' }, { 'value': 468, 'label': 'Armenia', 'code': '374' }, { 'value': 469, 'label': 'Aruba', 'code': '297' }, { 'value': 470, 'label': 'Austria', 'code': '43' }, { 'value': 471, 'label': 'Azerbaijan', 'code': '994' }, { 'value': 472, 'label': 'Bahamas', 'code': '1242' }, { 'value': 473, 'label': 'Bahrain', 'code': '973' }, { 'value': 474, 'label': 'Bangladesh', 'code': '880' }, { 'value': 475, 'label': 'Barbados', 'code': '1246' }, { 'value': 476, 'label': 'Belarus', 'code': '375' }, { 'value': 477, 'label': 'Belgium', 'code': '32' }, { 'value': 478, 'label': 'Belize', 'code': '501' }, { 'value': 479, 'label': 'Benin', 'code': '229' }, { 'value': 480, 'label': 'Bermuda', 'code': '1441' }, { 'value': 481, 'label': 'Bhutan', 'code': '975' }, { 'value': 482, 'label': 'Bolivia', 'code': '591' }, { 'value': 483, 'label': 'Botswana', 'code': '267' }, { 'value': 486, 'label': 'Brunei Darussalam', 'code': '673' }, { 'value': 487, 'label': 'Bulgaria', 'code': '359' }, { 'value': 488, 'label': 'Burkina Faso', 'code': '226' }, { 'value': 489, 'label': 'Burundi', 'code': '257' }, { 'value': 490, 'label': 'Cambodia', 'code': '855' }, { 'value': 491, 'label': 'Cameroon', 'code': '237' }, { 'value': 493, 'label': 'Cape Verde', 'code': '238' }, { 'value': 494, 'label': 'Cayman Islands', 'code': '1345' }, { 'value': 495, 'label': 'Central African Republic', 'code': '236' }, { 'value': 496, 'label': 'Chad', 'code': '235' }, { 'value': 497, 'label': 'Chile', 'code': '56' }, { 'value': 500, 'label': 'Colombia', 'code': '57' }, { 'value': 501, 'label': 'Comoros', 'code': '269' }, { 'value': 502, 'label': 'Congo', 'code': '242' }, { 'value': 504, 'label': 'Cook Islands', 'code': '682' }, { 'value': 505, 'label': 'Costa Rica', 'code': '506' }, { 'value': 506, 'label': 'Croatia', 'code': '385' }, { 'value': 507, 'label': 'Cuba', 'code': '53' }, { 'value': 508, 'label': 'Cyprus', 'code': '357' }, { 'value': 509, 'label': 'Czech Republic', 'code': '420' }, { 'value': 511, 'label': 'Denmark', 'code': '45' }, { 'value': 512, 'label': 'Djibouti', 'code': '253' }, { 'value': 513, 'label': 'Dominica', 'code': '1767' }, { 'value': 514, 'label': 'Dominican Republic', 'code': '1809' }, { 'value': 515, 'label': 'East Timor', 'code': '670' }, { 'value': 516, 'label': 'Ecuador', 'code': '593' }, { 'value': 517, 'label': 'Egypt', 'code': '20' }, { 'value': 518, 'label': 'El Salvador', 'code': '503' }, { 'value': 520, 'label': 'Equatorial Guinea', 'code': '240' }, { 'value': 521, 'label': 'Eritrea', 'code': '291' }, { 'value': 522, 'label': 'Estonia', 'code': '372' }, { 'value': 523, 'label': 'Ethiopia', 'code': '251' }, { 'value': 525, 'label': 'Faroe Islands', 'code': '298' }, { 'value': 526, 'label': 'Fiji', 'code': '679' }, { 'value': 527, 'label': 'Finland', 'code': '358' }, { 'value': 528, 'label': 'French Guiana', 'code': '594' }, { 'value': 529, 'label': 'French Polynesia', 'code': '689' }, { 'value': 530, 'label': 'Gabon', 'code': '241' }, { 'value': 531, 'label': 'Gambia', 'code': '220' }, { 'value': 532, 'label': 'Georgia', 'code': '995' }, { 'value': 533, 'label': 'Ghana', 'code': '233' }, { 'value': 534, 'label': 'Gibraltar', 'code': '350' }, { 'value': 536, 'label': 'Greece', 'code': '30' }, { 'value': 537, 'label': 'Greenland', 'code': '299' }, { 'value': 538, 'label': 'Grenada', 'code': '1473' }, { 'value': 539, 'label': 'Guadeloupe', 'code': '590' }, { 'value': 540, 'label': 'Guam', 'code': '1671' }, { 'value': 542, 'label': 'Guinea', 'code': '224' }, { 'value': 543, 'label': 'Guinea-Bissau', 'code': '245' }, { 'value': 544, 'label': 'Guyana', 'code': '592' }, { 'value': 545, 'label': 'Haiti', 'code': '509' }, { 'value': 546, 'label': 'Honduras', 'code': '504' }, { 'value': 547, 'label': 'Hong Kong', 'code': '852' }, { 'value': 548, 'label': 'Hungary', 'code': '36' }, { 'value': 549, 'label': 'Indonesia', 'code': '62' }, { 'value': 550, 'label': 'Iran', 'code': '98' }, { 'value': 551, 'label': 'Iraq', 'code': '964' }, { 'value': 552, 'label': 'Ireland', 'code': '353' }, { 'value': 554, 'label': 'Jamaica', 'code': '1876' }, { 'value': 557, 'label': 'Jordan', 'code': '962' }, { 'value': 558, 'label': 'Kazakhstan', 'code': '7' }, { 'value': 559, 'label': 'Kenya', 'code': '254' }, { 'value': 560, 'label': 'Kiribati', 'code': '686' }, { 'value': 563, 'label': 'Kuwait', 'code': '965' }, { 'value': 564, 'label': 'Kyrgyzstan', 'code': '996' }, { 'value': 565, 'label': 'Latvia', 'code': '371' }, { 'value': 566, 'label': 'Lebanon', 'code': '961' }, { 'value': 567, 'label': 'Lesotho', 'code': '266' }, { 'value': 568, 'label': 'Liberia', 'code': '231' }, { 'value': 569, 'label': 'Libyan Arab Jamahiriya', 'code': '218' }, { 'value': 570, 'label': 'Liechtenstein', 'code': '423' }, { 'value': 571, 'label': 'Lithuania', 'code': '370' }, { 'value': 572, 'label': 'Luxembourg', 'code': '352' }, { 'value': 573, 'label': 'Macau', 'code': '853' }, { 'value': 574, 'label': 'Macedonia', 'code': '389' }, { 'value': 575, 'label': 'Madagascar', 'code': '261' }, { 'value': 576, 'label': 'Malawi', 'code': '265' }, { 'value': 577, 'label': 'Maldives', 'code': '960' }, { 'value': 578, 'label': 'Mali', 'code': '223' }, { 'value': 579, 'label': 'Malta', 'code': '356' }, { 'value': 580, 'label': 'Marshall Islands', 'code': '692' }, { 'value': 582, 'label': 'Mauritania', 'code': '222' }, { 'value': 583, 'label': 'Mauritius', 'code': '230' }, { 'value': 584, 'label': 'Mayotte', 'code': '269' }, { 'value': 585, 'label': 'Micronesia', 'code': '691' }, { 'value': 586, 'label': 'Moldova', 'code': '373' }, { 'value': 587, 'label': 'Monaco', 'code': '377' }, { 'value': 588, 'label': 'Montserrat', 'code': '1664' }, { 'value': 589, 'label': 'Morocco', 'code': '212' }, { 'value': 590, 'label': 'Mozambique', 'code': '258' }, { 'value': 591, 'label': 'Myanmar', 'code': '95' }, { 'value': 592, 'label': 'Namibia', 'code': '264' }, { 'value': 593, 'label': 'Nauru', 'code': '674' }, { 'value': 596, 'label': 'New Caledonia', 'code': '687' }, { 'value': 597, 'label': 'Nicaragua', 'code': '505' }, { 'value': 598, 'label': 'Niger', 'code': '227' }, { 'value': 599, 'label': 'Nigeria', 'code': '234' }, { 'value': 603, 'label': 'Oman', 'code': '968' }, { 'value': 604, 'label': 'Pakistan', 'code': '92' }, { 'value': 605, 'label': 'Palau', 'code': '680' }, { 'value': 606, 'label': 'Panama', 'code': '507' }, { 'value': 607, 'label': 'Papua New Guinea', 'code': '675' }, { 'value': 608, 'label': 'Paraguay', 'code': '595' }, { 'value': 609, 'label': 'Peru', 'code': '51' }, { 'value': 611, 'label': 'Poland', 'code': '48' }, { 'value': 612, 'label': 'Portugal', 'code': '351' }, { 'value': 613, 'label': 'Puerto Rico', 'code': '1787' }, { 'value': 614, 'label': 'Qatar', 'code': '974' }, { 'value': 615, 'label': 'Reunion', 'code': '262' }, { 'value': 616, 'label': 'Romania', 'code': '40' }, { 'value': 617, 'label': 'Rwanda', 'code': '250' }, { 'value': 619, 'label': 'Samoa', 'code': '685' }, { 'value': 620, 'label': 'San Marino', 'code': '378' }, { 'value': 621, 'label': 'Sao Tome and Principe', 'code': '239' }, { 'value': 622, 'label': 'Saudi Arabia', 'code': '966' }, { 'value': 623, 'label': 'Senegal', 'code': '221' }, { 'value': 624, 'label': 'Seychelles', 'code': '248' }, { 'value': 625, 'label': 'Sierra Leone', 'code': '232' }, { 'value': 626, 'label': 'Slovakia', 'code': '421' }, { 'value': 627, 'label': 'Slovenia', 'code': '386' }, { 'value': 628, 'label': 'Solomon Islands', 'code': '677' }, { 'value': 629, 'label': 'Somalia', 'code': '252' }, { 'value': 630, 'label': 'South Africa', 'code': '27' }, { 'value': 632, 'label': 'Sri Lanka', 'code': '94' }, { 'value': 633, 'label': 'Sudan', 'code': '249' }, { 'value': 634, 'label': 'Suriname', 'code': '597' }, { 'value': 635, 'label': 'Swaziland', 'code': '268' }, { 'value': 636, 'label': 'Sweden', 'code': '46' }, { 'value': 637, 'label': 'Syrian Arab Republic', 'code': '963' }, { 'value': 638, 'label': 'Taiwan', 'code': '886' }, { 'value': 639, 'label': 'Tanzania', 'code': '255' }, { 'value': 640, 'label': 'Togo', 'code': '228' }, { 'value': 642, 'label': 'Tonga', 'code': '676' }, { 'value': 643, 'label': 'Trinidad and Tobago', 'code': '1868' }, { 'value': 644, 'label': 'Tunisia', 'code': '216' }, { 'value': 645, 'label': 'Turkey', 'code': '90' }, { 'value': 646, 'label': 'Turkmenistan', 'code': '993' }, { 'value': 647, 'label': 'Turks and Caicos Islands', 'code': '1649' }, { 'value': 649, 'label': 'Uganda', 'code': '256' }, { 'value': 650, 'label': 'Ukraine', 'code': '380' }, { 'value': 651, 'label': 'United Arab Emirates', 'code': '971' }, { 'value': 652, 'label': 'Uruguay', 'code': '598' }, { 'value': 654, 'label': 'Uzbekistan', 'code': '998' }, { 'value': 655, 'label': 'Vanuatu', 'code': '678' }, { 'value': 657, 'label': 'Venezuela', 'code': '58' }, { 'value': 659, 'label': 'Virgin Islands (British)', 'code': '1284' }, { 'value': 662, 'label': 'Yemen', 'code': '967' }, { 'value': 665, 'label': 'Zambia', 'code': '260' }, { 'value': 666, 'label': 'Zimbabwe', 'code': '263' }, { 'value': 681, 'label': 'Korea', 'code': '82' }, { 'value': 688, 'label': 'zg', 'code': '41' }, { 'value': 692, 'label': 'Bhutan', 'code': '975' }, { 'value': 693, 'label': 'Malaysia', 'code': '60' }, { 'value': 694, 'label': 'Bosniaand Herzegovina', 'code': '387' }, { 'value': 695, 'label': 'Caribisch Nederland', 'code': '599' }, { 'value': 696, 'label': 'Democratic Republic of theCongo', 'code': '243' }, { 'value': 697, 'label': 'Ivory Coast', 'code': '225' }, { 'value': 698, 'label': 'Guatemala', 'code': '502' }, { 'value': 699, 'label': 'Saint Kitts and Nevis', 'code': '1869' }, { 'value': 700, 'label': 'Korea Democratic Rep.', 'code': '850' }, { 'value': 701, 'label': 'Saint Lucia', 'code': '1758' }, { 'value': 702, 'label': 'Montenegro', 'code': '382' }, { 'value': 703, 'label': 'Saint Pierreand Miquelon', 'code': '508' }, { 'value': 704, 'label': 'Serbia', 'code': '381' }, { 'value': 705, 'label': 'Tajikistan', 'code': '992' }, { 'value': 706, 'label': 'Saint Vincent and The Grenadines', 'code': '1784' }, { 'value': 707, 'label': 'Curacao', 'code': '599' }];

    constructor() {
        this.countryList = this.defaultCountryList;
    }

    @action searchCountry(str) {
        const allCountry = this.remoteCountryList;
        const matchList = [];
        for (var i = 0; i < allCountry.length; i++) {
            const countryLabel = allCountry[i].label;
            const index = countryLabel.toLowerCase().indexOf(str.toLowerCase());
            if (index === 0) {
                matchList.push(allCountry[i]);
            }
        }
        this.countryList = matchList;
    }

    @action resetSearch() {
        this.countryList = this.defaultCountryList;
    }

    @observable countryList;
}

export default CountryStore;
