PageSourceSearch

https://www.weathercrave.co.uk/sign-in

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