PageSourceSearch

https://www.weathercrave.co.uk/weather-services/info/about-meteo-consult

html weathercrave.co.uk collected 2026-10-02 23:10:22 UTC 101,894 bytes, 2,072 lines download raw bytes

1<!DOCTYPE html>
2<html lang="en">
3<head>
4                
5    <meta charset="utf-8"/>
6    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=2, interactive-widget=resizes-content, viewport-fit=cover"/>
7
8
9        <link rel="preload" href="https://www.weathercrave.co.uk/build/main_redesign.bcb0f22eb3707182578d.css" as="style" fetchpriority="high"/>
10
11    <link rel="preload" href="https://cdn.appconsent.io/loader.js" as="script"/>
12    <link rel="preload" href="https://cdn.hubvisor.io/wrapper/01BYK28ENND8X5G8K0AJ2DPK9E/hubvisor-lcm.js" as="script"/>
13
14        <link rel="preconnect" href="https://c.client-context.hubvisor.io"/>
15
16        
17        
18        <link rel="preconnect" href="https://securepubads.g.doubleclick.net">
19
20        
21                
22                
23    <link rel="preload" href="//static5.mclcm.net/lcm2018/fonts/nunito_sans_v8/regular_variable.woff2" as="font"
24          type="font/woff2" crossorigin
25          fetchpriority="high"
26    >
27    <link rel="preload" href="//static5.mclcm.net/lcm2018/fonts/nunito_sans_v8/italic_variable.woff2" as="font"
28          type="font/woff2" crossorigin
29          fetchpriority="high"
30    >
31        <link rel="preload" href="https://www.weathercrave.co.uk/build/services.bf5b1645d38003de9b6b.css" as="style"/>
32    <link rel="preload" href="https://www.weathercrave.co.uk/build/home_section.d2660212f9c187badf1e.css" as="style"/>
33
34
35    <title>About METEO CONSULT - The Weather Crave</title>
36<meta name="description" lang="en" content="Overview of METEO CONSULT, France&#039;s first private company specializing in weather forecasts and studies, operating through various distribution channels."/>
37<meta name="robots" content="index, follow"/>
38<link rel="canonical" href="https://www.weathercrave.co.uk/weather-services/info/about-meteo-consult"/>
39      <link rel="alternate" href="https://www.lachainemeteo.com/services-meteo/info/a-propos-de-meteo-consult" hreflang="fr" />
40    <link rel="alternate" href="https://www.lachainemeteo.ca/services-meteo/info/a-propos-de-meteo-consult" hreflang="fr-ca" />
41    <link rel="alternate" href="https://www.lachainemeteo.be/services-meteo/info/a-propos-de-meteo-consult" hreflang="fr-be" />
42    <link rel="alternate" href="https://www.lachainemeteo.ch/services-meteo/info/a-propos-de-meteo-consult" hreflang="fr-ch" />
43    <link rel="alternate" href="https://www.weathercrave.com/weather-services/info/about-meteo-consult" hreflang="x-default" />
44    <link rel="alternate" href="https://www.weathercrave.co.uk/weather-services/info/about-meteo-consult" hreflang="en-gb" />
45    <link rel="alternate" href="https://www.weathercrave.ca/weather-services/info/about-meteo-consult" hreflang="en-ca" />
46    <link rel="alternate" href="https://www.meteoconsult.es/servicios-meteo/info/acerca-de-meteo-consult" hreflang="es" />
47    <link rel="alternate" href="https://www.meteoconsult.it/servizi-meteo/info/a-proposito-di-meteo-consult" hreflang="it" />
48
49
50
51
52<meta property="og:site_name" content="Weather Crave"/>
53<meta property="og:title" content="About METEO CONSULT - The Weather Crave"/>
54<meta property="og:type" content="website"/>
55<meta property="og:url" content="https://www.weathercrave.co.uk/weather-services/info/about-meteo-consult"/>
56<meta property="og:description" content="Overview of METEO CONSULT, France's first private company specializing in weather forecasts and studies, operating through various distribution channels."/>
57    <meta property="og:image" content="https://static5.mclcm.net/lcm2018/int/logo_lcm_partage.jpg"/>
58
59<meta name="twitter:card" content="summary_large_image"/>
60<meta name="twitter:site" content="@lachainemeteo"/>
61    <meta name="twitter:creator" content="@lachainemeteo">
62<meta name="twitter:title" content="About METEO CONSULT - The Weather Crave"/>
63<meta name="twitter:description" content="Overview of METEO CONSULT, France's first private company specializing in weather forecasts and studies, operating through various distribution channels."/>
64
65
66    <meta property="fb:app_id" content="263364420578"/>
67
68<script type="application/ld+json">
69    {
70        "@context": "http://schema.org",
71        "@type": "Organization",
72        "name": "Weather Crave",
73        "url": "https://www.weathercrave.co.uk/weather-forecast-united-kingdom/weather-forecast-united-kingdom-today",
74        "logo":
75        {
76            "@context": "http://schema.org",
77            "@type": "ImageObject",
78            "url": "https://static5.mclcm.net/lcm2018/en/common/logo.png"
79        }
80    }
81
82</script>
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99    
99<script>
100        
101
102        window.lcm = {};
103        window.googletag = window.googletag || {cmd: []};window.logMeasure = () => {
104};
105window.logMeasureEnd = () => {
106};
107window.stopMeasurements = () => {
108};
109
110
111const builtFilesMap = new Map([['menu_core', 'https://www.weathercrave.co.uk/build/menu_core.e8881768343ec6fc33e2.js'],['panel_manager', 'https://www.weathercrave.co.uk/build/panel_manager.836ef45b083253b332ea.js'],['menu_client', 'https://www.weathercrave.co.uk/build/menu_client.e6f7f783152e10b0adb8.js'],['menu_small', 'https://www.weathercrave.co.uk/build/menu_small.218d0e08a9e17796974e.js'],['popin', 'https://www.weathercrave.co.uk/build/popin.72634c394f352a36920b.js'],['popin_store', 'https://www.weathercrave.co.uk/build/popin_store.3e33f643d4103bf7e4aa.js'],['slider_store', 'https://www.weathercrave.co.uk/build/slider_store.31b5fc2b0f5305ffde3a.js'],['cookies', 'https://www.weathercrave.co.uk/build/cookies.3ef71970b4b16e2eb6f2.js'],['share', 'https://www.weathercrave.co.uk/build/share.18d4d459d4bcfb086379.js'],['favorite', 'https://www.weathercrave.co.uk/build/favorite.6a3c97d4c2aafdde3db3.js'],['user', 'https://www.weathercrave.co.uk/build/user.a84220064da9b811e50a.js'],['shortcut', 'https://www.weathercrave.co.uk/build/shortcut.2f0cc7b0092917dca66d.js'],['bookmark', 'https://www.weathercrave.co.uk/build/bookmark.18c1bd0445e6c4659a81.js'],['slider', 'https://www.weathercrave.co.uk/build/slider.43f075b1c6c2e86040a9.js'],['historical', 'https://www.weathercrave.co.uk/build/historical.0dbe5280551188c16285.js'],['video', 'https://www.weathercrave.co.uk/build/video.8bc950cc72f37f1f4a88.js'],['alert', 'https://www.weathercrave.co.uk/build/alert.677954e727bd5c2f7a1e.js'],['fonts', 'https://www.weathercrave.co.uk/build/fonts.c8a52773dab1a212109c.js'],['device', 'https://www.weathercrave.co.uk/build/device.3af0138b6fbbd68e6a2b.js'],['perf_client', 'https://www.weathercrave.co.uk/build/perf_client.9ee097c91f1d974ae928.js'],['autocomplete', 'https://www.weathercrave.co.uk/build/autocomplete.75dbc15609bd675ce6d0.js'],['autocomplete_header', 'https://www.weathercrave.co.uk/build/autocomplete_header.3ff865a383818d56735c.js'],['autocomplete_section', 'https://www.weathercrave.co.uk/build/autocomplete_section.a7cb17f18eaabd4562df.js'],['timetable', 'https://www.weathercrave.co.uk/build/timetable.11ff0cff6d8ef985839a.js'],['reporter', 'https://www.weathercrave.co.uk/build/reporter.aa20337c3d1e2053f534.js'],['video_news', 'https://www.weathercrave.co.uk/build/video_news.b56281473f87560846a8.js'],['meteomail', 'https://www.weathercrave.co.uk/build/meteomail.9339f35ff4c196dec264.js'],['top_poi', 'https://www.weathercrave.co.uk/build/top_poi.85c027aea262d34b6493.js'],['geo_history', 'https://www.weathercrave.co.uk/build/geo_history.e8182ab77ad6a0015deb.js'],['top_section', 'https://www.weathercrave.co.uk/build/top_section.130525c25bd8a4b8ba9e.js'],['top_section_abroad', 'https://www.weathercrave.co.uk/build/top_section_abroad.5f81674ff79b99a96f03.js'],['top_section_main_place', 'https://www.weathercrave.co.uk/build/top_section_main_place.e1157c7cd11de2a570b0.js'],['main_video', 'https://www.weathercrave.co.uk/build/main_video.c36c51f8e119e9e380a6.js'],['serie_video', 'https://www.weathercrave.co.uk/build/serie_video.2db18b4fa379e622df68.js'],['near_cities_forecast', 'https://www.weathercrave.co.uk/build/near_cities_forecast.9ae7e1ff45b4900a2863.js'],['live_core', 'https://www.weathercrave.co.uk/build/live_core.5da167fa27827d45c555.js'],['live_5min', 'https://www.weathercrave.co.uk/build/live_5min.95838bec756d1afeb032.js'],['live_graph', 'https://www.weathercrave.co.uk/build/live_graph.232b659f25296e8de125.js'],['live_nav', 'https://www.weathercrave.co.uk/build/live_nav.24a1ab167596e4908fc9.js'],['edito_health', 'https://www.weathercrave.co.uk/build/edito_health.c34788a2b19e1c1fa8f5.js'],['edito_beach', 'https://www.weathercrave.co.uk/build/edito_beach.2640cf6b0e9b31e01867.js'],['edito_climate', 'https://www.weathercrave.co.uk/build/edito_climate.b93fe52bb53cbd60ae8f.js'],['climate_info', 'https://www.weathercrave.co.uk/build/climate_info.daa1144d8a9a09baed29.js'],['comparator_info', 'https://www.weathercrave.co.uk/build/comparator_info.16f571412525932fe723.js'],['edito_live', 'https://www.weathercrave.co.uk/build/edito_live.ee6ab40449af91e5b9bc.js'],['ias', 'https://www.weathercrave.co.uk/build/ias.a438a7ea70ec35b40c1b.js'],['gam', 'https://www.weathercrave.co.uk/build/gam.f6e4a97c6cdc2bd37b9f.js'],['cmp', 'https://www.weathercrave.co.uk/build/cmp.94fac8b9686b06797c7f.js'],['ppid', 'https://www.weathercrave.co.uk/build/ppid.b5948df9f3
1111e32057107.js'],['oneplusx', 'https://www.weathercrave.co.uk/build/oneplusx.2cd5bde319a541983478.js'],['mc_lcm_map', 'https://www.weathercrave.co.uk/build/mc_lcm_map.a017605a77bbf3fb100d.js'],['user_agent', 'https://www.weathercrave.co.uk/build/user_agent.e0f288e54dedc0043f1d.js'],['weather_news', 'https://www.weathercrave.co.uk/build/weather_news.0005a5460a026f62c12d.js'],['log_ajax', 'https://www.weathercrave.co.uk/build/log_ajax.8ec0ab058c33fcef77b0.js'],['refresh', 'https://www.weathercrave.co.uk/build/refresh.2c8fddcd7643e275cc46.js'],['profile_user', 'https://www.weathercrave.co.uk/build/profile_user.5e959935197272509847.js'],['favorites_user', 'https://www.weathercrave.co.uk/build/favorites_user.a6bf6d1455ff34663bc4.js'],['meteomails_user', 'https://www.weathercrave.co.uk/build/meteomails_user.31d6cfe0d16ae931b73c.js'],['pictures_user', 'https://www.weathercrave.co.uk/build/pictures_user.8607b8d2486a6d6adce6.js'],['subscriptions_user', 'https://www.weathercrave.co.uk/build/subscriptions_user.4dd4ae2966201cecb814.js'],['means_payment_user', 'https://www.weathercrave.co.uk/build/means_payment_user.b483766fab8156d2fd63.js'],['login_user', 'https://www.weathercrave.co.uk/build/login_user.0e2b4965098c096a4b85.js'],['paypal', 'https://www.weathercrave.co.uk/build/paypal.636aade3c06812f8eabd.js'],['form_element', 'https://www.weathercrave.co.uk/build/form_element.8ba7974840f6ca1e84b1.js'],['check_password', 'https://www.weathercrave.co.uk/build/check_password.b973bd664b2f7c643393.js'],['collapse_list', 'https://www.weathercrave.co.uk/build/collapse_list.8106d888b1eade1e686f.js'],['top_beach', 'https://www.weathercrave.co.uk/build/top_beach.a67995d53a461a77d7c9.js'],['dataset_filter_items', 'https://www.weathercrave.co.uk/build/dataset_filter_items.43c918d8b51c64e4760e.js'],['description_serie', 'https://www.weathercrave.co.uk/build/description_serie.1c72ad8d2f2f874ae23c.js'],['media_reporter', 'https://www.weathercrave.co.uk/build/media_reporter.9139c185e96ca914ef88.js'],['popin_vip_teaser', 'https://www.weathercrave.co.uk/build/popin_vip_teaser.05d605e4535527667470.js'],['utiq', 'https://www.weathercrave.co.uk/build/utiq.a5e03dccb82810a0757a.js'],['webcam', 'https://www.weathercrave.co.uk/build/webcam.b00e053832f7d5b45506.js'],['table_hover', 'https://www.weathercrave.co.uk/build/table_hover.094d6d0777f9099b9bff.js'],['table_scroll', 'https://www.weathercrave.co.uk/build/table_scroll.310af745c1e6a1fb851e.js'],['remarkable_phenomena', 'https://www.weathercrave.co.uk/build/remarkable_phenomena.cc26cc7e2e319a9dff0e.js'],['legendTrip', 'https://www.weathercrave.co.uk/build/legendTrip.a119126e5fb4740db7a5.js'],['vod', 'https://www.weathercrave.co.uk/build/vod.772af801a9cee9a47211.js'],['hour_by_hour_day', 'https://www.weathercrave.co.uk/build/hour_by_hour_day.15c5af479b36e3b1d8dd.js'],['hour_by_hour', 'https://www.weathercrave.co.uk/build/hour_by_hour.3056fe3521e638df3501.js'],['mails_user', 'https://www.weathercrave.co.uk/build/mails_user.f43a275e516240bd30cb.js'],['popin_mails_user', 'https://www.weathercrave.co.uk/build/popin_mails_user.8e86f9b7133ace150c49.js'],['alertmail', 'https://www.weathercrave.co.uk/build/alertmail.9339f35ff4c196dec264.js'],['flash', 'https://www.weathercrave.co.uk/build/flash.1a8dee6cc026cb5f3740.js'],['menu_alert', 'https://www.weathercrave.co.uk/build/menu_alert.1ccbd46613154f7db3fa.js']]);
112class BuiltFilesAccessor {
113    #a;
114
115    constructor(e) {
116        this.#a = e ?? new Map
117    }
118
119    getFileName(e) {
120        let s = this.#a.get(e);
121        if (!s) throw Error(`Can't find "${e}" in built list.`);
122        return s
123    }
124}const filesAccessor = new BuiltFilesAccessor(builtFilesMap);builtFiles = {getFileName: filesAccessor.getFileName.bind(filesAccessor)};function _needsAuth(a) {
125    try {
126        if (/^https?:\/\//i.test(a)) return /^(https?:\/\/)(phl-|pp-)/i.test(a);
127        const b = a.split('?')[0];
128        if (/\/(phl-|pp-)\//i.test(b) || /^(phl-|pp-)\//i.test(b)) return true;
129    } catch (_) {}
130    return false;
131}
132
133class FetchWrapper {
134    #a = new Map;
135    #b = window.location.origin;
136
137    async fetch(e, t = {}) {
138        let n = !t.method || "GET" === t.method.toUpperCase();
139        if (n && this.#a.has(e)) {
140            return this.#a.get(e).then(e => e.clone());
141        }
142        let o = n ? "GET" : t.method.toUpperCase(),
143            a = t.body || "",
144            s = n ? e : `${o}:${e}:${a instanceof FormData ? "" : a}`;
145        if (!n && this.#a.has(s)) {
146            return this.#a.get(s).then(e => e.clone());
147        }
148        (t.headers || !n) && this.#c(e, o, t.headers);
149        let c = {
150            mode: "cors",
151            method: o,
152            ...t
153        };
154        "GET" === o && void 0 === c.credentials && (c.credentials = _needsAuth(e) ? "include" : "omit");
155        let i = fetch(e, c).finally(() => {
156            this.#a.delete(s)
157        });
158        this.#a.set(s, i);
159        let r = await i;
160        if (!r.ok) {
161            throw Error(r.status);
162        }
163        return r
164    }
165
166    #c(e, t, n) {
167        if (!e.startsWith(this.#b)) {
168            let o = !["GET", "POST", "HEAD"].includes(t);
169            if (!o && n) {
170                let a = new Headers(n), s = a.get("content-type")?.toLowerCase();
171                o = s && ![
172                        "text/plain",
173                        "multipart/form-data",
174                        "application/x-www-form-urlencoded"
175                    ].includes(s)
176                    || Array.from(a.keys()).some(
177                        e => ![
178                            "accept",
179                            "accept-language",
180                            "content-language",
181                            "content-type"
182                        ].includes(e.toLowerCase())
183                    );
184            }
185            o && console.warn(
186                `%c[PREFLIGHT] %c${t} ${e}`,
187                "color:red;font-weight:bold",
188                ""
189            );
190        }
191    }
192}
193
194const fw = new FetchWrapper;
195window.lcm.fetch = fw.fetch.bind(fw);class Logger {
196    static #a = {success: 1, add: 1, info: 1, user: 1, deprecated: 2, warning: 2, error: 3, errorLog: 4};
197    static #b = {
198        success: {str: "s", c: "#292929", bgc: "#6BEC7C"},
199        add: {str: "a", c: "#292929", bgc: "#6BEC7C"},
200        info: {str: "i", c: "#292929", bgc: "#00b0b0"},
201        user: {str: "u", c: "#fff", bgc: "#a00"},
202        deprecated: {str: "d", c: "#fff", bgc: "#ed7d04"},
203        warning: {str: "w", c: "#fff", bgc: "#ed7d04"},
204        error: {str: "e", c: "#fff", bgc: "#f00"},
205        errorLog: {str: "e", c: "#fff", bgc: "#f00"}
206    };
207    #c;
208    #d = JSON.parse(sessionStorage.getItem("logDebugEnabled")) || !1;
209    #e;
210
211    constructor(e, r) {
212        this.#c = e, this.#e = r, !1 === this.#d && /log/.test(new 
212URLSearchParams(window.location.search).get("extra")) && (sessionStorage.setItem("logDebugEnabled", 1), this.#d = !0)
213    }
214
215    log({module: e, type: r = "info", data: g = []}) {
216        let o = Logger.#a[r] || 0;
217        if (!this.#d && o < this.#c) return;
218        let c = Logger.#b[r], t = new Date,
219            l = `${t.getHours()}:${t.getMinutes()}:${t.getSeconds()}.${t.getMilliseconds()}`,
220            a = [`%c${l}%c${e}%c${c.str}`, "color: #000; padding: 1px 3px; border-radius: 3px 0 0 3px; background: #cecece;", "color: #fff; padding: 1px 3px; border-radius: 3px 0 0 3px; background: #0000bd;", `color: ${c.c}; padding: 1px 3px; border-radius: 0 3px 3px 0; background: ${c.bgc};`];
221        console.log.apply(console, a.concat(g)), o >= this.#c && this.#f({module: e, data: g, type: r})
222    }
223
224    #f({module: e, data: r, type: g}) {
225        try {
226            window.lcm && window.lcm.logAjax && "function" == typeof window.lcm.logAjax.log ? window.lcm.logAjax.log({
227                url: window.location.href,
228                module: e,
229                type: g,
230                data: JSON.stringify(r),
231                ua: navigator.userAgent,
232                logUrl: this.#e
233            }) : console.error("LogAjax module not ready.")
234        } catch (o) {
235            console.error("Problem while logging to ajax:", o)
236        }
237    }
238}const loggerInstance = new Logger(
239            4,
240            'https://www.weathercrave.co.uk/ajax/log'
241);
242_log = ({module, type = 'info', data = []}) => {
243    loggerInstance.log({module, type, data});
244};class Evt {
245    #a = new Set;
246    #b = "lcmc_";
247    version = "2.0.0";
248
249    listen(e, t) {
250        this.#a.has(e) ? t() : document.addEventListener(this.#b + e, t, {once: !0})
251    }
252
253    dispatch(e) {
254        "function" == typeof _log && _log({module: "Evt", type: "success", data: e}), this.#a.add(e);
255        let t = new Event(this.#b + e);
256        document.dispatchEvent(t)
257    }
258}window.evt = new Evt, document.addEventListener("DOMContentLoaded", () => {
259    window.evt.dispatch("DOMContentLoaded")
260});class ScriptLoader {
261    #a = {};
262
263    loadScript(e) {
264        let r;
265        try {
266            r = builtFiles.getFileName(e)
267        } catch (t) {
268            console.error("Error fetching built filename:", t, e);
269            return
270        }
271        if (e in this.#a) return;
272        this.#a[e] = !0;
273        let a = document.createElement("script");
274        a.async = !0, a.src = r;
275        let d = /\.min$/.test(e) ? `${e.slice(0, -4)}Loaded` : `${e}Loaded`;
276        a.onload = () => {
277            window.evt.dispatch(d)
278        }, a.onerror = () => {
279            console.error("Error loading file:", e, r), delete this.#a[e]
280        }, document.head.appendChild(a)
281    }
282}const loaderInstance = new ScriptLoader;window.loadScriptBuild = loaderInstance.loadScript.bind(loaderInstance);const isHoverEnable = () => !window.matchMedia("(any-hover: none)").matches;window.isHoverEnable = () => !window.matchMedia("(any-hover: none)").matches;class Breakpoint {
283    #a = [{id: "xxxl", mediaQuery: "(min-width: 2530px)"}, {id: "xxl", mediaQuery: "(min-width: 1440px)"}, {
284        id: "xl",
285        mediaQuery: "(min-width: 1280px)"
286    }, {id: "l", mediaQuery: "(min-width: 1000px)"}, {id: "m", mediaQuery: "(min-width: 768px)"}, {
287        id: "s",
288        mediaQuery: "(min-width: 576px)"
289    }, {id: "xs", mediaQuery: "(min-width: 360px)"}, {id: "xxs", mediaQuery: "(min-width: 320px)"}];
290    #b = null;
291    #c = 50;
292    #d;
293
294    constructor() {
295        this.#d = this.#a[this.#a.length - 1].id
296    }
297
298    #e() {
299        !this.#b && (this.#b = setTimeout(() => {
300            this.#f(), this.#b = null
301        }, this.#c))
302    }
303
304    #f(e = !1) {
305        let i = this.#d;
306        for (let t of this.#a) if (window.matchMedia(t.mediaQuery).matches) {
307            i = t.id;
308            break
309        }
310        let r = this.#d;
311        this.#d = i, !1 === e && r !== this.#d && (document.dispatchEvent(new CustomEvent("breakpointChange", {
312            detail: {
313                size: this.#d,
314                previous: r
315            }
316        })), document.dispatchEvent(new CustomEvent(`breakpoint${i.toUpperCase()}`, {detail: {size: this.#d}})))
317    }
318
319    load() {
320        let e = e => {
321            e.preventDefault(), this.#e()
322        };
323        window.addEventListener("resize", e, !1), window.addEventListener("orientationchange", e, !1), this.#f(!0), evt.dispatch("breakpoint")
324    }
325
326    getCurrent() {
327        return this.#d
328    }
329}(() => {
330    let e = new Breakpoint;
331    window.lcm.breakpoint = e, e.load()
332})();class Lazyload {
333    #a = null;
334
335    #b(target) {
336        let functionPath = target.dataset.onload;
337        if (functionPath) try {
338            let func = window[functionPath] || eval(`window.${functionPath}`);
339            "function" == typeof func ? func.call(target) : console.error(`Lazyload: Function not found or non-callable ${functionPath}`, target)
340        } catch (e) {
341            console.error(`Lazyload: Error executing (${functionPath}):`, e, target)
342        }
343    }
344
345    #c = (a, t) => {
346        a.forEach(a => {
347            if (!a.isIntersecting) return;
348            let e = a.target;
349            e.dataset.srcset && (e.srcset = e.dataset.srcset), e.dataset.src && (e.src = e.dataset.src), e.dataset.poster && (e.poster = e.dataset.poster), e.dataset.onload && (e.dataset.evt ? evt.listen(e.dataset.evt, () => {
350                this.#b(e)
351            }) : this.#b(e)), e.classList.remove("lazyload"), _log({
352                module: "lazyload",
353                data: e
354            }), e.classList.add("lazyloaded"), t.unobserve(e)
355        })
356    };
357
358    constructor() {
359        evt.listen("DOMContentLoaded", () => {
360            this.checkLazyload()
361        }), evt.dispatch("lazyload")
362    }
363
364    addLazyload(a, t = null) {
365        let e = {
366            threshold: a.dataset.threshold ? parseFloat(a.dataset.threshold) : 0,
367            rootMargin: t?.rootMargin || "0px"
368        };
369        a.dataset.root && (e.root = document.getElementById(a.dataset.root) || null);
370        let o = new IntersectionObserver(this.#c, e);
371        o.observe(a)
372    }
373
374    checkLazyload() {
375        document.querySelectorAll(".lazyload").forEach(a => {
376            this.addLazyload(a)
377        })
378    }
379}window.lcm.lazyload = new Lazyload;class Device {
380    static #a = "mobile";
381    static #b = "tablet";
382    static #c = "desktop";
383    #d = "";
384
385    constructor() {
386        this.load(), "" === this.#d && this.#e(), _log({
387            module: "Device",
388            type: "info",
389            data: {deviceType: this.getDeviceType()}
390        })
391    }
392
393    load() {
394        evt.listen("breakpoint", () => {
395            this.#e(), _log({
396                module: "Device",
397                type: "info",
398                data: {deviceType: this.getDeviceType()}
399            }), evt.dispatch("deviceType")
400        })
401    }
402
403    getDeviceType() {
404        return this.#d
405    }
406
407    isMobile() {
408        return this.#d === Device.#a
409    }
410
411    isTablet() {
412        return this.#d === Device.#b
413    }
414
415    isDesktop() {
416        return this.#d === Device.#c
417    }
418
419    #e() {
420        let e = window.lcm.breakpoint.getCurrent(), i;
421        i = ["xxs", "xs", "s"].includes(e) ? Device.#a : "m" !== e || window.isHoverEnable() ? Device.#c : Device.#b, this.#d = i
422    }
423}window.lcm.device = new Device;class NodeSize {
424    #a = new Map;
425    #b = new Map;
426
427    listen(e) {
428        if (!e) return console.error("nodeSize : can't find node"), Promise.reject(Error("Node not found"));
429        if (this.#a.has(e)) return this.#a.get(e);
430        let t = new Promise(t => {
431            let s = new ResizeObserver(i => {
432                let n = i[0].contentRect, r = {width: n.width, height: n.height};
433                s.unobserve(e), this.#b.delete(e), t(r)
434            });
435            this.#b.set(e, s), s.observe(e)
436        });
437        return this.#a.set(e, t), t
438    }
439}window.nodeSize = new NodeSize;document.addEventListener("DOMContentLoaded", () => {
440    window.ajaxLogUrl = 'https://www.weathercrave.co.uk/ajax/log';
441    loadScriptBuild('log_ajax');
442});(() => {
443        class CmpShort {
444
445        constructor() {
446            this._uuid = null;
447        }
448
449        _setCookieSession(name, value) {
450            _log({module: 'CMP', data: ['set cookie', name, value]});
451            const domain = '.weathercrave.co.uk';
452            const path = '/';
453            let data = value;
454            const date = new Date();
455            date.setTime(date.getTime() + (364 * 86400000));
456            document.cookie = name + '=' + data
457                + '; domain=' + domain
458                + '; expires=' + date.toUTCString()
459                + '; path=' + path;
460        }
461
462        _getCookieSession(name) {
463            _log({module: 'CMP', data: `get cookie : ${name}`});
464            const oRegex = new RegExp('[; ]?' + name + '=([^;]*)');
465            return ((' ' + document.cookie).match(oRegex)) ? RegExp["$1"] : null;
466        }
467
468        getUuid() {
469            return this._uuid;
470        }
471
472        _setCmpUuid() {
473            let cmp_uuid = this._getCookieSession('cmp_v2_uuid');
474            _log({module: 'CMP', data: `cmp_uuid : ${cmp_uuid}`});
475            if (cmp_uuid === null) {
476                cmp_uuid = `cmp${((new Date()).getTime() + Math.random())}`;
477                _log({module: 'CMP', data: `cmp_uuid : ${cmp_uuid}`});
478                this._setCookieSession('cmp_v2_uuid', cmp_uuid);
479            }
480
481            this._uuid = cmp_uuid;
482        }
483
484                load() {
485            this._setCmpUuid();
486        }
487    }
488
489    window.lcm.cmpShort = new CmpShort();
490    window.lcm.cmpShort.load();
491
492    window.loadCmpScripts = () => {
493                window.configSFBXAppConsent = {
494            appKey: 'e2486122\u002Dc57c\u002D4f0f\u002Daee5\u002Dfbdf7f3b2704',
495            forceGDPRApplies: true,
496            uuid: window.lcm.cmpShort.getUuid(),
497            callbacks: {
498                init: (error, state) => {
499                    _log({module: "CMP", data: [state, error]})
500                },
501                show: (error) => {
502                    if (error !== null) {
503                        _log({module: "CMP", data: ["show", error], type: 'warning'})
504                    }
505                },
506                listener: (tcData, success) => {
507                    if (tcData !== null) {
508                        _log({module: "CMP", data: [tcData.eventStatus]})
509                    }
510
511                    evt.listen('cmpLoaded', () => {
512                        window.lcm.cmp.check(tcData, success)
513                    });
514                }
515            }
516        };
517                logMeasure('cmp', 'file');
518        const sCMP = document.createElement('script');
519        sCMP.src = 'https://cdn.appconsent.io/loader.js';
520        sCMP.async = true;
521        document.head.appendChild(sCMP);
522        sCMP.onload = () => {
523            logMeasureEnd('cmp', 'file');
524            _log({module: 'CMP', type: 'success', data: 'cmp.js tier loaded'});
525            evt.dispatch('cmpScriptTierLoaded');
526        };
527
528                            loadScriptBuild('cmp');
529        
530    };
531
532    
533})();(() => {
534    class GamPlacement {
535        getInstance() {
536            return new GamPlacement();
537        }
538
539        constructor() {
540            this.invCode = null;
541            this.slotName = null;
542            this.tag = null;
543            this.sizes = null;
544            this.isAtf = null;
545            this.refreshActive = null;
546            this.refreshDelay = null;
547            this.refreshCurrent = null;
548            this.refreshVisible = null;
549            this.target = null;
550            this.slot = null;
551            this.targeting = null;
552        }
553    }
554
555    window.lcm.newGamPlacement = new GamPlacement();
556
557    window.lcm.gamConfig = {
558        targeting: [],
559        gamSlots: {
560            desktop: [],
561            tablet: [],
562            mobile: []
563        },
564        readyDiv: [],
565        closeAd: {}
566    };
567
568    window.lcm.ads = {};
569
570    class Slot {
571        constructor() {
572            this._idGam = null;
573            this._idDom = null;
574            this._bp = null;
575            this._invCode = null;
576        }
577
578        setIdGam(v) {
579            this._idGam = v;
580        }
581
582        setIdDom(v) {
583            this._idDom = v;
584        }
585
586        setBp(v) {
587            this._bp = v;
588        }
589
590        setInvCode(v) {
591            this._invCode = v;
592        }
593    }
594
595    class SlotCollection {
596        constructor() {
597            this.currentBreakpoint = null;
598            this.allowedCollection = {};
599            this.currentCollection = {};
600        }
601
602        setConfig(gamConfig) {
603            gamConfig.readyDiv.forEach(div => {
604                div.display_bp.forEach(bp => {
605                    if (!this.allowedCollection[bp]) {
606                        this.allowedCollection[bp] = {};
607                    }
608                    if (!this.allowedCollection[bp][div.tag]) {
609                        this.allowedCollection[bp][div.tag] = [];
610                    }
611                    let obj = new Slot();
612                    obj.setIdGam(div.tag);
613                    obj.setIdDom(div.target);
614                    obj.setBp(bp);
615
616
617                    let device = this._getDeviceByBreakpoint(bp);
618
619                    let gamPlacement = null;
620                    for (let k = 0; k < gamConfig.gamSlots[device].length; k++) {
621                        if (gamConfig.gamSlots[device][k].slotName === div.tag) {
622                            gamPlacement = gamConfig.gamSlots[device][k];
623                            break;
624                        }
625                    }
626                    if (gamPlacement !== null) {
627                        obj.setInvCode(gamPlacement.invCode);
628                    }
629                    this.allowedCollection[bp][div.tag].push(obj);
630
631                });
632
633            });
634            return this;
635        }
636
637        run(breakpoint) {
638
639            this.currentBreakpoint = breakpoint;
640            this.currentCollection = this.allowedCollection[this.currentBreakpoint];
641
642            _log({module: 'SlotCollection', data: [`run`, {'allowedCollection': this.allowedCollection}]});
643
644            return this;
645        }
646
647        getSlotsByGamId() {
648            return this.currentCollection;
649        }
650
651        _getDeviceByBreakpoint(bp) {
652            let device = 'desktop';
653            if (['xxs', 'xs', 's'].indexOf(bp) !== -1) {
654                device = 'mobile';
655            } else if (['m'].indexOf(bp) !== -1) {
656                device = 'tablet';
657            }
658            return device;
659        }
660
661        addSlotVideo(videoConfig, targetId) {
662            ['l', 'm', 's', 'xl', 'xs', 'xxs', 'xxl', 'xxxl'].forEach(bp => {
663                if (!this.allowedCollection[bp]) {
664                    this.allowedCollection[bp] = {};
665                }
666                let device = this._getDeviceByBreakpoint(bp);
667
668                if (!this.allowedCollection[bp][videoConfig[device].idGam]) {
669                    this.allowedCollection[bp][videoConfig[device].idGam] = [];
670                }
671
672                let obj = new Slot();
673                obj.setBp(bp);
674                obj.setInvCode(videoConfig[device]['invCode']);
675                obj.setIdGam(videoConfig[device].idGam);
676                obj.setIdDom(targetId);
677
678                this.allowedCollection[bp][videoConfig[device].idGam].push(obj);
679            });
680
681
682        }
683    }
684
685    window.lcm.ads.slotCollection = new SlotCollection();
686
687    class Keywords {
688        constructor() {
689            this._currentDevice;
690            this._globals = [];
691            this._globalsPrebid = [];
692            this._globals1PlusX = [];
693            this._slots = {};//by device
694            this._videos = {};
695
696            this.setDevice(this._getBreakpointDevice(window.lcm.breakpoint.getCurrent()));
697        }
698
699        setDevice(name) {
700            _log({module: 'Keyword', data: ['set device', name]});
701            this._currentDevice = name;
702        }
703
704        setGlobals(arr) {
705            _log({module: 'Keyword', data: ['set globals', arr]});
706            this._globals = this._globals.concat(arr);
707        }
708
709        setGlobalsPrebid(obj) {
710            _log({module: 'Keyword', data: ['set globals prebid', obj]});
711            for (let k in obj) {
712                this._globalsPrebid.push({key: k, value: obj[k]});
713            }
714        }
715
716        setGlobals1PlusX(obj) {
717            _log({module: 'Keyword', data: ['set globals 1PlusX', obj]});
718            for (let k in obj) {
719                this._globals1PlusX.push({key: k, value: obj[k]});
720            }
721        }
722        _initSlot(slotName) {
723            if (!this._slots[this._currentDevice]) {
724                this._slots[this._currentDevice] = {};
725            }
726            if (!this._slots[this._currentDevice][slotName]) {
727                this._slots[this._currentDevice][slotName] = [];
728            }
729        }
730
731        delSlot(slotName) {
732            this._initSlot(slotName);
733            this._slots[this._currentDevice][slotName] = [];
734        }
735
736        setSlot(slotName, obj) {
737            _log({module: 'Keyword', data: ['set slot', slotName, obj]});
738            this._initSlot(slotName);
739            for (let k in obj) {
740                this._slots[this._currentDevice][slotName].push({key: k, value: obj[k]});
741            }
742        }
743
744        getGlobals() {//call depuis gam
745            return this._globals;
746        }
747
748        getGlobalsPrebid() {//call depuis ias
749            return this._globalsPrebid;
750        }
751
752        // TODO use for HBV only 1plusX et ctx1plusx
753        getGlobals1PlusX() {
754            return this._globals1PlusX;
755        }
756        getBySlotName(slotName) {
757            _log({module: 'Keyword', data: ['get by slot name', slotName]});
758            try {
759                const test = this._slots[this._currentDevice][slotName];
760                if (test === undefined) {
761                    throw 'slotName not found';
762                }
763                return test;
764            } catch (e) {
765                return [];
766            }
767        }
768
769        getKwValue(slotName, keyName) {
770            const kwList = this.getBySlotName(slotName);
771            let kwValue = '';
772            if (kwList) {
773                const kwObj = kwList.filter(x => x.key === keyName);
774                if (kwObj.length) {
775                    kwValue = kwObj[0].value;
776                }
777            }
778            return kwValue;
779        }
780
781        setVideoKw(videoName, str) {
782            this._videos[videoName] = str;
783        }
784
785        getVideoKw(videoName) {
786            _log({module: 'Keyword', data: ['get video KW', videoName]});
787            try {
788                const test = this._videos[videoName];
789                if (test === undefined) {
790                    throw 'videoName not found';
791                }
792                return test;
793            } catch (e) {
794                return '';
795            }
796        }
797
798        _getBreakpointDevice(breakpoint) {
799            let device = null;
800            if (['xxs', 'xs', 's'].indexOf(breakpoint) !== -1) {
801                device = 'mobile';
802            } else if (['m'].indexOf(breakpoint) !== -1) {
803                device = 'tablet';
804            } else if (['l', 'xl', 'xxl', 'xxxl'].indexOf(breakpoint) !== -1) {
805                device = 'desktop';
806            }
807            return device;
808        }
809
810    }
811
812    window.lcm.ads.keywords = new Keywords();
813
814    window.Hubvisor = window.Hubvisor || {cmd: []};
815
816
817})();
818// UTIQ
819
820
821
822
823        
824        window.wls = {
825    options: {
826        list: {id: "lachainemeteo"},
827        stats: {trackingId: "UA-75588349-1"}
828    }
829};
830evt.listen('cmp', () => {
831    s = document.createElement('script');
832    s.src = 'https://static-lists.linternaute.com/wls/wls.js';
833    document.head.appendChild(s);
834    s.onload = () => {
835        window.googletag.cmd.push(() => {
836            if (typeof wls !== 'undefined' && typeof wls.getData !== 'undefined') {
837                wls.getData(
838                    'isWhitelisted',
839                    null,
840                    function (result) {
841                        var desadblock = result ? '1' : '0';
842                        googletag.pubads().setTargeting('ccm_whitelist', desadblock);
843                                            }
844                );
845            }
846        });
847    };
848});
849    </script>
849
850
851
852
853                    
853<script>
854    var dataLayer = [{
855        'site':`WEATHER CRAVE (weathercrave.co.uk)`,
856        'environnement':`production`,        
857        'support':'',        
858        'websiteVersion':'',
859        'level1':`autres_pages`,
860        'level2':``,
861        'level3':`about-meteo-consult`,
862        'idType':``,
863        'idPays':``,
864        'namePays':``,
865        'idRegion':``,
866        'nameRegion':``,
867        'idDpt':``,
868        'nameDpt':``,
869        'idEntite':``,
870        'echeance':``,        
871        'source':(function () { try { let val = ((window.location.hash).substring(1)); return val.substring(0, 149); } catch (e) { return ''; } })(),
872        'siteLanguage':`en_GB`,
873        'pageCategory':``,        
874        'userAgent':(function () { try { let val = (navigator.userAgent); return val.substring(0, 149); } catch (e) { return ''; } })(),
875        'userStatus':`non abonné`,
876        'adblocks':``,
877        'sessionType':``,
878        'idArticle':``,
879        'subscriptionContentType':`gratuit`,
880        'estCANAL':`non`
881    }];
882
883    
884    
885    evt.listen('deviceType', function () {
886        try {
887            let val = (window.lcm.device.getDeviceType());
888            dataLayer.push({'support': val.substring(0, 149)});
889        } catch (e) {
890            console.log('DataLayer Error ['+e.message+']');
891        }
892    });
893    evt.listen('deviceType', function () {
894        try {
895            let val = (window.lcm.device.getDeviceType());
896            dataLayer.push({'websiteVersion': val.substring(0, 149)});
897        } catch (e) {
898            console.log('DataLayer Error ['+e.message+']');
899        }
900    });    _log({module:'DataLayer', type:'info', data:{
901        'DataLayer': dataLayer
902    }})
903    function loadGTM() {
vendor: 461 bytes, lines 903-911
903
904        (function (w, d, s, l, i) {
905            w[l] = w[l] || [];
906            w[l].push({'gtm.start': new Date().getTime(), event: 'gtm.js'});
907            var f = d.getElementsByTagName(s)[0], j = d.createElement(s), dl = l != 'dataLayer' ? '&l=' + l : '';
908            j.async = true;
909            j.src = 'https://www.googletagmanager.com/gtm.js?id=' + i + dl;
910            f.parentNode.insertBefore(j, f);
911        })(window, document, 'script', 'dataLayer', '
911GTM-TGN88WM
vendor: 8 bytes, lines 911-912
911');
912    
912}
913</script>
913
914    
914<script>
915        // evt.listen('cmpAccepted',()=>{
916            loadGTM();
917        // });
918    </script>
918
919
920    
920<script>
921    (function(x,p,l,n,a,i) {
922        a=p.createElement(l);a.async=!0;a.src=n;a.xpln=x;
923        i=p.currentScript||p.getElementsByTagName(l)[0];i.parentNode.insertBefore(a,i);
924    })({xid:'mediafigaro'},document,'script','https://cdn.xpln.tech/page.js');
925
926    (function(x,p,l,n,a,i) {
927        self.xpln_targeting=function(){};
928        self.get_xpln_targeting=function(){};
929        a=x.createElement(p);a.async=!0;
930        a.src = l + 'mediafigaro' + '/'+location.hostname+
931        '.js';
932        i=x.currentScript||x.getElementsByTagName(p)[0];i.parentNode.insertBefore(a,i);
933    })(document,'script','https://cdn.xpln.tech/');
934</script>
934
935    
935<script>
936    const oneplusxInfos = {        'page_attr_pagecategory':`autres_pages`,
937            'page_attr_level1':`autres_pages`,
938            'page_attr_level2':``,
939            'page_attr_level3':`about-meteo-consult`,
940            'page_attr_tagname1':``,
941            'page_attr_tagname2':``,
942            'page_attr_tagname3':``,
943            'page_attr_articleid':``,
944            'page_attr_author':``,
945            'page_attr_pays':``,
946            'page_attr_region':``,
947            'page_attr_departement':``,
948            'page_attr_montant':``,
949            'page_attr_quantite':``,
950            'page_attr_subscriptioncontentstate':``,
951            'page_attr_subscriptioncontenttype':``,
952            'page_attr_userstatus':`inconnu`,
953            'page_attr_userstate':`non-connecte`,
954            'page_attr_subscription':``,
955            'page_attr_visitor_id':``,
956            'type':`default`,
957            'page_attr_url_path_1':`weather-services`,
958            'page_attr_url_path_2':`info`,
959            'page_attr_url_path_3':`about-meteo-consult`,
960            'page_attr_url_path_4':``,
961            'page_attr_page_title':``,
962            'page_attr_ctnt_qual':``,
963            'page_attr_domain':`co.uk`,
964            'page_attr_full_domain':`www.weathercrave.co.uk`,
965            'page_attr_url_cleaned':`www.weathercrave.co.uk/weather-services/info/about-meteo-consult`,
966            'page_attr_Seen-een':``,
967            'page_attr_sourcesite':(function () { try { return document.referrer; } catch(e) {return ''; } })()
968        };
969</script>
969
970        
970<script type="application/ld+json">
971    {"@context":"http://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"item":{"@id":"https://www.weathercrave.co.uk/weather-forecast-united-kingdom/weather-forecast-united-kingdom-today","name":"Weather"}},{"@type":"ListItem","position":2,"item":{"@id":"https://www.weathercrave.co.uk/weather-services/info/about-meteo-consult","name":"about-meteo-consult"}}]}
972</script>
972
973    <link rel="apple-touch-icon" sizes="120x120" href="https://static5.mclcm.net/lcm2018/en/common/favicons/120_iPhone_retina.png"/>
974<link rel="apple-touch-icon" sizes="152x152" href="https://static5.mclcm.net/lcm2018/en/common/favicons/152_iPad_retina.png"/>
975<link rel="apple-touch-icon" sizes="167x167" href="https://static5.mclcm.net/lcm2018/en/common/favicons/167_iPad_pro.png"/>
976<link rel="apple-touch-icon" sizes="180x180" href="https://static5.mclcm.net/lcm2018/en/common/favicons/180_iPhone_6_plus.png"/>
977
978<link rel="icon" type="image/png" sizes="32x32" href="https://static5.mclcm.net/lcm2018/en/common/favicons/32_taskbar_shortcut_icon.png"/>
979<link rel="icon" type="image/png" sizes="96x96" href="https://static5.mclcm.net/lcm2018/en/common/favicons/96_desktop_shortcut_icon.png"/>
980<link rel="icon" type="image/png" sizes="16x16" href="https://static5.mclcm.net/lcm2018/en/common/favicons/16_browser_favicon.png"/>
981
982<link rel="icon" type="image/png" sizes="128x128" href="https://static5.mclcm.net/lcm2018/en/common/favicons/128_chrome_webstore_icon.png"/>
983<link rel="icon" type="image/png" sizes="196x196" href="https://static5.mclcm.net/lcm2018/en/common/favicons/196_android_chrome_icon.png"/>
984<link rel="icon" type="image/png" sizes="228x228" href="https://static5.mclcm.net/lcm2018/en/common/favicons/228_opera_coast_icon.png"/>
985
986<link rel="icon" type="image/png" sizes="70x70" href="https://static5.mclcm.net/lcm2018/en/common/favicons/70_windows.png"/>
987<link rel="icon" type="image/png" sizes="270x270" href="https://static5.mclcm.net/lcm2018/en/common/favicons/270_windows.png"/>
988<link rel="icon" type="image/png" sizes="310x310" href="https://static5.mclcm.net/lcm2018/en/common/favicons/310_310_windows.png"/>
989<link rel="icon" type="image/png" sizes="310x150" href="https://static5.mclcm.net/lcm2018/en/common/favicons/310_150_windows.png"/>
990
991
992    
993
994    
995        <link rel="stylesheet" href="https://www.weathercrave.co.uk/build/main_redesign.bcb0f22eb3707182578d.css" />
996
997        <link rel="stylesheet" href="https://www.weathercrave.co.uk/build/services.bf5b1645d38003de9b6b.css"/>
998    <link rel="stylesheet" href="https://www.weathercrave.co.uk/build/home_section.d2660212f9c187badf1e.css"/>
999
1000    <style>
1001        @font-face {
1002            font-family: 'Nunito Sans';
1003            font-style: normal;
1004            font-weight: 400 700;
1005            src: url('//static5.mclcm.net/lcm2018/fonts/nunito_sans_v8/regular_variable.woff2');
1006        }
1007
1008        @font-face {
1009            font-family: 'Nunito Sans';
1010            font-style: italic;
1011            font-weight: 400 700;
1012            unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
1013            src: url('//static5.mclcm.net/lcm2018/fonts/nunito_sans_v8/italic_variable.woff2');
1014        }
1015    </style>
1016
1017
1018</head>
1019<body class="subset-font ">
1020<div class="background-interact"></div>
1021
1022
1023<header id="header" class="show-overlay
1024        ">
1025    <div class="header-container">
1026
1027        <div class="burger-container">
1028                        <div class="bckgBurger">
1029                <picture>
1030                    <source
1031                            media="(min-width: 2530px)"
1032                            srcset="https://static5.mclcm.net/lcm2018/int/menu/bckg_burger_basic_361x81.png 360w,
1033                                    https://static5.mclcm.net/lcm2018/int/menu/bckg_burger_basic_722x162.png 720w,
1034                                    https://static5.mclcm.net/lcm2018/int/menu/bckg_burger_basic_1083x243.png 1080w"
1035                            sizes="360px"
1036                            width="360"
1037                            height="80"
1038                    />
1039                    <img
1040                         src="https://static5.mclcm.net/lcm2018/int/menu/bckg_burger_basic_361x81.png 360w"
1041                         srcset="     https://static5.mclcm.net/lcm2018/int/menu/bckg_burger_basic_182x162.png 720w,
1042                                      https://static5.mclcm.net/lcm2018/int/menu/bckg_burger_basic_273x243.png 1080w"
1043                         sizes="90px"
1044                         width="90"
1045                         height="80"
1046                         alt=""
1047                    />
1048                </picture>
1049            </div>
1050                        <button id="menu" class="burger" aria-label="menu">
1051                <span class="icon-burger"></span>
1052                                <span class="alert-container">
1053                    <svg class="icon icon-MenuAlert " aria-hidden="true" ><use xlink:href="/images/int/svg/icons-v1.1.33.svg#menuAlert" /></svg>
1054                </span>
1055            </button>
1056        </div>
1057
1058        <div class="logo">
1059            <a href="https://www.weathercrave.co.uk/weather-forecast-united-kingdom/weather-forecast-united-kingdom-today" id="logoHref">
1060                <div class="img-container">
1061                                                                                                                            <picture id="headerLogo">
1062                                <source class="img-fluid"
1063                                        media="(min-width: 1000px)"
1064                                        srcset="https://static5.mclcm.net/lcm2018/en/common/logo.svg"
1065                                        width="96"
1066                                        height="54"
1067                                />
1068                                <img class="img-fluid"
1069                                     src="https://static5.mclcm.net/lcm2018/en/common/logo.svg"
1070                                     width="70"
1071                                     height="40"
1072                                     alt="Weather Crave"
1073                                />
1074                            </picture>
1075                                    </div>
1076            </a>
1077        </div>
1078
1079        <div class="search-container">
1080                            <div class="bckgSearch">
1081                    <picture>
1082                        <source
1083                                media="(min-width: 2530px)"
1084                                srcset="https://static5.mclcm.net/lcm2018/int/menu/bckg_burger_basic_361x81.png 360w,
1085                                    https://static5.mclcm.net/lcm2018/int/menu/bckg_burger_basic_722x162.png 720w,
1086                                    https://static5.mclcm.net/lcm2018/int/menu/bckg_burger_basic_1083x243.png 1080w"
1087                                sizes="360px"
1088                                width="360"
1089                                height="80"
1090                        />
1091                        <img
1092                                src="https://static5.mclcm.net/lcm2018/int/menu/bckg_burger_basic_361x81.png 360w"
1093                                srcset="     https://static5.mclcm.net/lcm2018/int/menu/bckg_burger_basic_182x162.png 720w,
1094                                      https://static5.mclcm.net/lcm2018/int/menu/bckg_burger_basic_273x243.png 1080w"
1095                                sizes="90px"
1096                                width="90"
1097                                height="80"
1098                                alt=""
1099                        />
1100                    </picture>
1101                </div>
1102                        <div class="search-input-container autocomplete" id="genericSearch">
1103                <form class="autocomplete-form" action="https://www.weathercrave.co.uk/weather-forecast-search" method="get" autocomplete="off">
1104                    <input type="search" name="q" class="autocomplete-field" disabled="true"
1105                           placeholder="Search for a location or a favorite"
1106                           required/>
1107                    <button class="search-submit" type="submit" aria-label="search submit">
1108                        <svg class="icon icon-Search " aria-hidden="true" ><use xlink:href="/images/int/svg/icons-v1.1.33.svg#search" /></svg>
1109                    </button>
1110                    <button class="search-aborted" type="button" aria-label="search aborted">
1111                        <svg class="icon icon-Close " aria-hidden="true" ><use xlink:href="/images/int/svg/icons-v1.1.33.svg#close" /></svg>
1112                    </button>
1113                </form>
1114            </div>
1115            <button id="mainSearch" class="magnifier" aria-label="search">
1116                <svg class="icon icon-Magnifier " aria-hidden="true" ><use xlink:href="/images/int/svg/icons-v1.1.33.svg#magnifier" /></svg>
1117            </button>
1118            <button
1119                class="account-access a-href
1120                                "
1121                aria-label="My account"
1122                data-href="https://www.weathercrave.co.uk/sign-in">
1123                <svg class="icon icon-MenuCompteOn " aria-hidden="true" ><use xlink:href="/images/int/svg/icons-v1.1.33.svg#menuCompteOn" /></svg>
1124            </button>
1125        </div>
1126    </div>
1127
1128    <nav class="nav-overlay">
1129        <ul class="nav-list">
1130                                                                    <li class="item nav-home ">
1131                                            <a href="https://www.weathercrave.co.uk/weather-forecast-united-kingdom/weather-forecast-united-kingdom-today" data-target="" ">
1132                                                            <svg class="icon icon-MenuAccueilOff off" aria-hidden="true" ><use xlink:href="/images/int/svg/icons-v1.1.33.svg#menuAccueilOff" /></svg>
1133                                                         <svg class="icon icon-MenuAccueilOn on" aria-hidden="true" ><use xlink:href="/images/int/svg/icons-v1.1.33.svg#menuAccueilOn" /></svg>
1133                             <span class="nav-title">Home</span>
1134                        </a>
1135                                        </li>
1136                                                                                    <li class="item nav-interactiveWeatherMap ">
1137                                            <a href="https://www.weathercrave.co.uk/weather-map/rain-radar" data-target="" ">
1138                                                            <svg class="icon icon-MenuRadarOff off" aria-hidden="true" ><use xlink:href="/images/int/svg/icons-v1.1.33.svg#menuRadarOff" /></svg>
1139                                                         <svg class="icon icon-MenuRadarOn on" aria-hidden="true" ><use xlink:href="/images/int/svg/icons-v1.1.33.svg#menuRadarOn" /></svg>                             <span class="nav-title">Radar</span>
1140                        </a>
1141                                        </li>
1142                                                                                    <li class="item nav-mountain ">
1143                                            <a href="https://www.weathercrave.co.uk/weather-forecast-mountain/weather-forecast-mountain" data-target="" ">
1144                                                            <svg class="icon icon-MenuMountain off" aria-hidden="true" ><use xlink:href="/images/int/svg/icons-v1.1.33.svg#menuMountain" /></svg>
1145                                                         <svg class="icon icon-MenuMountain on" aria-hidden="true" ><use xlink:href="/images/int/svg/icons-v1.1.33.svg#menuMountain" /></svg>                             <span class="nav-title">Mountain</span>
1146                        </a>
1147                                        </li>
1148                                                                                    <li class="item nav-world ">
1149                                            <a href="https://www.weathercrave.co.uk/weather-forecast-world/weather-forecast-world" data-target="" ">
1150                                                            <svg class="icon icon-MenuWorld off" aria-hidden="true" ><use xlink:href="/images/int/svg/icons-v1.1.33.svg#menuWorld" /></svg>
1151                                                         <svg class="icon icon-MenuWorld on" aria-hidden="true" ><use xlink:href="/images/int/svg/icons-v1.1.33.svg#menuWorld" /></svg>                             <span class="nav-title">World</span>
1152                        </a>
1153                                        </li>
1154                                                                                    <li class="item nav-country ">
1155                                            <a href="https://www.weathercrave.co.uk/weather-forecast-united-kingdom/country-149/weather-forecast-united-kingdom-today" data-target="" ">
1156                                                            <svg class="icon icon-MenuUk off" aria-hidden="true" ><use xlink:href="/images/int/svg/icons-v1.1.33.svg#menuUk" /></svg>
1157                                                         <svg class="icon icon-MenuUk on" aria-hidden="true" ><use xlink:href="/images/int/svg/icons-v1.1.33.svg#menuUk" /></svg>                             <span class="nav-title">United Kingdom</span>
1158                        </a>
1159                                        </li>
1160                                                                                    <li class="item nav-contact ">
1161                                            <a href="https://www.weathercrave.co.uk/contact-form" data-target="" ">
1162                                                            <svg class="icon icon-NewsletterOff off" aria-hidden="true" ><use xlink:href="/images/int/svg/icons-v1.1.33.svg#newsletter-off" /></svg>
1163                                                         <svg class="icon icon-NewsletterOff on" aria-hidden="true" ><use xlink:href="/images/int/svg/icons-v1.1.33.svg#newsletter-off" /></svg>                             <span class="nav-title">Contact us</span>
1164                        </a>
1165                                        </li>
1166                                                                                    <li class="item nav-account ">
1167                                            <a href="https://www.weathercrave.co.uk/my-account" data-target="" ">
1168                                                            <svg class="icon icon-MenuCompteOff off" aria-hidden="true" ><use xlink:href="/images/int/svg/icons-v1.1.33.svg#menuCompteOff" /></svg>
1169                                                         <svg class="icon icon-MenuCompteOn on" aria-hidden="true" ><use xlink:href="/images/int/svg/icons-v1.1.33.svg#menuCompteOn" /></svg>
1169                             <span class="nav-title">My account</span>
1170                        </a>
1171                                        </li>
1172                                                                                    <li class="item nav-connexion ">
1173                                                                    <button class="a-href" data-href="https://www.weathercrave.co.uk/sign-in?cb=http://www.weathercrave.co.uk/weather-services/info/about-meteo-consult" data-target="" type="button">
1174                            <svg class="icon icon-MenuCompteOff off" aria-hidden="true" ><use xlink:href="/images/int/svg/icons-v1.1.33.svg#menuCompteOff" /></svg>
1175                             <svg class="icon icon-MenuCompteOn on" aria-hidden="true" ><use xlink:href="/images/int/svg/icons-v1.1.33.svg#menuCompteOn" /></svg>                             <span class="nav-title">Log in</span>
1176                        </button>
1177                                        </li>
1178                                    </ul>
1179    </nav>
1180
1181    <div class="grid-container container-fluid nav-container">
1182        <nav class="nav grid col-m-16" id="nav-bar">
1183            <div class="container-menu">
1184                <ul class="nav-list">
1185                                <li class="item nav-home ">
1186                                        <a href="https://www.weathercrave.co.uk/weather-forecast-united-kingdom/weather-forecast-united-kingdom-today" data-target="" >
1187                                                                                <svg class="icon icon-MenuAccueilOff off" aria-hidden="true" ><use xlink:href="/images/int/svg/icons-v1.1.33.svg#menuAccueilOff" /></svg>
1188                                                                                <span class="nav-title">Home</span>
1189                    </a>
1190                    
1191                </li>
1192                                <li class="item nav-interactiveWeatherMap ">
1193                                        <a href="https://www.weathercrave.co.uk/weather-map/rain-radar" data-target="" >
1194                                                                                <svg class="icon icon-MenuRadarOff off" aria-hidden="true" ><use xlink:href="/images/int/svg/icons-v1.1.33.svg#menuRadarOff" /></svg>
1195                                                                                <span class="nav-title">Radar</span>
1196                    </a>
1197                    
1198                </li>
1199                                <li class="item nav-mountain ">
1200                                        <a href="https://www.weathercrave.co.uk/weather-forecast-mountain/weather-forecast-mountain" data-target="" >
1201                                                                                <svg class="icon icon-MenuMountain off" aria-hidden="true" ><use xlink:href="/images/int/svg/icons-v1.1.33.svg#menuMountain" /></svg>
1202                                                                                <span class="nav-title">Mountain</span>
1203                    </a>
1204                    
1205                </li>
1206                                <li class="item nav-world ">
1207                                        <a href="https://www.weathercrave.co.uk/weather-forecast-world/weather-forecast-world" data-target="" >
1208                                                                                <svg class="icon icon-MenuWorld off" aria-hidden="true" ><use xlink:href="/images/int/svg/icons-v1.1.33.svg#menuWorld" /></svg>
1209                                                                                <span class="nav-title">World</span>
1210                    </a>
1211                    
1212                </li>
1213                                <li class="item nav-country ">
1214                                        <a href="https://www.weathercrave.co.uk/weather-forecast-united-kingdom/country-149/weather-forecast-united-kingdom-today" data-target="" >
1215                                                                                <svg class="icon icon-MenuUk off" aria-hidden="true" ><use xlink:href="/images/int/svg/icons-v1.1.33.svg#menuUk" /></svg>
1216                                                                                <span class="nav-title">United Kingdom</span>
1217                    </a>
1218                    
1219                </li>
1220                                <li class="item nav-contact ">
1221                                        <a href="https://www.weathercrave.co.uk/contact-form" data-target="" >
1222                                                                                <svg class="icon icon-NewsletterOff off" aria-hidden="true" ><use xlink:href="/images/int/svg/icons-v1.1.33.svg#newsletter-off" /></svg>
1223                                                                                <span class="nav-title">Contact us</span>
1224                    </a>
1225                    
1226                </li>
1227                                <li class="item nav-account ">
1228                                        <a href="https://www.weathercrave.co.uk/my-account" data-target="" >
1229                                                                                <svg class="icon icon-MenuCompteOff off" aria-hidden="true" ><use xlink:href="/images/int/svg/icons-v1.1.33.svg#menuCompteOff" /></svg>
1230                                                                                <sp
1230an class="nav-title">My account</span>
1231                    </a>
1232                    
1233                </li>
1234                                <li class="item nav-connexion ">
1235                                            <button class="a-href" data-href="https://www.weathercrave.co.uk/sign-in" data-target="" type="button">
1236                                                            <svg class="icon icon-MenuCompteOff off" aria-hidden="true" ><use xlink:href="/images/int/svg/icons-v1.1.33.svg#menuCompteOff" /></svg>
1237                                                        <span class="nav-title">Log in</span>
1238                        </button>
1239                    
1240                </li>
1241                            </ul>
1242                <div class="header-share">
1243                <div class="social-container">
1244                                        <button class="a-href" data-href="https://www.facebook.com/lameilleureinfometeo" rel="nofollow" data-target="_blank"><div class="bout4"><svg class="icon icon-Facebook " aria-hidden="true" ><use xlink:href="/images/int/svg/icons-v1.1.33.svg#facebook" /></svg></div></button>
1245                    <button class="a-href" data-href="https://twitter.com/LaChaineMeteo" rel="nofollow" data-target="_blank"><div class="bout4"><svg class="icon icon-Twitter " aria-hidden="true" ><use xlink:href="/images/int/svg/icons-v1.1.33.svg#twitter" /></svg></div></button>
1246                    <button class="a-href" data-href="https://www.instagram.com/lachainemeteo/" rel="nofollow" data-target="_blank"><div class="bout4"><svg class="icon icon-Instagram " aria-hidden="true" ><use xlink:href="/images/int/svg/icons-v1.1.33.svg#instagram" /></svg></div></button>
1247                    <button class="a-href" data-href="https://www.snapchat.com/add/lachainemeteo" rel="nofollow" data-target="_blank"><div class="bout4"><svg class="icon icon-Snapchat " aria-hidden="true" ><use xlink:href="/images/int/svg/icons-v1.1.33.svg#snapchat" /></svg></div></button>
1248                    <button class="a-href" data-href="https://www.tiktok.com/@lachainemeteofrance" rel="nofollow" data-target="_blank"><div class="bout4"><svg class="icon icon-Tiktok " aria-hidden="true" ><use xlink:href="/images/int/svg/icons-v1.1.33.svg#tiktok" /></svg></div></button>
1249                </div>
1250            </div>
1251            </div>
1252        </nav>
1253    </div>
1254
1255    <div class="grid-container container-fluid search-nav-container">
1256        <nav class="nav grid col-m-16" id="nav-bar-search">
1257            <div id="resultContainerHeader" class="result-container">
1258                <div class="result-title">
1259                    <div class="section-title">Search results</div>
1260                </div>
1261                <div class="autocomplete-results-block">
1262                    <ul id ="headerResult" class="autocomplete-results"></ul>
1263                    <div class="result-all-container">
1264                        <svg class="icon icon-Magnifier " aria-hidden="true" ><use xlink:href="/images/int/svg/icons-v1.1.33.svg#magnifier" /></svg>
1265                        <span class="result-all-title">See all results</span>
1266                    </div>
1267                    <div class="autocomplete-more">
1268                        <span id="autocomplete-more-label" class="autocomplete-more-label">CAN'T FIND YOUR LOCATION?</span>
1269                        <div id="autocomplete-more-container" class="autocomplete-more-container">
1270                            <img data-src="https://static5.mclcm.net/lcm2018/int/menu/bckg_add_place_330x85.png"
1271                                 data-srcset="https://static5.mclcm.net/lcm2018/int/menu/bckg_add_place_330x85.png 330w,https://static5.mclcm.net/lcm2018/int/menu/bckg_add_place_660x170.png 660w"
1272                                 width="330"
1273                                 height="85"
1274                                 sizes="100vw"
1275                                 alt=""
1276                                 role="none"
1277                            />
1278                            <div class="autocomplete-more-btn">
1279                                <svg class="icon icon-SearchEdit " aria-hidden="true" ><use xlink:href="/images/int/svg/icons-v1.1.33.svg#searchEdit" /></svg>
1280                                <button id="btnMorePlace">Request the creation of a location</button>
1281                            </div>
1282                        </div>
1283                        <div id="addPlaceHeader" class="add-place-header">
1284                        </div>
1285                    </div>
1286                </div>
1287            </div>
1288            <div id="underResultsContainer">
1289                <div class="geoloc-container">
1290                    <div class="geoloc-title">
1291                        My location
1292                    </div>
1293                    <a href="">
1294                        <div id="geolocContainerHeader" class="geoloc-content">
1295                            <div class="icon-container">
1296                                <svg class="icon icon-DirectionArrowSW " aria-hidden="true" ><use xlink:href="/images/int/svg/icons-forecast-v1.1.18.svg#direction-arrow-sw" /></svg>
1297                            </div>
1298                            <div class="text-content">
1299                                <span class="main-title"></span>
1300                                <span class="subtitle"></span>
1301                            </div>
1302                            <div class="last-icon">
1303                                <svg class="icon icon-ChevronRightBold " aria-hidden="true" ><use xlink:href="/images/int/svg/icons-v1.1.33.svg#angle-right-bold" /></svg>
1304                            </div>
1305                        </div>
1306                    </a>
1307                </div>
1308                <div id="historicalContainerHeader" class="historical-container">
1309                    <div class="historical-title">
1310                        <div class="section-title">Recent searches</div>
1311                    </div>
1312                    <div class="historical-block">
1313                        <ul id="headerHistorical" class="historical-list"></ul>
1314                        <div class="historical-remove">
1315                            <svg class="icon icon-Trash " aria-hidden="true" ><use xlink:href="/images/int/svg/icons-v1.1.33.svg#trash" /></svg>
1316                            <span class="remove-title">Clear my history</span>
1317                        </div>
1318                    </div>
1319                </div>
1320                <div id="favoriteContainerHeader" class="favorite-container show">
1321                    <div class="favorite-title a-href" data-href="https://www.weathercrave.co.uk/my-account/favorites">
1322                        <div class="section-title">My favorites</div>
1323                    </div>
1324                    <div class="favorite-block">
1325                        <ul id="headerFavorite" class="favorite-list"></ul>
1326                        <div class="favorite-edit a-href"  data-href="https://www.weathercrave.co.uk/my-account/favorites">
1327                            <svg class="icon icon-SearchEdit " aria-hidden="true" ><use xlink:href="/images/int/svg/icons-v1.1.33.svg#searchEdit" /></svg>
1328                            <span class="edit-title">Edit my favorites</span>
1329                        </div>
1330                    </div>
1331                </div>
1332                <div class="noconnect-favorite-container">
1333                    <span class="noconnect-favorite-label">Create your account to save your favorites.</span>
1334                    <div class="noconnect-favorite-btn a-href" data-href="https://www.weathercrave.co.uk/sign-in">Log in</div>
1335                </div>
1336            </div>
1337        </nav>
1338    </div>
1339
1340</header>
1341<div id="header-margin"></div>
1342
1343
1344        
1345<nav class="grid-container container-l breadcrumb-container">
1346    <ol class="grid col-16 breadcrumb">
1347                    <li><a href="https://www.weathercrave.co.uk/weather-forecast-united-kingdom/weather-forecast-united-kingdom-today">Weather</a></li>
1348                    <li><a href="https://www.weathercrave.co.uk/weather-services/info/about-meteo-consult">about-meteo-consult</a></li>
1349            </ol>
1350</nav>    <section id="forecastHeader" class="grid-container container-fluid">
1351        
1352<div id="header-background" class="grid col-16">
1353    <div class="bg service">
1354        <div class="fake-bckg-menu scrim"></div>
1355        <div class="scrim"></div>
1356
1357                    <picture>
1358                <source media="(min-width: 1000px)"
1359                        srcset="https://static5.mclcm.net/lcm2018/int/service/HEADER_PAYS_96.jpg"
1360                        width="2048"
1361                        height="375"
1362                />
1363                <source media="(min-width: 420px)"
1364                        srcset="https://static5.mclcm.net/lcm2018/int/service/HEADER_PAYS_96.jpg"
1365                        width="1000"
1366                        height="165"
1367                />
1368                <img fetchpriority="high"
1369                     src="https://static5.mclcm.net/lcm2018/int/service/HEADER_PAYS_96.jpg"
1370                     srcset="https://static5.mclcm.net/lcm2018/int/service/HEADER_PAYS_96.jpg 2x"
1371                     width="425"
1372                     height="165"
1373                     alt=""
1374                />
1375            </picture>
1376            </div>
1377</div>
1378
1379<div id="page-header" class="grid col-16 ">
1380    <div class="title-container">
1381        <div class="title-favoris">
1382            <div>
1383                <div class="logo">
1384
1385                    <div class="img-container">
1386                        <div id="headerLogoSmall"><svg class="icon icon-Logo " aria-hidden="true" ><use xlink:href="/images/int/svg/icons-v1.1.33.svg#logo" /></svg></div>
1387                    </div>
1388                </div>
1389                <h1 class="title-line">
1390                <span class="title">
1391                    ABOUT METEO CONSULT
1392                </span>
1393                </h1>
1394            </div>
1395        </div>
1396    </div>
1397    <div class="grid col-16 header-links-container">
1398        <div class="slider-overflow">
1399                                                        <a class="header-cta-link "
1400                   href="https://www.weathercrave.co.uk/weather-services/info/terms-of-service"
1401                   id="tab-1">
1402                    TOS
1403                </a>
1404                                            <a class="header-cta-link "
1405                   href="https://www.weathercrave.co.uk/weather-services/info/terms-and-conditions"
1406                   id="tab-2">
1407                    TCS
1408                </a>
1409                                            <a class="header-cta-link "
1410                   href="https://www.weathercrave.co.uk/weather-services/info/legal-notice"
1411                   id="tab-3">
1412                    Legal notice
1413                </a>
1414                                            <a class="header-cta-link "
1415                   href="https://www.weathercrave.co.uk/weather-services/info/cookies"
1416                   id="tab-4">
1417                    Cookies
1418                </a>
1419                                            <a class="header-cta-link actif"
1420                   href="https://www.weathercrave.co.uk/weather-services/info/about-meteo-consult"
1421                   id="tab-5">
1422                    About METEO CONSULT
1423                </a>
1424                                            <a class="header-cta-link "
1425                   href="https://www.weathercrave.co.uk/weather-services/info/privacy-policy"
1426                   id="tab-6">
1427                    Confidentiality policy
1428                </a>
1429                    </div>
1430    </div>
1431</div>
1432    </section>
1433    <section class="grid-container container-l" id="articleTop">
1434        <div class="content grid col-16">
1435            <div id="contInfo">
1436    <article class="article" itemscope="" itemtype="https://schema.org/Article" itemprop="mainContentOfPage">
1437
1438        <p itemprop="text"></p>
1439
1440        <p itemprop="articleBody">
1441               
1442                <p>
1443                    METEO CONSULT was created in 1988 - more than 30 years ago! It was the first private, independent French company providing
1444                    weather forecasting and analysis in France.
1445                </p>
1446                <p>
1447                    We are available via all the distribution channels so you need never be without us! Internet, mobile apps and tablets ...
1448                </p>
1449
1450                <p>
1451                    So you'll have understood by now that weather forecasting is our specialty! Daily weather, hour by hour forecasts, marine weather,
1452                    beach weather, skiiing weather, holiday weather, the weather in the islands or around the world...
1453                    it's a long list but that's not everything!
1454                    We put a lot of effort into making this often complex science accessible and easy to understand for everyone.
1455                    Our news tab tells you about and explains special weather and climatic events in France and around the world.
1456                </p>
1457                <p>
1458                    We operate several different web sites :
1459                     <br/><a href={ urlMc } target='_blank'>https://www.meteoconsult.co.uk/</a> our Premium weather site.
1460                     <br/><a href={ urlMarine } target='_blank'>https://marine.meteoconsult.co.uk</a> for essential information about the weather at sea
1461                     <br/><a href={ homeUrl } target='_blank'>https://www.weathercrave.co.uk/weather-forecast-united-kingdom/weather-forecast-united-kingdom-today</a> our website for the general public
1462                 </p>
1463
1464                <p>
1465                    In total, more than 8 million views per day, all thanks to top quality weather forecasts.
1466                    We have professional meteorologists and an effective, innovative and reactive IT team, which make all the difference!
1467                </p>
1468             <br/>
1469                
1470                 </p>
1471
1472    </article>
1473</div>
1474        </div>
1475    </section>
1476
1477
1478<footer id="footer" class="footer">
1479    <div class="grid-container container-fluid">
1480        <div class="grid col-16 section">
1481            <div class="grid-container">
1482                <div class="grid col-16 col-m-5 col-l-6 items-0">
1483                    <div class="logo">
1484                        <svg class="icon icon-LogoWeatherCrave " aria-hidden="true" ><use xlink:href="/images/int/svg/icons-v1.1.33.svg#logo-weather-crave" /></svg>
1485                        <div class="logo-devices">
1486                            <svg class="icon icon-Mobile " aria-hidden="true" ><use xlink:href="/images/int/svg/icons-v1.1.33.svg#mobile" /></svg>
1487                            <svg class="icon icon-Laptop " aria-hidden="true" ><use xlink:href="/images/int/svg/icons-v1.1.33.svg#laptop" /></svg>
1488                            <svg class="icon icon-Tv " aria-hidden="true" ><use xlink:href="/images/int/svg/icons-v1.1.33.svg#tv" /></svg>
1489                        </div>
1490                    </div>
1491                </div>
1492
1493                <ul class="grid col-16 col-m-5 items items-1">
1494                    <li class="item">
1495                        <a href="https://www.weathercrave.co.uk/change-language" class="link">
1496                            <strong>Language of the site : EN</strong>
1497                                                        <img class="flag lazyload"
1498                                 src="data:image/png;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs="
1499                                 data-src="https://static5.mclcm.net/lcm2018/int/flags/gb.svg"
1500                                 alt="gb"
1501                                 width="20"
1502                                 height="15"
1503                            />
1504                        </a>
1505                    </li>
1506
1507                                        <li class="item">
1508                        <a href="https://www.weathercrave.co.uk/weather-services/presentation/newsroom" class="link">Our weather experts</a>
1509                    </li>
1510                                        <li class="item">
1511                        <a href="https://www.weathercrave.co.uk/weather-services/info/about-meteo-consult" class="link">About us</a>
1512                    </li>
1513                                        <li class="item">
1514                        <a href="https://www.weathercrave.co.uk/contact-form" class="link">Contact us</a>
1515                    </li>
1516                                        <li class="item">
1517                        <a href="https://www.weathercrave.co.uk/legend-pictograms" class="link">Legend of pictograms</a>
1518                    </li>
1519                                    </ul>
1520
1521                <ul class="grid col-16 col-m-5 items items-2">
1522                    <li class="item">METEO CONSULT</li>
1523                                        <li class="item">
1524                        <a href="https://marine.meteoconsult.co.uk" class="link">Shipping Forecast</a>
1525                    </li>
1526                                        <li class="item">
1527                        <a href="https://www.meteoconsult.co.uk/" class="link">Professional Forecast</a>
1528                    </li>
1529                                    </ul>
1530
1531                            </div>
1532
1533            <div class="app-links">
1534                <div class="label">Get our apps :</div>
1535
1536                <div class="icons">
1537                    <button class="a-href"
1538                            aria-label=""
1539                            title="Weather app iPhone and iPad"
1540                            data-href="https://itunes.apple.com/fr/app/la-chaine-meteo/id324565014?mt=8"
1541                    >
1542                        <img class="lazyload icon"
1543                             src="data:image/png;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs="
1544                             data-src="https://static5.mclcm.net/lcm2018/en/common/apple-store-badge-130x40.png"
1545                             data-srcset="https://static5.mclcm.net/lcm2018/en/common/apple-store-badge-130x40.png 130w, https://static5.mclcm.net/lcm2018/en/common/apple-store-badge-260x80.png 260w"
1546                             alt="Weather app iPhone and iPad"
1547                             width="130"
1548                             height="40"
1549                             sizes="130px"
1550                        />
1551                    </button>
1552
1553                    <button class="a-href"
1554                            aria-label=""
1555                            title="Android Weather app"
1556                            data-href="https://play.google.com/store/apps/details?id=com.lachainemeteo.androidapp&amp;hl=fr"
1557                    >
1558
1559                        <img class="lazyload icon"
1560                             src="data:image/png;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs="
1561                             data-src="https://static5.mclcm.net/lcm2018/en/common/google-play-badge-130x40.png"
1562                             data-srcset="https://static5.mclcm.net/lcm2018/en/common/google-play-badge-130x40.png 130w, https://static5.mclcm.net/lcm2018/en/common/google-play-badge-260x80.png 260w"
1563                             alt="Android Weather app"
1564                             width="130"
1565                             height="40"
1566                             sizes="130px"
1567                        />
1568                    </button>
1569                </div>
1570            </div>
1571
1572            <ul class="sitemap">
1573                                <li class="item">
1574                    <a href="https://www.weathercrave.co.uk/weather-services/info/legal-notice" class="link">Legal notice</a>
1575                </li>
1576                                <li class="item">
1577                    <a href="https://www.weathercrave.co.uk/weather-services/info/terms-of-service" class="link">TOS</a>
1578                </li>
1579                                <li class="item">
1580                    <a href="https://www.weathercrave.co.uk/website-map" class="link">Site map</a>
1581                </li>
1582                                <li class="item">
1583                    <a href="https://www.weathercrave.co.uk/weather-services/info/cookies" class="link">Information about cookies</a>
1584                </li>
1585                                <li class="item">
1586                    <a href="https://www.weathercrave.co.uk/weather-services/info/privacy-policy" class="link">Confidentiality policy</a>
1587                </li>
1588                
1589                <li class="item">
1590                    <button id="cookies-config" class="link">Set cookies</button>
1591                </li>
1592
1593                <li class="item">
1594                    <button class="link" onclick="__tcfapi('show', 2, function(){}, {})">Display the Privacy Center</button>
1595                </li>
1596            </ul>
1597
1598            <p class="copyright"><span onclick="copySlotsInfo()">©</span>2026 Weather Crave</p>
1599        </div>
1600    </div>
1601</footer>
1602
1603<script>
1604    const copySlotsInfo = () => {
1605        let text = "";
1606
1607        window.googletag.pubads().getSlots().forEach( slot => {
1608                let slotData = {
1609                    invCode: null,
1610                    slotName: null,
1611                    tag: null,
1612                    campagne: null
1613                }
1614            slotData.campagne = slot.getResponseInformation();
1615
1616            let tag =  slot.getSlotId().getName();
1617
1618            lcm.gam.getSlots().forEach((gamSlot)=>{
1619                if(gamSlot.tag === tag){
1620                    slotData.invCode = gamSlot.invCode;
1621                    slotData.slotName = gamSlot.slotName;
1622                    slotData.tag = gamSlot.tag;
1623                }
1624            });
1625            text += "\n \n" + JSON.stringify(slotData);
1626        });
1627
1628        navigator.clipboard.writeText(text).then(function() {
1629            console.log('Slots info to clipboard OK');
1630        }, function(err) {
1631            console.log('Slots info to clipboard KO');
1632            // console.log(err);
1633        });
1634    }
1635</script>
1635
1636
1637
1638<script>
1639    
1640
1641    evt.listen('DOMContentLoaded', () => {
1642
1643    try {
1644        const header = document.getElementById('header');
1645        let btnMagnifier = header.querySelector('#mainSearch');
1646        let btnFavorite = header.querySelector('.magnifier-favorite');
1647
1648        if (btnMagnifier !== null) {
1649            btnMagnifier.addEventListener('click', () => {
1650                loadScriptBuild('autocomplete_header');
1651                header.querySelector('#genericSearch input[type="search"]').focus();
1652            }, {once: true});
1653            if(btnFavorite){
1654                btnFavorite.addEventListener('click', () => {
1655                    loadScriptBuild('autocomplete_header');
1656                    header.querySelector('#genericSearch input[type="search"]').focus();
1657                }, {once: true});
1658            }
1659        }
1660
1661        let field = header.querySelector('#genericSearch input[type="search"]');
1662        if (field !== null) {
1663            field.addEventListener('focus', () => {
1664                loadScriptBuild('autocomplete_header');
1665            }, {once: true});
1666        }
1667
1668    } catch (e) {
1669        console.warn('header error', e);
1670        console.warn(e);
1671    }
1672
1673
1674    loadScriptBuild('cookies');
1675    loadScriptBuild('panel_manager');
1676
1677    
1678
1679});
1680
1681
1682evt.listen('autocomplete_headerLoaded', () => {
1683    let starFull = '<svg class="icon icon-StarFull " aria-hidden="true" ><use xlink:href="/images/int/svg/icons-v1.1.33.svg#star-full" /></svg>';
1684    let historical = '<svg class="icon icon-Historical " aria-hidden="true" ><use xlink:href="/images/int/svg/icons-v1.1.33.svg#historical" /></svg>';
1685
1686    window.lcm.autocompleteHeader.getInstance()
1687        .setConfig({
1688            "containerId": "genericSearch",
1689            "urlSearchByEntity": 'https://www.weathercrave.co.uk/ajax/search-entity?e=',
1690            "urlSearchByQuery": 'https://www.weathercrave.co.uk/ajax/search-autocomplete?q=',
1691        })
1692        .setIconStarFull(starFull)
1693        .setIconHistorical(historical)
1694        .run();
1695});
1696
1697
1698evt.listen('shortcutLoaded', () => {
1699    evt.listen('lazyload', () => {
1700        window.lcm.shortcut
1701            .setUrlEntityForecast({
1702                url: 'https\u003A\/\/www.weathercrave.co.uk\/ajax\/entity\/99999\u002D88888',
1703                typeId: '99999',
1704                id: '88888'
1705            })
1706            .setIcons({
1707                alert: '\u003Csvg\u0020class\u003D\u0022icon\u0020icon\u002DAlertStroke\u0020\u0022\u0020aria\u002Dhidden\u003D\u0022true\u0022\u0020\u003E\u003Cuse\u0020xlink\u003Ahref\u003D\u0022\/images\/int\/svg\/icons\u002Dv1.1.33.svg\u0023alertStroke\u0022\u0020\/\u003E\u003C\/svg\u003E',
1708                close: '\u003Csvg\u0020class\u003D\u0022icon\u0020icon\u002DClose\u0020\u0022\u0020aria\u002Dhidden\u003D\u0022true\u0022\u0020\u003E\u003Cuse\u0020xlink\u003Ahref\u003D\u0022\/images\/int\/svg\/icons\u002Dv1.1.33.svg\u0023close\u0022\u0020\/\u003E\u003C\/svg\u003E',
1709                geolocation: '\u003Csvg\u0020class\u003D\u0022icon\u0020icon\u002DGeolocation\u0020\u0022\u0020aria\u002Dhidden\u003D\u0022true\u0022\u0020\u003E\u003Cuse\u0020xlink\u003Ahref\u003D\u0022\/images\/int\/svg\/icons\u002Dv1.1.33.svg\u0023geolocation\u0022\u0020\/\u003E\u003C\/svg\u003E',
1710                historical: '\u003Csvg\u0020class\u003D\u0022icon\u0020icon\u002DHistorical\u0020\u0022\u0020aria\u002Dhidden\u003D\u0022true\u0022\u0020\u003E\u003Cuse\u0020xlink\u003Ahref\u003D\u0022\/images\/int\/svg\/icons\u002Dv1.1.33.svg\u0023historical\u0022\u0020\/\u003E\u003C\/svg\u003E',
1711                starFull: '\u003Csvg\u0020class\u003D\u0022icon\u0020icon\u002DStarFull\u0020\u0022\u0020aria\u002Dhidden\u003D\u0022true\u0022\u0020\u003E\u003Cuse\u0020xlink\u003Ahref\u003D\u0022\/images\/int\/svg\/icons\u002Dv1.1.33.svg\u0023star\u002Dfull\u0022\u0020\/\u003E\u003C\/svg\u003E',
1712                chevronLeft: '\u003Csvg\u0020class\u003D\u0022icon\u0020icon\u002DChevronLeft\u0020\u0022\u0020aria\u002Dhidden\u003D\u0022true\u0022\u0020\u003E\u003Cuse\u0020xlink\u003Ahref\u003D\u0022\/images\/int\/svg\/icons\u002Dv1.1.33.svg\u0023angle\u002Dleft\u0022\u0020\/\u003E\u003C\/svg\u003E',
1713                chevronRight: '\u003Csvg\u0020class\u003D\u0022icon\u0020icon\u002DChevronRight\u0020\u0022\u0020aria\u002Dhidden\u003D\u0022true\u0022\u0020\u003E\u003Cuse\u0020xlink\u003Ahref\u003D\u0022\/images\/int\/svg\/icons\u002Dv1.1.33.svg\u0023angle\u002Dright\u0022\u0020\/\u003E\u003C\/svg\u003E',
1714                chevronRightBold: '\u003Csvg\u0020class\u003D\u0022icon\u0020icon\u002DChevronRightBold\u0020\u0022\u0020aria\u002Dhidden\u003D\u0022true\u0022\u0020\u003E\u003Cuse\u0020xlink\u003Ahref\u003D\u0022\/images\/int\/svg\/icons\u002Dv1.1.33.svg\u0023angle\u002Dright\u002Dbold\u0022\u0020\/\u003E\u003C\/svg\u003E'
1715            })
1716            .setPopinParams({
1717                deleteBookmark: {
1718                    title: "Confirmation",
1719                    message: "Your bookmark has been deleted",
1720                    close: true,
1721                    icon: 'none',
1722                    buttons: [{
1723                        label: "Close"
1724                    }]
1725                },
1726                deleteHistorical: {
1727                    title: "Confirmation",
1728                    message: "This forecast has been deleted from your search history",
1729                    close: true,
1730                    icon: 'none',
1731                    buttons: [{
1732                        label: "Close"
1733                    }]
1734                },
1735                connect: {
1736                    title: "Sorry !",
1737                    message: "To manage your favourites, you must be logged in.",
1738                    close: true,
1739                    icon: 'none',
1740                    buttons: [
1741                        {
1742                            label: "Register",
1743                            callback: function () {
1744                                window.location.href = 'https\u003A\/\/www.weathercrave.co.uk\/sign\u002Dup';
1745                            }
1746                        },
1747                        {
1748                            label: "Login",
1749                            callback: function () {
1750                                sessionStorage.setItem('redirectAfterLogin', window.location.href);
1751                                window.location.href = 'https\u003A\/\/www.weathercrave.co.uk\/sign\u002Din';
1752                            }
1753                        }
1754                    ]
1755                },
1756                favorite: {
1757                    title: "Your Bookmarks",
1758                    message: "To organize your bookmarks, you will be redirected to your My Account page",
1759                    close: true,
1760                    icon: "none",
1761                    buttons: [
1762                        {
1763                            label: "Cancel"
1764                        },
1765                        {
1766                            label: "Continue",
1767                            callback: function () {
1768                                window.location.href = 'https\u003A\/\/www.weathercrave.co.uk\/my\u002Daccount';
1769                            }
1770                        }
1771                    ]
1772                }
1773            });
1774    });
1775});
1776evt.listen('historicalLoaded', () => {
1777    window.lcm.historical
1778        .setCookieDomain('.weathercrave.co.uk')
1779        .load();
1780});
1781evt.listen('bookmarkLoaded', () => {
1782    window.lcm.bookmark
1783        .setUrlBookmarkList('https\u003A\/\/www.weathercrave.co.uk\/ajax\/favorites')
1784        .setUrlBookmarkDelete("https\u003A\/\/www.weathercrave.co.uk\/ajax\/favorite\/remove")
1785                .load();
1786});
1787
1788
1789evt.listen('cookiesLoaded', () => {
1790    loadScriptBuild('user');
1791});
1792
1793evt.listen('userLoaded', () => {
1794    if (!window.lcm.user.isLoaded()) {
1795        window.lcm.user
1796            .setCookieDomain('.weathercrave.co.uk')
1797            .setUrlInfo('https\u003A\/\/www.weathercrave.co.uk\/ajax\/user\u002Dinfos')
1798            .load();
1799    }
1800});
1801
1802evt.listen('menu_coreLoaded', () => {
1803    const addPlaceBtn = document.querySelector('#btnMorePlace');
1804    const formAddPlaceContainer = document.querySelector('#addPlaceHeader');
1805    // const containerMore = document.querySelector('.autocomplete-more');
1806    const addPlaceLabel = document.getElementById('autocomplete-more-label');
1807    const addPlaceCTA = document.getElementById('autocomplete-more-container');
1808
1809    addPlaceBtn.addEventListener('click', () => {
1810        document.querySelector('#resultContainerHeader').classList.add('fixed-open');
1811        addPlaceLabel.classList.add('d-none');
1812        addPlaceCTA.classList.add('d-none');
1813
1814        window.lcm.fetch('https://www.weathercrave.co.uk/ajax/add-place-form', {method: 'POST'})
1815            .then(response => response.json())
1816            .then((data) => {
1817                formAddPlaceContainer.innerHTML = data.html;
1818                const url = 'https\u003A\/\/www.weathercrave.co.uk\/ajax\/search\u002Dadd\u002Dplace';
1819                const form_add_place = document.getElementById('addPlaceHeader');
1820                const form_search_namePlace = document.getElementById('add_place_search_namePlace');
1821                const form_select_country = document.getElementById('add_place_search_country');
1822                const header = document.getElementById('header');
1823                const form = form_add_place.querySelector('form[name="add_place_search"]');
1824                let data_loaded = false;
1825
1826                function triggerForm() {
1827                    const searchQuery = document.querySelector('.autocomplete-field').value;
1828                    form_add_place.classList.toggle('active');
1829                    form_search_namePlace.value = searchQuery;
1830                    // TODO remove
1831                    window.scroll({top: form_add_place.offsetTop - header.offsetHeight, behavior: 'smooth'});
1832                }
1833
1834                if (!data_loaded) {
1835                    window.lcm.fetch(url)
1836                        .then(response => response.json())
1837                        .then((data) => {
1838                            for (let item in data) {
1839                                if (data.hasOwnProperty(item)) {
1840                                    let element = document.createElement("option");
1841                                    element.value = item;
1842                                    element.innerHTML = data[item];
1843                                    form_select_country.append(element);
1844                                }
1845                            }
1846
1847                            if (data.hasOwnProperty('France')) {
1848                                form_select_country.value = data['France'];
1849                            }
1850
1851                            data_loaded = true;
1852                            triggerForm();
1853                        })
1854                } else {
1855                    triggerForm();
1856                }
1857
1858
1859                form.addEventListener('submit', (e) => {
1860                    e.preventDefault();
1861                    const formData = new FormData(form);
1862                    window.lcm.fetch(form.action, {
1863                        method: form.method,
1864                        headers: {
1865                            'X-Requested-With': 'XMLHttpRequest'
1866                        },
1867                        body: formData
1868                    })
1869                        .then(response => response.json())
1870                        .then(data => {
1871                            if (data.success) {
1872                                const confirmationDiv = document.createElement('div');
1873                                confirmationDiv.classList.add('confirmation-message');
1874                                confirmationDiv.innerHTML = `Your message has been sent.
1875          <br/><p>Thank you.<br />
1875Our team will come back to you as soon as possible.<br />A très bientôt!</p> `;
1876                                formAddPlaceContainer.append(confirmationDiv);
1877                            } else {
1878                                const errorAddPlaceDiv = document.createElement('div');
1879                                errorAddPlaceDiv.classList.add('confirmation-message');
1880                                errorAddPlaceDiv.innerHTML = `Une erreur est survenu lors de la demande d'ajout d'un lieu.<br/><p>Contacter nous par email [email protected] (merci de préciser vos nom, prénom, email et les information du lieu).<br />Nos équipes vont revenir vers vous dans les meilleurs délais.<br />A très bientôt!</p>`;
1881                                formAddPlaceContainer.append(errorAddPlaceDiv);
1882                            }
1883                        })
1884                });
1885
1886            });
1887    });
1888
1889
1890    // load bkg
1891    let img = document.querySelector('#autocomplete-more-container img');
1892    window.lcm.lazyload.addLazyload(img);
1893
1894});
1895
1896
1897// TODO refacto
1898evt.listen('panel_managerLoaded', () => {
1899    const searchContainer = document.querySelector('#genericSearch');
1900    const searchInput = searchContainer.querySelector('input');
1901    // todo remove
1902    searchInput.disabled = false;
1903    const allResutContainer = document.querySelector('.result-all-container');
1904    const formContainer = document.querySelector('#genericSearch');
1905    const inputForm = formContainer.querySelector('input[name="q"]');
1906    const formSearch = formContainer.querySelector('.autocomplete-form');
1907    if (allResutContainer) {
1908        allResutContainer.addEventListener('click', () => {
1909            if (inputForm.value !== '') {
1910                formSearch.submit();
1911            }
1912        });
1913    }
1914
1915
1916    document.querySelector('#mainSearch').addEventListener('click', () => {
1917        loadScriptBuild('menu_core');
1918    }, {once: true});
1919
1920    if(document.querySelector('.magnifier-favorite')){
1921        document.querySelector('.magnifier-favorite').addEventListener('click', () => {
1922            loadScriptBuild('menu_core');
1923            document.getElementById('favoriteContainerHeader')?.scrollIntoView({ behavior: "smooth", block: "start", inline: "start" });
1924        }, {once: true});
1925    }
1926
1927
1928    evt.listen('DOMContentLoaded', () => {
1929        evt.listen('breakpoint', () => {
1930            if (['xxxl', 'xxl', 'xl', 'l'].indexOf(window.lcm.breakpoint.getCurrent()) !== -1) {
1931                loadScriptBuild('menu_core');
1932            }
1933            if (['xxxl'].indexOf(window.lcm.breakpoint.getCurrent()) !== -1) {
1934                window.lcm.panelManager.openOnLoad();
1935            }
1936        });
1937
1938    });
1939
1940});
1941
1942
1943    evt.listen('DOMContentLoaded', () => {
1944    loadScriptBuild('popin');
1945});
1946
1947evt.listen('popinLoaded', () => {
1948    window.lcm.popin.setCloseImg('\u003Csvg\u0020class\u003D\u0022icon\u0020icon\u002DClose\u0020\u0022\u0020aria\u002Dhidden\u003D\u0022true\u0022\u0020\u003E\u003Cuse\u0020xlink\u003Ahref\u003D\u0022\/images\/int\/svg\/icons\u002Dv1.1.33.svg\u0023close\u0022\u0020\/\u003E\u003C\/svg\u003E');
1949});    evt.listen('DOMContentLoaded', () => {
1950            document.getElementById('cookies-config').addEventListener('click', (e) => {
1951        e.preventDefault();
1952        e.stopPropagation();
1953        if (window.lcm.cmp){
1954            window.lcm.cmp.showConfig();
1955        } else {
1956                        window.location.href = `https\u003A\/\/www.weathercrave.co.uk\/weather\u002Dservices\/info\/cookies`
1957        }
1958    });
1959});
1960    const eventClickGeneric = function (evt) {
1961    let url = this.dataset.href;
1962    if (typeof url !== "undefined" && url !== '') {
1963        let target = this.dataset.target || '_self';
1964
1965        if (this.nodeName === 'A') {
1966            evt.preventDefault();
1967        }
1968
1969        // Append current page as callback for sign_in (replace existing cb if present)
1970        if (url.includes('/sign-in')) {
1971            const hash = url.indexOf('#');
1972            const baseUrl = hash > 0 ? url.substring(0, hash) : url;
1973            const anchor = hash > 0 ? url.substring(hash) : '';
1974            const cbValue = encodeURIComponent(window.location.href);
1975            const cbIndex = baseUrl.indexOf('cb=');
1976            if (cbIndex > -1) {
1977                let ampIndex = baseUrl.indexOf('&', cbIndex + 3);
1978                if (ampIndex === -1) ampIndex = baseUrl.length;
1979                url = baseUrl.substring(0, cbIndex) + 'cb=' + cbValue + baseUrl.substring(ampIndex) + anchor;
1980            } else {
1981                const separator = baseUrl.includes('?') ? '&' : '?';
1982                url = baseUrl + separator + 'cb=' + cbValue + anchor;
1983            }
1984        }
1985
1986        if (evt.ctrlKey || (navigator.platform.startsWith('Mac') && evt.metaKey) || target === '_blank') {
1987            window.open(url, '_blank');
1988        } else {
1989            try {
1990                //intertitiel
1991                const fakeLink = document.getElementById('interstitialFakeLink');
1992                fakeLink.href = url;
1993                fakeLink.click();
1994            } catch (e) {
1995                window.location.href = url;
1996            }
1997        }
1998    }
1999};
2000evt.listen('DOMContentLoaded', () => {
2001        document.querySelectorAll('.a-href').forEach(
2002        (el) => {
2003            el.addEventListener('click', eventClickGeneric);
2004        }
2005    );
2006});
2007                                            </script>
2007
2008
2009    
2010        
2010<script>
2011            function showCmpConfig() {                 if(typeof __tcfapi === 'undefined'){
2012                    loadCmpScripts();
2013                } else {
2014                    __tcfapi('show', 2, function() {}, {
2015                        jumpAt: 'privacy'
2016                    });
2017                }
2018            }
2019
2020                        const timetableStickyV2 = function () {
2021    const header = document.querySelector('#header');
2022    const forecastHeader = document.querySelector('#forecastHeader');
2023    const forecastTimetable = document.querySelector('#forecast-timetable');
2024
2025    let rAFScroll = null;
2026    const onScroll = () => {
2027        if (rAFScroll !== null) return;
2028        rAFScroll = window.requestAnimationFrame(() => {
2029            rAFScroll = null;
2030            if (window.scrollY >= header.clientHeight) {
2031                header.classList.add('logo-only');
2032                if(forecastHeader){
2033                    forecastHeader.classList.add('is-pinned');
2034                }
2035                if(forecastTimetable){
2036                    forecastTimetable.classList.add('is-pinned');
2037                }
2038            } else {
2039                header.classList.remove('logo-only');
2040                if(forecastHeader){
2041                    forecastHeader.classList.remove('is-pinned');
2042                }
2043
2044                if(forecastTimetable) {
2045                    forecastTimetable.classList.remove('is-pinned');
2046                }
2047            }
2048        });
2049    };
2050    window.addEventListener('scroll', onScroll, {passive: true});
2051
2052    evt.listen('menu_smallLoaded', () => {
2053        window.lcm.menuSmall.disable();
2054    });
2055};
2056
2057timetableStickyV2();
2058        </script>
2058
2059
2060<script>
2061            evt.dispatch('mainContentVisible');
2062</script>
2062
2063
2064<script>
2065    loadScriptBuild('refresh');
2066evt.listen('refreshLoaded', () => {
2067    window.lcm.refresh
2068            .load();
2069});
2070</script>
2070
2071</body>
2072</html>

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.