world-flags 0.3.0 → 0.3.1

Sign up to get free protection for your applications and to get access to all the features.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.3.0
1
+ 0.3.1
data/lib/world-flags.rb CHANGED
@@ -8,7 +8,7 @@ require "world_flags/countries"
8
8
 
9
9
  module WorldFlags
10
10
  class << self
11
- attr_accessor :auto_select
11
+ attr_accessor :auto_select, :raise_error, :default_code
12
12
 
13
13
  # TODO: Why both active and valid locales? Does this even make sense!?
14
14
  attr_writer :active_locales
@@ -28,6 +28,10 @@ module WorldFlags
28
28
  @valid_locales ||= list.flatten
29
29
  end
30
30
 
31
+ def raise_error?
32
+ @raise_error
33
+ end
34
+
31
35
  def auto_select?
32
36
  auto_select
33
37
  end
@@ -45,11 +49,11 @@ module WorldFlags
45
49
 
46
50
  # Locale translation helper macros
47
51
 
48
- def flag_code code
52
+ def flag_code code = :en
49
53
  locale_flag_map[code.to_sym] || code
50
54
  end
51
55
 
52
- def locale code
56
+ def locale code = :en
53
57
  flag_locale_map[code.to_sym] || code
54
58
  end
55
59
 
@@ -60,6 +64,7 @@ module WorldFlags
60
64
  @locale_map ||= {
61
65
  :en => :us,
62
66
  :da => :dk,
67
+ :sv => :se,
63
68
  :'en_UK' => :gb,
64
69
  :'en_US' => :us
65
70
  }
@@ -69,11 +74,23 @@ module WorldFlags
69
74
  locale_flag_map.hash_revert
70
75
  end
71
76
 
77
+ def default_code_used
78
+ WorldFlags.default_code || :en
79
+ end
80
+
72
81
  # Language helper macros
73
82
 
74
83
  def language locale = :en, code = :en
75
- locale ||= :en
76
- languages[locale][code]
84
+ locale ||= default_code_used
85
+ locale_languages_map = languages[locale] || languages[default_code_used]
86
+
87
+ raise "No language-locale map defined for locale: #{locale} in #{languages}" if locale_languages_map.blank?
88
+
89
+ # raise("No language map defined for language code: #{code} in #{locale_languages_map[code]}")
90
+ locale_languages_map[code] ? locale_languages_map[code] : locale_languages_map[default_code_used]
91
+ rescue Exception => e
92
+ raise e if WorldFlags.raise_error?
93
+ "Undefined"
77
94
  end
78
95
 
79
96
  def languages= languages
@@ -83,18 +100,34 @@ module WorldFlags
83
100
 
84
101
  def languages
85
102
  @languages ||= begin
86
- active_locales.inject({}) do |res, locale|
87
- res[locale] = Languages.send(locale) if Languages.respond_to?(locale)
103
+ active_locales.inject({}) do |res, loc|
104
+ res[locale] = find_language_map(loc)
88
105
  res
89
106
  end
90
107
  end
91
108
  end
92
109
 
110
+ def find_language_map loc
111
+ # return Countries.send(loc) if Countries.respond_to?(loc)
112
+ [loc, flag_code(loc), locale(loc)].each do |code|
113
+ return Languages.send(locale) if Languages.respond_to?(locale)
114
+ end
115
+ end
116
+
93
117
  # Country helper macros
94
118
 
95
119
  def country locale = :en, code = :en
96
- locale ||= :en
97
- countries[locale][code]
120
+ locale ||= default_code_used
121
+
122
+ locale_countries_map = countries[locale] || countries[default_code_used]
123
+
124
+ raise "No country-locale map defined for locale: #{locale} in #{countries}" if locale_countries_map.blank?
125
+
126
+ # raise("No country map defined for country code: #{code} in #{locale_countries_map[code]}")
127
+ locale_countries_map[code] ? locale_countries_map[code] : locale_countries_map[default_code_used]
128
+ rescue Exception => e
129
+ raise e if WorldFlags.raise_error?
130
+ "Undefined"
98
131
  end
99
132
 
100
133
  def countries= countries
@@ -103,7 +136,19 @@ module WorldFlags
103
136
  end
104
137
 
105
138
  def countries
106
- @countries ||= {:en => Countries.en}
139
+ @countries ||= begin
140
+ active_locales.inject({}) do |res, loc|
141
+ res[loc] = find_country_map(loc)
142
+ res
143
+ end
144
+ end
107
145
  end
146
+
147
+ def find_country_map loc
148
+ # return Countries.send(loc) if Countries.respond_to?(loc)
149
+ [loc, flag_code(loc), locale(loc)].each do |code|
150
+ return Countries.send(code) if Countries.respond_to?(code)
151
+ end
152
+ end
108
153
  end
109
154
  end
@@ -20,6 +20,43 @@ module WorldFlags
20
20
  :fi => 'Finland'
21
21
  }
22
22
  end
23
+
24
+ def da
25
+ {
26
+ :gb => 'England',
27
+ :us => 'USA',
28
+ :es => 'Spanien',
29
+ :de => 'Tyskland',
30
+ :dk => 'Danmark',
31
+ :se => 'Sverige',
32
+ :no => 'Norge',
33
+ }
34
+ end
35
+ alias_method :dk, :da
36
+
37
+ def se
38
+ {
39
+ :gb => 'England',
40
+ :us => 'USA',
41
+ :es => 'Spanien',
42
+ :de => 'Tyskland',
43
+ :dk => 'Danmark',
44
+ :se => 'Sverige',
45
+ :no => 'Norge',
46
+ }
47
+ end
48
+
49
+ def no
50
+ {
51
+ :gb => 'England',
52
+ :us => 'USA',
53
+ :es => 'Spanien',
54
+ :de => 'Tyskland',
55
+ :dk => 'Danmark',
56
+ :se => 'Sverige',
57
+ :no => 'Norge',
58
+ }
59
+ end
23
60
  end
24
61
  end
25
62
  end
@@ -7,7 +7,7 @@ module WorldFlags
7
7
 
8
8
  def valid_locales
9
9
  if I18n.respond_to?(:available_locales) && I18n.available_locales.present?
10
- I18n.available_locales
10
+ I18n.available_locales
11
11
  else
12
12
  WorldFlags.valid_locales
13
13
  end
@@ -29,10 +29,13 @@ module WorldFlags
29
29
  extra_options = title ? {:title => title } : {}
30
30
  selected = flag_selected?(code, options) ? ' selected' : ''
31
31
 
32
+ language_name = WorldFlags.language(:en, code)
33
+ country_name = WorldFlags.country(:en, code)
34
+
32
35
  # add semi class if not selected
33
36
  semi = (selected.blank? ? ' semi' : '') if options[:with_semi]
34
37
 
35
- {:class => "flag #{code}#{selected}#{semi}", :'data-country' => name, :'data-cc' => code, :'data-locale' => locale}.merge(options[:html] || {}).merge(extra_options)
38
+ {:class => "flag #{code}#{selected}#{semi}", :'data-country_name' => country_name, :'data-language_name' => language_name, :'data-cc' => code, :'data-locale' => locale}.merge(options[:html] || {}).merge(extra_options)
36
39
  end
37
40
 
38
41
  def self.flag_selected? code, options = {}
@@ -21,6 +21,43 @@ module WorldFlags
21
21
  :fi => 'Finnish'
22
22
  }
23
23
  end
24
+
25
+ def da
26
+ {
27
+ :gb => 'Engelsk',
28
+ :us => 'Engelsk',
29
+ :es => 'Spansk',
30
+ :de => 'Tysk',
31
+ :dk => 'Dansk',
32
+ :se => 'Svensk',
33
+ :no => 'Norsk',
34
+ }
35
+ end
36
+ alias_method :dk, :da
37
+
38
+ def se
39
+ {
40
+ :gb => 'Engelska',
41
+ :us => 'Engelska',
42
+ :es => 'Spansk',
43
+ :de => 'Tysk',
44
+ :dk => 'Dansk',
45
+ :se => 'Svenska',
46
+ :no => 'Norsk',
47
+ }
48
+ end
49
+
50
+ def no
51
+ {
52
+ :gb => 'Engelsk',
53
+ :us => 'Engelsk',
54
+ :es => 'Spansk',
55
+ :de => 'Tysk',
56
+ :dk => 'Dansk',
57
+ :se => 'Svensk',
58
+ :no => 'Norsk',
59
+ }
60
+ end
24
61
  end
25
62
  end
26
63
  end
@@ -7,6 +7,7 @@ describe WorldFlags::Helper::View do
7
7
  before do
8
8
  WorldFlags.auto_select!
9
9
  I18n.locale = 'ar'
10
+ WorldFlags.active_locales = [:da, :sv, :no, :en, :ar]
10
11
  end
11
12
 
12
13
  it "should be empty, with an empty block" do
@@ -57,5 +58,17 @@ describe WorldFlags::Helper::View do
57
58
  output = flag_title :ar, 'Argentina'
58
59
  output.should == "<li class=\"flag ar selected\" data-cc=\"ar\" data-country=\"Argentina\" data-locale=\"ar\" title=\"Argentina\">&nbsp;</li>"
59
60
  end
60
- end
61
61
 
62
+ describe 'Countries' do
63
+ before do
64
+ I18n.locale = 'da'
65
+ end
66
+
67
+ it "should list nordic flags using args and :with_semi" do
68
+ output = flags_list 32 do
69
+ flags :dk, :se, :no, :with_semi => true, :country => :da
70
+ end
71
+ output.should == "<ul class=\"f32\"><li class=\"flag dk selected\" data-cc=\"dk\" data-country=\"Danmark\" data-locale=\"da\">&nbsp;</li><li class=\"flag se semi\" data-cc=\"se\" data-country=\"Sverige\" data-locale=\"sv\">&nbsp;</li><li class=\"flag no semi\" data-cc=\"no\" data-country=\"Norge\" data-locale=\"no\">&nbsp;</li></ul>"
72
+ end
73
+ end
74
+ end
@@ -17,6 +17,7 @@
17
17
  float:left;
18
18
  border: 1px solid black;
19
19
  }
20
+
20
21
  #languages .f32 li.flag {
21
22
  padding-bottom: 6px;
22
23
  padding-right: 26px;
@@ -1,247 +1,247 @@
1
1
  .f16 .flag.semi {
2
2
  background:url(<%= asset_path 'flags/flags16_semi.png' %>) no-repeat;
3
3
  }
4
- .f16 ._African_Union{background-position:0 -0px;}
5
- .f16 ._Arab_League{background-position:0 -16px;}
6
- .f16 ._ASEAN{background-position:0 -32px;}
7
- .f16 ._CARICOM{background-position:0 -48px;}
8
- .f16 ._CIS{background-position:0 -64px;}
9
- .f16 ._Commonwealth{background-position:0 -80px;}
10
- .f16 ._England{background-position:0 -96px;}
11
- .f16 ._European_Union{background-position:0 -112px;}
12
- .f16 ._Islamic_Conference{background-position:0 -128px;}
13
- .f16 ._Kosovo{background-position:0 -144px;}
14
- .f16 ._NATO{background-position:0 -160px;}
15
- .f16 ._Northern_Cyprus{background-position:0 -176px;}
16
- .f16 ._Northern_Ireland{background-position:0 -192px;}
17
- .f16 ._Olympic_Movement{background-position:0 -208px;}
18
- .f16 ._OPEC{background-position:0 -224px;}
19
- .f16 ._Red_Cross{background-position:0 -240px;}
20
- .f16 ._Scotland{background-position:0 -256px;}
21
- .f16 ._Somaliland{background-position:0 -272px;}
22
- .f16 ._Tibet{background-position:0 -288px;}
23
- .f16 ._United_Nations{background-position:0 -304px;}
24
- .f16 ._Wales{background-position:0 -320px;}
25
- .f16 .ad{background-position:0 -336px;}
26
- .f16 .ae{background-position:0 -352px;}
27
- .f16 .af{background-position:0 -368px;}
28
- .f16 .ag{background-position:0 -384px;}
29
- .f16 .ai{background-position:0 -400px;}
30
- .f16 .al{background-position:0 -416px;}
31
- .f16 .am{background-position:0 -432px;}
32
- .f16 .an{background-position:0 -448px;}
33
- .f16 .ao{background-position:0 -464px;}
34
- .f16 .aq{background-position:0 -480px;}
35
- .f16 .ar{background-position:0 -496px;}
36
- .f16 .as{background-position:0 -512px;}
37
- .f16 .at{background-position:0 -528px;}
38
- .f16 .au{background-position:0 -544px;}
39
- .f16 .aw{background-position:0 -560px;}
40
- .f16 .az{background-position:0 -576px;}
41
- .f16 .ba{background-position:0 -592px;}
42
- .f16 .bb{background-position:0 -608px;}
43
- .f16 .bd{background-position:0 -624px;}
44
- .f16 .be{background-position:0 -640px;}
45
- .f16 .bf{background-position:0 -656px;}
46
- .f16 .bg{background-position:0 -672px;}
47
- .f16 .bh{background-position:0 -688px;}
48
- .f16 .bi{background-position:0 -704px;}
49
- .f16 .bj{background-position:0 -720px;}
50
- .f16 .bm{background-position:0 -736px;}
51
- .f16 .bn{background-position:0 -752px;}
52
- .f16 .bo{background-position:0 -768px;}
53
- .f16 .br{background-position:0 -784px;}
54
- .f16 .bs{background-position:0 -800px;}
55
- .f16 .bt{background-position:0 -816px;}
56
- .f16 .bw{background-position:0 -832px;}
57
- .f16 .by{background-position:0 -848px;}
58
- .f16 .bz{background-position:0 -864px;}
59
- .f16 .ca{background-position:0 -880px;}
60
- .f16 .cg{background-position:0 -896px;}
61
- .f16 .cf{background-position:0 -912px;}
62
- .f16 .cd{background-position:0 -928px;}
63
- .f16 .ch{background-position:0 -944px;}
64
- .f16 .ci{background-position:0 -960px;}
65
- .f16 .ck{background-position:0 -976px;}
66
- .f16 .cl{background-position:0 -992px;}
67
- .f16 .cm{background-position:0 -1008px;}
68
- .f16 .cn{background-position:0 -1024px;}
69
- .f16 .co{background-position:0 -1040px;}
70
- .f16 .cr{background-position:0 -1056px;}
71
- .f16 .cu{background-position:0 -1072px;}
72
- .f16 .cv{background-position:0 -1088px;}
73
- .f16 .cy{background-position:0 -1104px;}
74
- .f16 .cz{background-position:0 -1120px;}
75
- .f16 .de{background-position:0 -1136px;}
76
- .f16 .dj{background-position:0 -1152px;}
77
- .f16 .dk{background-position:0 -1168px;}
78
- .f16 .dm{background-position:0 -1184px;}
79
- .f16 .do{background-position:0 -1200px;}
80
- .f16 .dz{background-position:0 -1216px;}
81
- .f16 .ec{background-position:0 -1232px;}
82
- .f16 .ee{background-position:0 -1248px;}
83
- .f16 .eg{background-position:0 -1264px;}
84
- .f16 .eh{background-position:0 -1280px;}
85
- .f16 .er{background-position:0 -1296px;}
86
- .f16 .es{background-position:0 -1312px;}
87
- .f16 .et{background-position:0 -1328px;}
88
- .f16 .fi{background-position:0 -1344px;}
89
- .f16 .fj{background-position:0 -1360px;}
90
- .f16 .fm{background-position:0 -1376px;}
91
- .f16 .fo{background-position:0 -1392px;}
92
- .f16 .fr{background-position:0 -1408px;}
93
- .f16 .ga{background-position:0 -1424px;}
94
- .f16 .gb{background-position:0 -1440px;}
95
- .f16 .gd{background-position:0 -1456px;}
96
- .f16 .ge{background-position:0 -1472px;}
97
- .f16 .gg{background-position:0 -1488px;}
98
- .f16 .gh{background-position:0 -1504px;}
99
- .f16 .gi{background-position:0 -1520px;}
100
- .f16 .gl{background-position:0 -1536px;}
101
- .f16 .gm{background-position:0 -1552px;}
102
- .f16 .gn{background-position:0 -1568px;}
103
- .f16 .gp{background-position:0 -1584px;}
104
- .f16 .gq{background-position:0 -1600px;}
105
- .f16 .gr{background-position:0 -1616px;}
106
- .f16 .gt{background-position:0 -1632px;}
107
- .f16 .gu{background-position:0 -1648px;}
108
- .f16 .gw{background-position:0 -1664px;}
109
- .f16 .gy{background-position:0 -1680px;}
110
- .f16 .hk{background-position:0 -1696px;}
111
- .f16 .hn{background-position:0 -1712px;}
112
- .f16 .hr{background-position:0 -1728px;}
113
- .f16 .ht{background-position:0 -1744px;}
114
- .f16 .hu{background-position:0 -1760px;}
115
- .f16 .id{background-position:0 -1776px;}
116
- .f16 .mc{background-position:0 -1776px;}
117
- .f16 .ie{background-position:0 -1792px;}
118
- .f16 .il{background-position:0 -1808px;}
119
- .f16 .im{background-position:0 -1824px;}
120
- .f16 .in{background-position:0 -1840px;}
121
- .f16 .iq{background-position:0 -1856px;}
122
- .f16 .ir{background-position:0 -1872px;}
123
- .f16 .is{background-position:0 -1888px;}
124
- .f16 .it{background-position:0 -1904px;}
125
- .f16 .je{background-position:0 -1920px;}
126
- .f16 .jm{background-position:0 -1936px;}
127
- .f16 .jo{background-position:0 -1952px;}
128
- .f16 .jp{background-position:0 -1968px;}
129
- .f16 .ke{background-position:0 -1984px;}
130
- .f16 .kg{background-position:0 -2000px;}
131
- .f16 .kh{background-position:0 -2016px;}
132
- .f16 .ki{background-position:0 -2032px;}
133
- .f16 .km{background-position:0 -2048px;}
134
- .f16 .kn{background-position:0 -2064px;}
135
- .f16 .kp{background-position:0 -2080px;}
136
- .f16 .kr{background-position:0 -2096px;}
137
- .f16 .kw{background-position:0 -2112px;}
138
- .f16 .ky{background-position:0 -2128px;}
139
- .f16 .kz{background-position:0 -2144px;}
140
- .f16 .la{background-position:0 -2160px;}
141
- .f16 .lb{background-position:0 -2176px;}
142
- .f16 .lc{background-position:0 -2192px;}
143
- .f16 .li{background-position:0 -2208px;}
144
- .f16 .lk{background-position:0 -2224px;}
145
- .f16 .lr{background-position:0 -2240px;}
146
- .f16 .ls{background-position:0 -2256px;}
147
- .f16 .lt{background-position:0 -2272px;}
148
- .f16 .lu{background-position:0 -2288px;}
149
- .f16 .lv{background-position:0 -2304px;}
150
- .f16 .ly{background-position:0 -2320px;}
151
- .f16 .ma{background-position:0 -2336px;}
152
- .f16 .md{background-position:0 -2352px;}
153
- .f16 .me{background-position:0 -2368px;}
154
- .f16 .mg{background-position:0 -2384px;}
155
- .f16 .mh{background-position:0 -2400px;}
156
- .f16 .mk{background-position:0 -2416px;}
157
- .f16 .ml{background-position:0 -2432px;}
158
- .f16 .mm{background-position:0 -2448px;}
159
- .f16 .mn{background-position:0 -2464px;}
160
- .f16 .mo{background-position:0 -2480px;}
161
- .f16 .mq{background-position:0 -2496px;}
162
- .f16 .mr{background-position:0 -2512px;}
163
- .f16 .ms{background-position:0 -2528px;}
164
- .f16 .mt{background-position:0 -2544px;}
165
- .f16 .mu{background-position:0 -2560px;}
166
- .f16 .mv{background-position:0 -2576px;}
167
- .f16 .mw{background-position:0 -2592px;}
168
- .f16 .mx{background-position:0 -2608px;}
169
- .f16 .my{background-position:0 -2624px;}
170
- .f16 .mz{background-position:0 -2640px;}
171
- .f16 .na{background-position:0 -2656px;}
172
- .f16 .nc{background-position:0 -2672px;}
173
- .f16 .ne{background-position:0 -2688px;}
174
- .f16 .ng{background-position:0 -2704px;}
175
- .f16 .ni{background-position:0 -2720px;}
176
- .f16 .nl{background-position:0 -2736px;}
177
- .f16 .no{background-position:0 -2752px;}
178
- .f16 .np{background-position:0 -2768px;}
179
- .f16 .nr{background-position:0 -2784px;}
180
- .f16 .nz{background-position:0 -2800px;}
181
- .f16 .om{background-position:0 -2816px;}
182
- .f16 .pa{background-position:0 -2832px;}
183
- .f16 .pe{background-position:0 -2848px;}
184
- .f16 .pf{background-position:0 -2864px;}
185
- .f16 .pg{background-position:0 -2880px;}
186
- .f16 .ph{background-position:0 -2896px;}
187
- .f16 .pk{background-position:0 -2912px;}
188
- .f16 .pl{background-position:0 -2928px;}
189
- .f16 .pr{background-position:0 -2944px;}
190
- .f16 .ps{background-position:0 -2960px;}
191
- .f16 .pt{background-position:0 -2976px;}
192
- .f16 .pw{background-position:0 -2992px;}
193
- .f16 .py{background-position:0 -3008px;}
194
- .f16 .qa{background-position:0 -3024px;}
195
- .f16 .re{background-position:0 -3040px;}
196
- .f16 .ro{background-position:0 -3056px;}
197
- .f16 .rs{background-position:0 -3072px;}
198
- .f16 .ru{background-position:0 -3088px;}
199
- .f16 .rw{background-position:0 -3104px;}
200
- .f16 .sa{background-position:0 -3120px;}
201
- .f16 .sb{background-position:0 -3136px;}
202
- .f16 .sc{background-position:0 -3152px;}
203
- .f16 .sd{background-position:0 -3168px;}
204
- .f16 .se{background-position:0 -3184px;}
205
- .f16 .sg{background-position:0 -3200px;}
206
- .f16 .si{background-position:0 -3216px;}
207
- .f16 .sk{background-position:0 -3232px;}
208
- .f16 .sl{background-position:0 -3248px;}
209
- .f16 .sm{background-position:0 -3264px;}
210
- .f16 .sn{background-position:0 -3280px;}
211
- .f16 .so{background-position:0 -3296px;}
212
- .f16 .sr{background-position:0 -3312px;}
213
- .f16 .st{background-position:0 -3328px;}
214
- .f16 .sv{background-position:0 -3344px;}
215
- .f16 .sy{background-position:0 -3360px;}
216
- .f16 .sz{background-position:0 -3376px;}
217
- .f16 .tc{background-position:0 -3392px;}
218
- .f16 .td{background-position:0 -3408px;}
219
- .f16 .tg{background-position:0 -3424px;}
220
- .f16 .th{background-position:0 -3440px;}
221
- .f16 .tj{background-position:0 -3456px;}
222
- .f16 .tl{background-position:0 -3472px;}
223
- .f16 .tm{background-position:0 -3488px;}
224
- .f16 .tn{background-position:0 -3504px;}
225
- .f16 .to{background-position:0 -3520px;}
226
- .f16 .tr{background-position:0 -3536px;}
227
- .f16 .tt{background-position:0 -3552px;}
228
- .f16 .tv{background-position:0 -3568px;}
229
- .f16 .tw{background-position:0 -3584px;}
230
- .f16 .tz{background-position:0 -3600px;}
231
- .f16 .ua{background-position:0 -3616px;}
232
- .f16 .ug{background-position:0 -3632px;}
233
- .f16 .us{background-position:0 -3648px;}
234
- .f16 .uy{background-position:0 -3664px;}
235
- .f16 .uz{background-position:0 -3680px;}
236
- .f16 .va{background-position:0 -3696px;}
237
- .f16 .vc{background-position:0 -3712px;}
238
- .f16 .ve{background-position:0 -3728px;}
239
- .f16 .vg{background-position:0 -3744px;}
240
- .f16 .vi{background-position:0 -3760px;}
241
- .f16 .vn{background-position:0 -3776px;}
242
- .f16 .vu{background-position:0 -3792px;}
243
- .f16 .ws{background-position:0 -3808px;}
244
- .f16 .ye{background-position:0 -3824px;}
245
- .f16 .za{background-position:0 -3840px;}
246
- .f16 .zm{background-position:0 -3856px;}
247
- .f16 .zw{background-position:0 -3872px;}
4
+ .f16 ._African_Union.semi{background-position:0 -0px;}
5
+ .f16 ._Arab_League.semi{background-position:0 -16px;}
6
+ .f16 ._ASEAN.semi{background-position:0 -32px;}
7
+ .f16 ._CARICOM.semi{background-position:0 -48px;}
8
+ .f16 ._CIS.semi{background-position:0 -64px;}
9
+ .f16 ._Commonwealth.semi{background-position:0 -80px;}
10
+ .f16 ._England.semi{background-position:0 -96px;}
11
+ .f16 ._European_Union.semi{background-position:0 -112px;}
12
+ .f16 ._Islamic_Conference.semi{background-position:0 -128px;}
13
+ .f16 ._Kosovo.semi{background-position:0 -144px;}
14
+ .f16 ._NATO.semi{background-position:0 -160px;}
15
+ .f16 ._Northern_Cyprus.semi{background-position:0 -176px;}
16
+ .f16 ._Northern_Ireland.semi{background-position:0 -192px;}
17
+ .f16 ._Olympic_Movement.semi{background-position:0 -208px;}
18
+ .f16 ._OPEC.semi{background-position:0 -224px;}
19
+ .f16 ._Red_Cross.semi{background-position:0 -240px;}
20
+ .f16 ._Scotland.semi{background-position:0 -256px;}
21
+ .f16 ._Somaliland.semi{background-position:0 -272px;}
22
+ .f16 ._Tibet.semi{background-position:0 -288px;}
23
+ .f16 ._United_Nations.semi{background-position:0 -304px;}
24
+ .f16 ._Wales.semi{background-position:0 -320px;}
25
+ .f16 .ad.semi{background-position:0 -336px;}
26
+ .f16 .ae.semi{background-position:0 -352px;}
27
+ .f16 .af.semi{background-position:0 -368px;}
28
+ .f16 .ag.semi{background-position:0 -384px;}
29
+ .f16 .ai.semi{background-position:0 -400px;}
30
+ .f16 .al.semi{background-position:0 -416px;}
31
+ .f16 .am.semi{background-position:0 -432px;}
32
+ .f16 .an.semi{background-position:0 -448px;}
33
+ .f16 .ao.semi{background-position:0 -464px;}
34
+ .f16 .aq.semi{background-position:0 -480px;}
35
+ .f16 .ar.semi{background-position:0 -496px;}
36
+ .f16 .as.semi{background-position:0 -512px;}
37
+ .f16 .at.semi{background-position:0 -528px;}
38
+ .f16 .au.semi{background-position:0 -544px;}
39
+ .f16 .aw.semi{background-position:0 -560px;}
40
+ .f16 .az.semi{background-position:0 -576px;}
41
+ .f16 .ba.semi{background-position:0 -592px;}
42
+ .f16 .bb.semi{background-position:0 -608px;}
43
+ .f16 .bd.semi{background-position:0 -624px;}
44
+ .f16 .be.semi{background-position:0 -640px;}
45
+ .f16 .bf.semi{background-position:0 -656px;}
46
+ .f16 .bg.semi{background-position:0 -672px;}
47
+ .f16 .bh.semi{background-position:0 -688px;}
48
+ .f16 .bi.semi{background-position:0 -704px;}
49
+ .f16 .bj.semi{background-position:0 -720px;}
50
+ .f16 .bm.semi{background-position:0 -736px;}
51
+ .f16 .bn.semi{background-position:0 -752px;}
52
+ .f16 .bo.semi{background-position:0 -768px;}
53
+ .f16 .br.semi{background-position:0 -784px;}
54
+ .f16 .bs.semi{background-position:0 -800px;}
55
+ .f16 .bt.semi{background-position:0 -816px;}
56
+ .f16 .bw.semi{background-position:0 -832px;}
57
+ .f16 .by.semi{background-position:0 -848px;}
58
+ .f16 .bz.semi{background-position:0 -864px;}
59
+ .f16 .ca.semi{background-position:0 -880px;}
60
+ .f16 .cg.semi{background-position:0 -896px;}
61
+ .f16 .cf.semi{background-position:0 -912px;}
62
+ .f16 .cd.semi{background-position:0 -928px;}
63
+ .f16 .ch.semi{background-position:0 -944px;}
64
+ .f16 .ci.semi{background-position:0 -960px;}
65
+ .f16 .ck.semi{background-position:0 -976px;}
66
+ .f16 .cl.semi{background-position:0 -992px;}
67
+ .f16 .cm.semi{background-position:0 -1008px;}
68
+ .f16 .cn.semi{background-position:0 -1024px;}
69
+ .f16 .co.semi{background-position:0 -1040px;}
70
+ .f16 .cr.semi{background-position:0 -1056px;}
71
+ .f16 .cu.semi{background-position:0 -1072px;}
72
+ .f16 .cv.semi{background-position:0 -1088px;}
73
+ .f16 .cy.semi{background-position:0 -1104px;}
74
+ .f16 .cz.semi{background-position:0 -1120px;}
75
+ .f16 .de.semi{background-position:0 -1136px;}
76
+ .f16 .dj.semi{background-position:0 -1152px;}
77
+ .f16 .dk.semi{background-position:0 -1168px;}
78
+ .f16 .dm.semi{background-position:0 -1184px;}
79
+ .f16 .do.semi{background-position:0 -1200px;}
80
+ .f16 .dz.semi{background-position:0 -1216px;}
81
+ .f16 .ec.semi{background-position:0 -1232px;}
82
+ .f16 .ee.semi{background-position:0 -1248px;}
83
+ .f16 .eg.semi{background-position:0 -1264px;}
84
+ .f16 .eh.semi{background-position:0 -1280px;}
85
+ .f16 .er.semi{background-position:0 -1296px;}
86
+ .f16 .es.semi{background-position:0 -1312px;}
87
+ .f16 .et.semi{background-position:0 -1328px;}
88
+ .f16 .fi.semi{background-position:0 -1344px;}
89
+ .f16 .fj.semi{background-position:0 -1360px;}
90
+ .f16 .fm.semi{background-position:0 -1376px;}
91
+ .f16 .fo.semi{background-position:0 -1392px;}
92
+ .f16 .fr.semi{background-position:0 -1408px;}
93
+ .f16 .ga.semi{background-position:0 -1424px;}
94
+ .f16 .gb.semi{background-position:0 -1440px;}
95
+ .f16 .gd.semi{background-position:0 -1456px;}
96
+ .f16 .ge.semi{background-position:0 -1472px;}
97
+ .f16 .gg.semi{background-position:0 -1488px;}
98
+ .f16 .gh.semi{background-position:0 -1504px;}
99
+ .f16 .gi.semi{background-position:0 -1520px;}
100
+ .f16 .gl.semi{background-position:0 -1536px;}
101
+ .f16 .gm.semi{background-position:0 -1552px;}
102
+ .f16 .gn.semi{background-position:0 -1568px;}
103
+ .f16 .gp.semi{background-position:0 -1584px;}
104
+ .f16 .gq.semi{background-position:0 -1600px;}
105
+ .f16 .gr.semi{background-position:0 -1616px;}
106
+ .f16 .gt.semi{background-position:0 -1632px;}
107
+ .f16 .gu.semi{background-position:0 -1648px;}
108
+ .f16 .gw.semi{background-position:0 -1664px;}
109
+ .f16 .gy.semi{background-position:0 -1680px;}
110
+ .f16 .hk.semi{background-position:0 -1696px;}
111
+ .f16 .hn.semi{background-position:0 -1712px;}
112
+ .f16 .hr.semi{background-position:0 -1728px;}
113
+ .f16 .ht.semi{background-position:0 -1744px;}
114
+ .f16 .hu.semi{background-position:0 -1760px;}
115
+ .f16 .id.semi{background-position:0 -1776px;}
116
+ .f16 .mc.semi{background-position:0 -1776px;}
117
+ .f16 .ie.semi{background-position:0 -1792px;}
118
+ .f16 .il.semi{background-position:0 -1808px;}
119
+ .f16 .im.semi{background-position:0 -1824px;}
120
+ .f16 .in.semi{background-position:0 -1840px;}
121
+ .f16 .iq.semi{background-position:0 -1856px;}
122
+ .f16 .ir.semi{background-position:0 -1872px;}
123
+ .f16 .is.semi{background-position:0 -1888px;}
124
+ .f16 .it.semi{background-position:0 -1904px;}
125
+ .f16 .je.semi{background-position:0 -1920px;}
126
+ .f16 .jm.semi{background-position:0 -1936px;}
127
+ .f16 .jo.semi{background-position:0 -1952px;}
128
+ .f16 .jp.semi{background-position:0 -1968px;}
129
+ .f16 .ke.semi{background-position:0 -1984px;}
130
+ .f16 .kg.semi{background-position:0 -2000px;}
131
+ .f16 .kh.semi{background-position:0 -2016px;}
132
+ .f16 .ki.semi{background-position:0 -2032px;}
133
+ .f16 .km.semi{background-position:0 -2048px;}
134
+ .f16 .kn.semi{background-position:0 -2064px;}
135
+ .f16 .kp.semi{background-position:0 -2080px;}
136
+ .f16 .kr.semi{background-position:0 -2096px;}
137
+ .f16 .kw.semi{background-position:0 -2112px;}
138
+ .f16 .ky.semi{background-position:0 -2128px;}
139
+ .f16 .kz.semi{background-position:0 -2144px;}
140
+ .f16 .la.semi{background-position:0 -2160px;}
141
+ .f16 .lb.semi{background-position:0 -2176px;}
142
+ .f16 .lc.semi{background-position:0 -2192px;}
143
+ .f16 .li.semi{background-position:0 -2208px;}
144
+ .f16 .lk.semi{background-position:0 -2224px;}
145
+ .f16 .lr.semi{background-position:0 -2240px;}
146
+ .f16 .ls.semi{background-position:0 -2256px;}
147
+ .f16 .lt.semi{background-position:0 -2272px;}
148
+ .f16 .lu.semi{background-position:0 -2288px;}
149
+ .f16 .lv.semi{background-position:0 -2304px;}
150
+ .f16 .ly.semi{background-position:0 -2320px;}
151
+ .f16 .ma.semi{background-position:0 -2336px;}
152
+ .f16 .md.semi{background-position:0 -2352px;}
153
+ .f16 .me.semi{background-position:0 -2368px;}
154
+ .f16 .mg.semi{background-position:0 -2384px;}
155
+ .f16 .mh.semi{background-position:0 -2400px;}
156
+ .f16 .mk.semi{background-position:0 -2416px;}
157
+ .f16 .ml.semi{background-position:0 -2432px;}
158
+ .f16 .mm.semi{background-position:0 -2448px;}
159
+ .f16 .mn.semi{background-position:0 -2464px;}
160
+ .f16 .mo.semi{background-position:0 -2480px;}
161
+ .f16 .mq.semi{background-position:0 -2496px;}
162
+ .f16 .mr.semi{background-position:0 -2512px;}
163
+ .f16 .ms.semi{background-position:0 -2528px;}
164
+ .f16 .mt.semi{background-position:0 -2544px;}
165
+ .f16 .mu.semi{background-position:0 -2560px;}
166
+ .f16 .mv.semi{background-position:0 -2576px;}
167
+ .f16 .mw.semi{background-position:0 -2592px;}
168
+ .f16 .mx.semi{background-position:0 -2608px;}
169
+ .f16 .my.semi{background-position:0 -2624px;}
170
+ .f16 .mz.semi{background-position:0 -2640px;}
171
+ .f16 .na.semi{background-position:0 -2656px;}
172
+ .f16 .nc.semi{background-position:0 -2672px;}
173
+ .f16 .ne.semi{background-position:0 -2688px;}
174
+ .f16 .ng.semi{background-position:0 -2704px;}
175
+ .f16 .ni.semi{background-position:0 -2720px;}
176
+ .f16 .nl.semi{background-position:0 -2736px;}
177
+ .f16 .no.semi{background-position:0 -2752px;}
178
+ .f16 .np.semi{background-position:0 -2768px;}
179
+ .f16 .nr.semi{background-position:0 -2784px;}
180
+ .f16 .nz.semi{background-position:0 -2800px;}
181
+ .f16 .om.semi{background-position:0 -2816px;}
182
+ .f16 .pa.semi{background-position:0 -2832px;}
183
+ .f16 .pe.semi{background-position:0 -2848px;}
184
+ .f16 .pf.semi{background-position:0 -2864px;}
185
+ .f16 .pg.semi{background-position:0 -2880px;}
186
+ .f16 .ph.semi{background-position:0 -2896px;}
187
+ .f16 .pk.semi{background-position:0 -2912px;}
188
+ .f16 .pl.semi{background-position:0 -2928px;}
189
+ .f16 .pr.semi{background-position:0 -2944px;}
190
+ .f16 .ps.semi{background-position:0 -2960px;}
191
+ .f16 .pt.semi{background-position:0 -2976px;}
192
+ .f16 .pw.semi{background-position:0 -2992px;}
193
+ .f16 .py.semi{background-position:0 -3008px;}
194
+ .f16 .qa.semi{background-position:0 -3024px;}
195
+ .f16 .re.semi{background-position:0 -3040px;}
196
+ .f16 .ro.semi{background-position:0 -3056px;}
197
+ .f16 .rs.semi{background-position:0 -3072px;}
198
+ .f16 .ru.semi{background-position:0 -3088px;}
199
+ .f16 .rw.semi{background-position:0 -3104px;}
200
+ .f16 .sa.semi{background-position:0 -3120px;}
201
+ .f16 .sb.semi{background-position:0 -3136px;}
202
+ .f16 .sc.semi{background-position:0 -3152px;}
203
+ .f16 .sd.semi{background-position:0 -3168px;}
204
+ .f16 .se.semi{background-position:0 -3184px;}
205
+ .f16 .sg.semi{background-position:0 -3200px;}
206
+ .f16 .si.semi{background-position:0 -3216px;}
207
+ .f16 .sk.semi{background-position:0 -3232px;}
208
+ .f16 .sl.semi{background-position:0 -3248px;}
209
+ .f16 .sm.semi{background-position:0 -3264px;}
210
+ .f16 .sn.semi{background-position:0 -3280px;}
211
+ .f16 .so.semi{background-position:0 -3296px;}
212
+ .f16 .sr.semi{background-position:0 -3312px;}
213
+ .f16 .st.semi{background-position:0 -3328px;}
214
+ .f16 .sv.semi{background-position:0 -3344px;}
215
+ .f16 .sy.semi{background-position:0 -3360px;}
216
+ .f16 .sz.semi{background-position:0 -3376px;}
217
+ .f16 .tc.semi{background-position:0 -3392px;}
218
+ .f16 .td.semi{background-position:0 -3408px;}
219
+ .f16 .tg.semi{background-position:0 -3424px;}
220
+ .f16 .th.semi{background-position:0 -3440px;}
221
+ .f16 .tj.semi{background-position:0 -3456px;}
222
+ .f16 .tl.semi{background-position:0 -3472px;}
223
+ .f16 .tm.semi{background-position:0 -3488px;}
224
+ .f16 .tn.semi{background-position:0 -3504px;}
225
+ .f16 .to.semi{background-position:0 -3520px;}
226
+ .f16 .tr.semi{background-position:0 -3536px;}
227
+ .f16 .tt.semi{background-position:0 -3552px;}
228
+ .f16 .tv.semi{background-position:0 -3568px;}
229
+ .f16 .tw.semi{background-position:0 -3584px;}
230
+ .f16 .tz.semi{background-position:0 -3600px;}
231
+ .f16 .ua.semi{background-position:0 -3616px;}
232
+ .f16 .ug.semi{background-position:0 -3632px;}
233
+ .f16 .us.semi{background-position:0 -3648px;}
234
+ .f16 .uy.semi{background-position:0 -3664px;}
235
+ .f16 .uz.semi{background-position:0 -3680px;}
236
+ .f16 .va.semi{background-position:0 -3696px;}
237
+ .f16 .vc.semi{background-position:0 -3712px;}
238
+ .f16 .ve.semi{background-position:0 -3728px;}
239
+ .f16 .vg.semi{background-position:0 -3744px;}
240
+ .f16 .vi.semi{background-position:0 -3760px;}
241
+ .f16 .vn.semi{background-position:0 -3776px;}
242
+ .f16 .vu.semi{background-position:0 -3792px;}
243
+ .f16 .ws.semi{background-position:0 -3808px;}
244
+ .f16 .ye.semi{background-position:0 -3824px;}
245
+ .f16 .za.semi{background-position:0 -3840px;}
246
+ .f16 .zm.semi{background-position:0 -3856px;}
247
+ .f16 .zw.semi{background-position:0 -3872px;}