PageSourceSearch

https://assets.chemistryworld.com/common/store/cw_store_products.js?v=20260224900

js chemistryworld.com collected 2026-09-24 08:29:42 UTC 16,715 bytes, 430 lines download raw bytes

1const countriesData = {
2"AF": { name: "Afghanistan", region: "row" },
3"AX": { name: "Aland Islands", region: "row" },
4"AL": { name: "Albania", region: "row" },
5"DZ": { name: "Algeria", region: "row" },
6"AS": { name: "American Samoa", region: "row" },
7"AD": { name: "Andorra", region: "row" },
8"AO": { name: "Angola", region: "row" },
9"AI": { name: "Anguilla", region: "row" },
10"AQ": { name: "Antarctica", region: "row" },
11"AG": { name: "Antigua and Barbuda", region: "row" },
12"AR": { name: "Argentina", region: "row" },
13"AM": { name: "Armenia", region: "row" },
14"AW": { name: "Aruba", region: "row" },
15"AU": { name: "Australia", region: "au" },
16"AT": { name: "Austria", region: "eu" },
17"AZ": { name: "Azerbaijan", region: "row" },
18"BS": { name: "Bahamas", region: "row" },
19"BH": { name: "Bahrain", region: "row" },
20"BD": { name: "Bangladesh", region: "row" },
21"BB": { name: "Barbados", region: "row" },
22"BY": { name: "Belarus", region: "row" },
23"BE": { name: "Belgium", region: "eu" },
24"BZ": { name: "Belize", region: "row" },
25"BJ": { name: "Benin", region: "row" },
26"BM": { name: "Bermuda", region: "row" },
27"BT": { name: "Bhutan", region: "row" },
28"BO": { name: "Bolivia", region: "row" },
29"BQ": { name: "Bonaire, Sint Eustatius and Saba", region: "row" },
30"BA": { name: "Bosnia And Herzegovina", region: "row" },
31"BW": { name: "Botswana", region: "row" },
32"BV": { name: "Bouvet Island", region: "row" },
33"BR": { name: "Brazil", region: "row" },
34"IO": { name: "British Indian Ocean Territory", region: "row" },
35"BN": { name: "Brunei Darussalam", region: "row" },
36"BG": { name: "Bulgaria", region: "eu" },
37"BF": { name: "Burkina Faso", region: "row" },
38"BI": { name: "Burundi", region: "row" },
39"CV": { name: "Cabo Verde", region: "row" },
40"KH": { name: "Cambodia", region: "row" },
41"CM": { name: "Cameroon", region: "row" },
42"CA": { name: "Canada", region: "ca" },
43"KY": { name: "Cayman Islands", region: "row" },
44"CF": { name: "Central African Republic", region: "row" },
45"TD": { name: "Chad", region: "row" },
46"CL": { name: "Chile", region: "row" },
47"CN": { name: "China", region: "row" },
48"CX": { name: "Christmas Island", region: "row" },
49"CC": { name: "Cocos (Keeling) Islands", region: "row" },
50"CO": { name: "Colombia", region: "row" },
51"KM": { name: "Comoros", region: "row" },
52"CG": { name: "Congo", region: "row" },
53"CD": { name: "Congo, Democratic Republic of the", region: "row" },
54"CK": { name: "Cook Islands", region: "row" },
55"CR": { name: "Costa Rica", region: "row" },
56"CI": { name: "Cote D'Ivoire", region: "row" },
57"HR": { name: "Croatia", region: "eu" },
58"CW": { name: "Curacao", region: "row" },
59"CY": { name: "Cyprus", region: "eu" },
60"CZ": { name: "Czechia", region: "eu" },
61"DK": { name: "Denmark", region: "eu" },
62"DJ": { name: "Djibouti", region: "row" },
63"DM": { name: "Dominica", region: "row" },
64"DO": { name: "Dominican Republic", region: "row" },
65"EC": { name: "Ecuador", region: "row" },
66"EG": { name: "Egypt", region: "row" },
67"SV": { name: "El Salvador", region: "row" },
68"GQ": { name: "Equatorial Guinea", region: "row" },
69"ER": { name: "Eritrea", region: "row" },
70"EE": { name: "Estonia", region: "eu" },
71"ET": { name: "Ethiopia", region: "row"},
72"SZ": {name: "Eswatini (Swaziland)", region: "row" },
73"FK": { name: "Falkland Islands (Malvinas)", region: "row" },
74"FO": { name: "Faroe Islands", region: "row" },
75"FJ": { name: "Fiji", region: "row" },
76"FI": { name: "Finland", region: "eu" },
77"FR": { name: "France", region: "eu" },
78"GF": { name: "French Guiana", region: "row" },
79"PF": { name: "French Polynesia", region: "row" },
80"TF": { name: "French Southern Territories", region: "row" },
81"GA": { name: "Gabon", region: "row" },
82"GM": { name: "Gambia", region: "row" },
83"GE": { name: "Georgia", region: "row" },
84"DE": { name: "Germany", region: "eu" },
85"GH": { name: "Ghana", region: "row" },
86"GI": { name: "Gibraltar", region: "row" },
87"GR": { name: "Greece", region: "eu" },
88"GL": { name: "Greenland", region: "row" },
89"GD": { name: "Grenada", region: "row" },
90"GP": { name: "Guadeloupe", region: "row" },
91"GU": { name: "Guam", region: "row" },
92"GT": { name: "Guatemala", region: "row" },
93"GG": { name: "Guernsey", region: "row" },
94"GN": { name: "Guinea", region: "row" },
95"GW": { name: "Guinea-Bissau", region: "row" },
96"GY": { name: "Guyana", region: "row" },
97"HT": { name: "Haiti", region: "row" },
98"HM": { name: "Heard Island and Mcdonald Islands", region: "row" },
99"VA": { name: "Holy See (Vatican City State)", region: "row" },
100"HN": { name: "Honduras", region: "row" },
101"HK": { name: "Hong Kong", region: "row" },
102"HU": { name: "Hungary", region: "eu" },
103"IS": { name: "Iceland", region: "row" },
104"IN": { name: "India", region: "in" },
105"ID": { name: "Indonesia", region: "row" },
106"IQ": { name: "Iraq", region: "row" },
107"IE": { name: "Ireland", region: "eu" },
108"IM": { name: "Isle of Man", region: "gb" },
109"IL": { name: "Israel", region: "row" },
110"IT": { name: "Italy", region: "eu" },
111"JM": { name: "Jamaica", region: "row" },
112"JP": { name: "Japan", region: "row" },
113"JE": { name: "Jersey", region: "row" },
114"JO": { name: "Jordan", region: "row" },
115"KZ": { name: "Kazakhstan", region: "row" },
116"KE": { name: "Kenya", region: "row" },
117"KI": { name: "Kiribati", region: "row" },
118"KW": { name: "Kuwait", region: "row" },
119"KG": { name: "Kyrgyzstan", region: "row" },
120"LA": { name: "Lao People's Democratic Republic", region: "row" },
121"LV": { name: "Latvia", region: "eu" },
122"LB": { name: "Lebanon", region: "row" },
123"LS": { name: "Lesotho", region: "row" },
124"LR": { name: "Liberia", region: "row" },
125"LY": { name: "Libya", region: "row" },
126"LI": { name: "Liechtenstein", region: "row" },
127"LT": { name: "Lithuania", region: "eu" },
128"LU": { name: "Luxembourg", region: "eu" },
129"MO": { name: "Macao", region: "row" },
130"MG": { name: "Madagascar", region: "row" },
131"MW": { name: "Malawi", region: "row" },
132"MY": { name: "Malaysia", region: "row" },
133"MV": { name: "Maldives", region: "row" },
134"ML": { name: "Mali", region: "row" },
135"MT": { name: "Malta", region: "eu" },
136"MH": { name: "Marshall Islands", region: "row" },
137"MQ": { name: "Martinique", region: "row" },
138"MR": { name: "Mauritania", region: "row" },
139"MU": { name: "Mauritius", region: "row" },
140"YT": { name: "Mayotte", region: "row" },
141"MX": { name: "Mexico", region: "row" },
142"FM": { name: "Micronesia, Federated States of", region: "row" },
143"MD": { name: "Moldova, Republic Of", region: "row" },
144"MC": { name: "Monaco", region: "row" },
145"MN": { name: "Mongolia", region: "row" },
146"ME": { name: "Montenegro", region: "row" },
147"MS": { name: "Montserrat", region: "row" },
148"MA": { name: "Morocco", region: "row" },
149"MZ": { name: "Mozambique", region: "row" },
150"NA": { name: "Namibia", region: "row" },
151"NR": { name: "Nauru", region: "row" },
152"NP": { name: "Nepal", region: "row" },
153"NL": { name: "Netherlands", region: "eu" },
154"NC": { name: "New Caledonia", region: "row" },
155"NZ": { name: "New Zealand", region: "row" },
156"NI": { name: "Nicaragua", region: "row" },
157"NE": { name: "Niger", region: "row" },
158"NG": { name: "Nigeria", region: "row" },
159"NU": { name: "Niue", region: "row" },
160"NF": { name: "Norfolk Island", region: "row" },
161"MK": { name: "North Macedonia", region: "row" },
162"MP": { name: "Northern Mariana Islands", region: "row" },
163"NO": { name: "Norway", region: "row" },
164"OM": { name: "Oman", region: "row" },
165"PK": { name: "Pakistan", region: "row" },
166"PW": { name: "Palau", region: "row" },
167"PS": { name: "Palestine, State of", region: "row" },
168"PA": { name: "Panama", region: "row" },
169"PG": { name: "Papua New Guinea", region: "row" },
170"PY": { name: "Paraguay", region: "row" },
171"PE": { name: "Peru", region: "row" },
172"PH": { name: "Philippines", region: "row" },
173"PN": { name: "Pitcairn", region: "row" },
174"PL": { name: "Poland", region: "eu" },
175"PT": { name: "Portugal", region: "eu" },
176"PR": { name: "Puerto Rico", region: "row" },
177"QA": { name: "Qatar", region: "row" },
178"RE": { name: "Reunion", region: "row" },
179"RO": { name: "Romania", region: "eu" },
180"RU": { name: "Russian Federation", region: "row" },
181"RW": { name: "Rwanda", region: "row" },
182"BL": { name: "Saint Barthelemy", region: "row" },
183"SH": { name: "Saint Helena, Ascension and Tristan Da Cunha", region: "row" },
184"KN": { name: "Saint Kitts and Nevis", region: "row" },
185"LC": { name: "Saint Lucia", region: "row" },
186"MF": { name: "Saint Martin (French Part)", region: "row" },
187"PM": { name: "Saint Pierre and Miquelon", region: "row" },
188"VC": { name: "Saint Vincent and the Grenadines", region: "row" },
189"WS": { name: "Samoa", region: "row" },
190"SM": { name: "San Marino", region: "row" },
191"ST": { name: "Sao Tome and Principe", region: "row" },
192"SA": { name: "Saudi Arabia", region: "row" },
193"SN": { name: "Senegal", region: "row" },
194"RS": { name: "Serbia", region: "row" },
195"SC": { name: "Seychelles", region: "row" },
196"SL": { name: "Sierra Leone", region: "row" },
197"SG": { name: "Singapore", region: "row" },
198"SX": { name: "Sint Maarten (Dutch Part)", region: "row" },
199"SK": { name: "Slovakia", region: "eu" },
200"SI": { name: "Slovenia", region: "eu" },
201"SB": { name: "Solomon Islands", region: "row" },
202"SO": { name: "Somalia", region: "row" },
203"ZA": { name: "South Africa", region: "za" },
204"GS": { name: "South Georgia and the South Sandwich Islands", region: "row" },
205"KR": { name: "South Korea", region: "kr" },
206"ES": { name: "Spain", region: "eu" },
207"LK": { name: "Sri Lanka", region: "row" },
208"SR": { name: "Suriname", region: "row" },
209"SJ": { name: "Svalbard and Jan Mayen", region: "row" },
210"SE": { name: "Sweden", region: "eu" },
211"CH": { name: "Switzerland", region: "row" },
212"TW": { name: "Taiwan, Province of China", region: "row" },
213"TJ": { name: "Tajikistan", region: "row" },
214"TZ": { name: "Tanzania", region: "row" },
215"TH": { name: "Thailand", region: "row" },
216"TL": { name: "Timor-Leste", region: "row" },
217"TG": { name: "Togo", region: "row" },
218"TK": { name: "Tokelau", region: "row" },
219"TO": { name: "Tonga", region: "row" },
220"TT": { name: "Trinidad and Tobago", region: "row" },
221"TN": { name: "Tunisia", region: "row" },
222"TR": { name: "Turkey", region: "row" },
223"TM": { name: "Turkmenistan", region: "row" },
224"TC": { name: "Turks and Caicos Islands", region: "row" },
225"TV": { name: "Tuvalu", region: "row" },
226"UG": { name: "Uganda", region: "row" },
227"UA": { name: "Ukraine", region: "row" },
228"AE": { name: "United Arab Emirates", region: "row" },
229"GB": { name: "United Kingdom", region: "gb" },
230"UM": { name: "United States Minor Outlying Islands", region: "row" },
231"US": { name: "United States of America", region: "us" },
232"UY": { name: "Uruguay", region: "row" },
233"UZ": { name: "Uzbekistan", region: "row" },
234"VU": { name: "Vanuatu", region: "row" },
235"VE": { name: "Venezuela", region: "row" },
236"VN": { name: "Viet Nam", region: "row" },
237"VG": { name: "Virgin Islands (British)", region: "row" },
238"VI": { name: "Virgin Islands (US)", region: "row" },
239"WF": { name: "Wallis and Futuna", region: "row" },
240"EH": { name: "Western Sahara", region: "row" },
241"YE": { name: "Yemen", region: "row" },
242"ZM": { name: "Zambia", region: "row" },
243"ZW": { name: "Zimbabwe", region: "row" }
244};
245const productsData = {
246  "pass": {
247    displayName: "Pass",
248    billingPeriod: "for 30 days",
249    regions: {
250      gb: { price: 8, currency: "GBP", productCode: "passUk" },
251      us: { price: 10, currency: "USD", productCode: "passUs" },
252      ca: { price: 15, currency: "CAD", productCode: "passCa" },
253      au: { price: 15, currency: "AUD", productCode: "passAu" },
254      in: { price: 600, currency: "INR", productCode: "passIn" },
255      kr: { price: 8, currency: "GBP", productCode: "passKr" },
256      za: { price: 8, currency: "GBP", productCode: "passZa" },
257      eu: { price: 9, currency: "EUR", productCode: "passEu" },
258      row: { price: 8, currency: "GBP", productCode: "passRow" }
259    }
260  },
261  "annual": {
262    displayName: "Annual",
263    billingPeriod: "per year",
264    regions: {
265      gb: { price: 60, currency: "GBP", productCode: "annUk" },
266      us: { price: 80, currency: "USD", productCode: "annUs" },
267      ca: { price: 110, currency: "CAD", productCode: "annCa" },
268      au: { price: 115, currency: "AUD", productCode: "annAu" },
269      in: { price: 3000, currency: "INR", productCode: "annIn" },
270      kr: { price: 60, currency: "GBP", productCode: "annKr" },
271      za: { price: 60, currency: "GBP", productCode: "annZa" },
272      eu: { price: 70, currency: "EUR", productCode: "annEu" },
273      row: { price: 60, currency: "GBP", productCode: "annRow" }
274    }
275  },
276  "monthly": {
277    displayName: "Monthly",
278    billingPeriod: "per month",
279    regions: {
280      gb: { price: 6, currency: "GBP", productCode: "monUk" },
281      us: { price: 8, currency: "USD", productCode: "monUs" },
282      ca: { price: 11, currency: "CAD", productCode: "monCa" },
283      au: { price: 12, currency: "AUD", productCode: "monAu" },
284      in: { price: 500, currency: "INR", productCode: "monIn" },
285      kr: { price: 6, currency: "GBP", productCode: "monKr" },
286      za: { price: 6, currency: "GBP", productCode: "monZa" },
287      eu: { price: 7, currency: "EUR", productCode: "monEu" },
288      row: { price: 6, currency: "GBP", productCode: "monRow" }
289    }
290  }
291};
292const currencyMeta = {
293  GBP: {
294    symbol: "£",
295    symbolPosition: "before",
296    decimals: 2
297  },
298  USD: {
299    symbol: "$",
300    symbolPosition: "before",
301    decimals: 2
302  },
303  EUR: {
304    symbol: "€",
305    symbolPosition: "before",
306    decimals: 2
307  },
308  CAD: {
309    symbol: "CA$",
310    symbolPosition: "before",
311    decimals: 2
312  },
313  AUD: {
314    symbol: "AU$",
315    symbolPosition: "before",
316    decimals: 2
317  },
318  INR: {
319    symbol: "₹",
320    symbolPosition: "before",
321    decimals: 2
322  }
323};
324const taxMeta = {
325  gb: "none",
326  eu: "exclusive",
327  au: "none",
328  in: "inclusive",
329  kr: "inclusive",
330  za: "inclusive",
331  us: "none",
332  ca: "exclusive",
333  row: "none"
334};
335window.dataLayer = window.dataLayer || [];
336window.emeAppState = window.emeAppState || {};
337emeAppState.selectedCountryCode = "GB"; // default
338emeAppState.selectedRegion = "gb";       // default
339
340// Push geo to dataLayer
341function geo_init() {
342  var getCountry = function () {
343    if (typeof ct.getCountryForTimezone === "function") {
344      return ct.getCountryForTimezone(
345        Intl.DateTimeFormat().resolvedOptions().timeZone
346      );
347    }
348    return undefined;
349  };
350
351  // Push geo once on page load
352  var pushGeo = function () {
353    var country = getCountry();
354    window.dataLayer = window.dataLayer || [];
355    window.dataLayer.push({ Geo: country });
356  };
357   pushGeo();
358}
359// Get country/region from timezone
360function getRegion() {
361    if (typeof ct.getCountryForTimezone === "function") {
362      emeAppState.selectedCountryCode = ct.getCountryForTimezone(Intl.DateTimeFormat().resolvedOptions().timeZone);
363      emeAppState.selectedCountryCode = emeAppState.selectedCountryCode.id;  
364      emeAppState.selectedRegion = countriesData[emeAppState.selectedCountryCode]?.region.toLowerCase();
365    } else {
366      emeAppState.selectedCountryCode = "GB";
367      emeAppState.selectedRegion = "gb"
368    }
369  };
370// Price display
371function formatPrice(amount, currency) {
372  const meta = currencyMeta[currency];
373  if (!meta) return amount.toString();
374
375  const fixedAmount = Number.isInteger(amount)
376    ? amount.toString()
377    : amount.toFixed(meta.decimals);
378
379  return meta.symbolPosition === "before"
380    ? `${meta.symbol}${fixedAmount}`
381    : `${fixedAmount}${meta.symbol}`;
382}
383// Tax display
384function formatTaxText(region) {
385  const taxDisplay = taxMeta[region] || "none";
386  const labels = {
387    inclusive: "incl. tax",
388    exclusive: "excl. tax",
389    none: ""
390  };
391  return labels[taxDisplay] || "";
392}
393//Build local prices
394function buildLocalSubPrices() {
395  const prices = {};
396
397  ['pass', 'monthly', 'annual'].forEach(productKey => {
398    const product = productsData[productKey];
399    const regionData = product?.regions[emeAppState.selectedRegion];
400
401    if (!regionData) return;
402
403    prices[productKey] = {
404      rawPrice: regionData.price,
405      currency: regionData.currency,
406      formattedPrice: formatPrice(regionData.price, regionData.currency),
407      billingPeriod: product.billingPeriod,
408      taxText: formatTaxText(emeAppState.selectedRegion)
409    };
410  });
411
412  return prices;
413}
414// Push price info to dataLayer
415function pushLocalSubPrices() {
416  const localSubPrices = buildLocalSubPrices();
417  const localSubPass = localSubPrices.pass?.formattedPrice || "";
418  const localSubMonthly = localSubPrices.monthly?.formattedPrice || "";
419  const localSubAnnual = localSubPrices.annual?.formattedPrice || "";
420  window.dataLayer = window.dataLayer || [];
421  window.dataLayer.push({
422     localSubPrices,
423     localSubPass,
424     localSubMonthly,
425     localSubAnnual
426  });
427}
428geo_init();
429getRegion();
430pushLocalSubPrices()

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.