File size: 3,809 Bytes
d70361b
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
// Small country dial-code list used by the phone-number inputs on the login,
// register, and profile pages. Keep India first so it's the default.
window.DDA_COUNTRIES = [
  { code: 'IN', name: 'India', dial: '+91' },
  { code: 'US', name: 'United States', dial: '+1' },
  { code: 'CA', name: 'Canada', dial: '+1' },
  { code: 'GB', name: 'United Kingdom', dial: '+44' },
  { code: 'AU', name: 'Australia', dial: '+61' },
  { code: 'NZ', name: 'New Zealand', dial: '+64' },
  { code: 'AE', name: 'United Arab Emirates', dial: '+971' },
  { code: 'SA', name: 'Saudi Arabia', dial: '+966' },
  { code: 'SG', name: 'Singapore', dial: '+65' },
  { code: 'MY', name: 'Malaysia', dial: '+60' },
  { code: 'BD', name: 'Bangladesh', dial: '+880' },
  { code: 'LK', name: 'Sri Lanka', dial: '+94' },
  { code: 'NP', name: 'Nepal', dial: '+977' },
  { code: 'PK', name: 'Pakistan', dial: '+92' },
  { code: 'DE', name: 'Germany', dial: '+49' },
  { code: 'FR', name: 'France', dial: '+33' },
  { code: 'IT', name: 'Italy', dial: '+39' },
  { code: 'ES', name: 'Spain', dial: '+34' },
  { code: 'NL', name: 'Netherlands', dial: '+31' },
  { code: 'BE', name: 'Belgium', dial: '+32' },
  { code: 'CH', name: 'Switzerland', dial: '+41' },
  { code: 'SE', name: 'Sweden', dial: '+46' },
  { code: 'NO', name: 'Norway', dial: '+47' },
  { code: 'DK', name: 'Denmark', dial: '+45' },
  { code: 'FI', name: 'Finland', dial: '+358' },
  { code: 'IE', name: 'Ireland', dial: '+353' },
  { code: 'PT', name: 'Portugal', dial: '+351' },
  { code: 'PL', name: 'Poland', dial: '+48' },
  { code: 'CZ', name: 'Czechia', dial: '+420' },
  { code: 'RU', name: 'Russia', dial: '+7' },
  { code: 'TR', name: 'Türkiye', dial: '+90' },
  { code: 'IL', name: 'Israel', dial: '+972' },
  { code: 'EG', name: 'Egypt', dial: '+20' },
  { code: 'ZA', name: 'South Africa', dial: '+27' },
  { code: 'NG', name: 'Nigeria', dial: '+234' },
  { code: 'KE', name: 'Kenya', dial: '+254' },
  { code: 'GH', name: 'Ghana', dial: '+233' },
  { code: 'BR', name: 'Brazil', dial: '+55' },
  { code: 'MX', name: 'Mexico', dial: '+52' },
  { code: 'AR', name: 'Argentina', dial: '+54' },
  { code: 'CL', name: 'Chile', dial: '+56' },
  { code: 'CO', name: 'Colombia', dial: '+57' },
  { code: 'JP', name: 'Japan', dial: '+81' },
  { code: 'KR', name: 'South Korea', dial: '+82' },
  { code: 'CN', name: 'China', dial: '+86' },
  { code: 'HK', name: 'Hong Kong', dial: '+852' },
  { code: 'TW', name: 'Taiwan', dial: '+886' },
  { code: 'TH', name: 'Thailand', dial: '+66' },
  { code: 'VN', name: 'Vietnam', dial: '+84' },
  { code: 'ID', name: 'Indonesia', dial: '+62' },
  { code: 'PH', name: 'Philippines', dial: '+63' },
];

/** Populate a <select> with dial codes; keeps the current value if still present. */
window.populateCountrySelect = function (selectEl, defaultDial) {
  if (!selectEl || !window.DDA_COUNTRIES) return;
  const previous = selectEl.value || defaultDial || '+91';
  selectEl.innerHTML = window.DDA_COUNTRIES
    .map((c) => `<option value="${c.dial}" data-name="${c.name}">${c.dial} &nbsp; ${c.name}</option>`)
    .join('');
  const match = window.DDA_COUNTRIES.find((c) => c.dial === previous);
  selectEl.value = match ? match.dial : (defaultDial || '+91');
};

/** Split an E.164 string like '+919876543210' into { dial, local }. */
window.splitPhoneE164 = function (raw) {
  const p = String(raw || '').trim();
  if (!p.startsWith('+')) return { dial: '+91', local: p.replace(/\D/g, '') };
  const digits = p.replace(/\D/g, '');
  const options = (window.DDA_COUNTRIES || []).map((c) => c.dial.replace('+', ''));
  options.sort((a, b) => b.length - a.length);
  for (const d of options) {
    if (digits.startsWith(d)) return { dial: '+' + d, local: digits.slice(d.length) };
  }
  return { dial: '+91', local: digits };
};