PageSourceSearch

https://timerhaven.com/contact.html

html timerhaven.com collected 2026-10-02 01:46:14 UTC 20,589 bytes, 399 lines download raw bytes

1<!DOCTYPE html>
2<html lang="en">
3
4<head>
5  <link rel="preload" as="image" href="/assets/images/pomodoro-timer-share-image.webp" fetchpriority="high" media="(max-width: 768px)">
6  <link rel="icon" type="image/png" href="/assets/images/social-share-image.webp" />
7
8  <!-- Google tag (gtag.js) -->
vendor: 67 bytes, lines 8-9
8
9  <script async src="https://www.googletagmanager.com/gtag/js?id=
9G-X7WBE4P25
vendor: 15 bytes, lines 9-10
9"></script>
10  
10<script>
11    
vendor: 147 bytes, lines 11-15
11window.dataLayer = window.dataLayer || [];
12    function gtag() { dataLayer.push(arguments); }
13    gtag('js', new Date());
14
15    gtag('config', '
15G-X7WBE4P25
vendor: 7 bytes, lines 15-16
15');
16  
16</script>
16
17
18  <meta charset="UTF-8">
19  <title>Contact — TimerHaven</title>
20  <link rel="canonical" href="https://timerhaven.com//contact.html" />
21  <link rel="alternate" href="https://timerhaven.com//contact.html" hreflang="en" />
22  <link rel="alternate" href="https://timerhaven.com//contact.html" hreflang="x-default" />
23  <meta name="keywords" content="contact, support, timerhaven, productivity tools, help">
24  <meta name="viewport" content="width=device-width, initial-scale=1">
25    <link rel="preconnect" href="https://cdn.jsdelivr.net" />
26  <link rel="preconnect" href="https://cdnjs.cloudflare.com" />
27  <meta name="description" content="Contact TimerHaven.com for support, suggestions, or questions.">
28  <link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet">
29  <!-- Consent assets (centralized): CSS & JS -->
30  <link rel="stylesheet" href="assets/css/consent.css"  media="print" onload="this.media='all'">
31  
31<script src="assets/js/consent.js" defer></script>
31
32  <style>
33    body {
34      background: #f4f7fb;
35      font-family: 'Montserrat', Arial, sans-serif; font-display: swap;
36    }
37
38    /* Support RTL for Arabic */
39    body[dir="rtl"] {
40      text-align: right;
41    }
42
43    .container {
44      max-width: 600px;
45      margin: 2em auto;
46      background: #fff;
47      border-radius: 14px;
48      box-shadow: 0 2px 12px #e0e7ef;
49      padding: 2em 2em 1.5em;
50    }
51
52    h1 {
53      color: #185a9d;
54      font-size: 2em;
55      margin-bottom: 0.7em;
56    }
57
58    label {
59      font-weight: 600;
60    }
61
62    .back-link {
63      display: inline-block;
64      margin-bottom: 1.2em;
65      color: #007bff;
66      text-decoration: none;
67      font-weight: bold;
68    }
69
70    .back-link:hover {
71      text-decoration: underline;
72    }
73  </style>
74  
74<script>
75    const translations = {
76      en: {
77        "page-title": "Contact — TimerHaven",
78        "back-to-menu": "Back to Main Menu",
79        "contact-us-h1": "Contact Us",
80        "contact-intro": "Have a question, suggestion, or need help? Fill out the form below or email us directly at",
81        "label-name": "Your Name:",
82        "label-email": "Your Email:",
83        "label-message": "Message:",
84        "btn-send": "Send Message",
85        "reply-notice": "We aim to reply within 1-2 business days.",
86        "footer-copyright": "© 2025 TimerHaven. All tools are free and privacy-friendly.",
87        "footer-privacy": "Privacy Policy",
88        "footer-terms": "Terms",
89        "footer-contact": "Contact",
90        "alert-empty": "Please enter a message before sending.",
91        "alert-fill-all": "Please fill in all fields before sending.",
92        "status-sending": "Sending...",
93        "success-h1": "Thank You!",
94        "success-p": "Your message has been sent successfully. We will get back to you soon.",
95        "btn-return-home": "Return to Home",
96        "error-prefix": "Error: ",
97        "error-fail": "Failed to send message. Please try again later or email us directly."
98      },
99      fr: {
100        "page-title": "Contact — TimerHaven",
101        "back-to-menu": "Retour au menu principal",
102        "contact-us-h1": "Contactez-nous",
103        "contact-intro": "Une question, une suggestion ou besoin d'aide — Remplissez le formulaire ci-dessous ou envoyez-nous un e-mail directement à",
104        "label-name": "Votre nom :",
105        "label-email": "Votre e-mail :",
106        "label-message": "Message :",
107        "btn-send": "Envoyer le message",
108        "reply-notice": "Nous visons à répondre sous 1 à 2 jours ouvrables.",
109        "footer-copyright": "© 2025 TimerHaven. Tous les outils sont gratuits et respectueux de la vie privée.",
110        "footer-privacy": "Politique de confidentialité",
111        "footer-terms": "Conditions",
112        "footer-contact": "Contact",
113        "alert-empty": "Veuillez saisir un message avant d'envoyer.",
114        "alert-fill-all": "Veuillez remplir tous les champs avant d'envoyer.",
115        "status-sending": "Envoi en cours...",
116        "success-h1": "Merci !",
117        "success-p": "Votre message a été envoyé avec succès. Nous vous répondrons bientôt.",
118        "btn-return-home": "Retour à l'accueil",
119        "error-prefix": "Erreur : ",
120        "error-fail": "Échec de l'envoi du message. Veuillez réessayer plus tard ou nous envoyer un e-mail directement."
121      },
122      es: {
123        "page-title": "Contacto — TimerHaven",
124        "back-to-menu": "Volver al menú principal",
125        "contact-us-h1": "Contáctenos",
126        "contact-intro": "¿Tiene alguna pregunta, sugerencia o necesita ayuda? Complete el formulario a continuación o envíenos un correo electrónico directamente a",
127        "label-name": "Su nombre:",
128        "label-email": "Su correo electrónico:",
129        "label-message": "Mensaje:",
130        "btn-send": "Enviar mensaje",
131        "reply-notice": "Nuestro objetivo es responder en un plazo de 1 a 2 días hábiles.",
132        "footer-copyright": "© 2025 TimerHaven. Todas las herramientas son gratuitas y respetuosas con la privacidad.",
133        "footer-privacy": "Política de privacidad",
134        "footer-terms": "Términos",
135        "footer-contact": "Contacto",
136        "alert-empty": "Por favor, ingrese un message antes de enviar.",
137        "alert-fill-all": "Por favor, complete todos los campos antes de enviar.",
138        "status-sending": "Enviando...",
139        "success-h1": "¡Gracias!",
140        "success-p": "Su mensaje ha sido enviado con éxito. Nos pondremos en contacto con usted pronto.",
141        "btn-return-home": "Volver al inicio",
142        "error-prefix": "Error: ",
143        "error-fail": "No se pudo enviar el mensaje. Inténtelo de nuevo más tarde o envíenos un correo electrónico directamente."
144      },
145      de: {
146        "page-title": "Kontakt — TimerHaven",
147        "back-to-menu": "Zurück zum Hauptmenü",
148        "contact-us-h1": "Kontaktieren Sie uns",
149        "contact-intro": "Haben Sie eine Frage, einen Vorschlag oder benötigen Sie Hilfe? Füllen Sie das folgende Formular aus oder senden Sie uns direkt eine E-Mail an",
150        "label-name": "Ihr Name:",
151        "label-email": "Ihre E-Mail:",
152        "label-message": "Nachricht:",
153        "btn-send": "Nachricht senden",
154        "reply-notice": "Wir bemühen uns, innerhalb von 1-2 Werktagen zu antworten.",
155        "footer-copyright": "© 2025 TimerHaven. Alle Tools sind kostenlos und datenschutzfreundlich.",
156        "footer-privacy": "Datenschutz",
157        "footer-terms": "Nutzungsbedingungen",
158        "footer-contact": "Kontakt",
159        "alert-empty": "Bitte geben Sie eine Nachricht ein, bevor Sie senden.",
160        "alert-fill-all": "Bitte füllen Sie alle Felder aus, bevor Sie senden.",
161        "status-sending": "Wird gesendet...",
162        "success-h1": "Vielen Dank!",
163        "success-p": "Ihre Nachricht wurde erfolgreich gesendet. Wir werden uns bald bei Ihnen melden.",
164        "btn-return-home": "Zurück zur Startseite",
165        "error-prefix": "Fehler: ",
166        "error-fail": "Nachricht konnte nicht gesendet werden. Bitte versuchen Sie es später noc
166h einmal oder senden Sie uns direkt eine E-Mail."
167      },
168      ru: {
169        "page-title": "Контакт — TimerHaven",
170        "back-to-menu": "Вернуться в главное меню",
171        "contact-us-h1": "Свяжитесь с нами",
172        "contact-intro": "Есть вопросы, предложения или нужна помощь? Заполните форму ниже или напишите нам напрямую по адресу",
173        "label-name": "Ваше имя:",
174        "label-email": "Ваш email:",
175        "label-message": "Сообщение:",
176        "btn-send": "Отправить сообщение",
177        "reply-notice": "Мы стараемся отвечать в течение 1-2 рабочих дней.",
178        "footer-copyright": "© 2025 TimerHaven. Все инструменты бесплатны и уважают вашу конфиденциальность.",
179        "footer-privacy": "Политика конфиденциальности",
180        "footer-terms": "Условия",
181        "footer-contact": "Контакт",
182        "alert-empty": "Пожалуйста, введите сообщение перед отправкой.",
183        "alert-fill-all": "Пожалуйста, заполните все поля перед отправкой.",
184        "status-sending": "Отправка...",
185        "success-h1": "Спасибо!",
186        "success-p": "Ваше сообщение было успешно отправлено. Мы скоро с вами свяжемся.",
187        "btn-return-home": "Вернуться на главную",
188        "error-prefix": "Ошибка: ",
189        "error-fail": "Не удалось отправить сообщение. Пожалуйста, попробуйте позже или напишите нам напрямую."
190      },
191      el: {
192        "page-title": "Επικοινωνία — TimerHaven",
193        "back-to-menu": "Επιστροφή στο κύριο μενού",
194        "contact-us-h1": "Επικοινωνήστε μαζί μας",
195        "contact-intro": "Έχετε κάποια ερώτηση, πρόταση ή χρειάζεστε βοήθεια; Συμπληρώστε την παρακάτω φόρμα ή στείλτε μας email απευθείας στο",
196        "label-name": "Το όνομά σας:",
197        "label-email": "Το email σας:",
198        "label-message": "Μήνυμα:",
199        "btn-send": "Αποστολή μηνύματος",
200        "reply-notice": "Στόχος μας είναι να απαντήσουμε εντός 1-2 εργάσιμων ημερών.",
201        "footer-copyright": "© 2025 TimerHaven. Όλα τα εργαλεία είναι δωρεάν και φιλικά προς το απόρρητο.",
202        "footer-privacy": "Πολιτική απορρήτου",
203        "footer-terms": "Όροι",
204        "footer-contact": "Επικοινωνία",
205        "alert-empty": "Παρακαλούμε εισάγετε ένα μήνυμα πριν από την αποστολή.",
206        "alert-fill-all": "Παρακαλούμε συμπληρώστε όλα τα πεδία πριν από την αποστολή.",
207        "status-sending": "Αποστολή...",
208        "success-h1": "Ευχαριστούμε!",
209        "success-p": "Το μήνυμά σας στάλθηκε με επιτυχία. Θα επικοινωνήσουμε μαζί σας σύντομα.",
210        "btn-return-home": "Επιστροφή στην αρχική",
211        "error-prefix": "Σφάλμα: ",
212        "error-fail": "Αποτυχία αποστολής μηνύματος. Παρακαλούμε δοκιμάστε ξανά αργότερα ή στείλτε μας email απευθείας."
213      },
214      ar: {
215        "page-title": "اتصل بنا — TimerHaven",
216        "back-to-menu": "العودة إلى القائمة الرئيسية",
217        "contact-us-h1": "اتصل بنا",
218        "contact-intro": "لديك سؤال أو اقتراح أو تحتاج إلى مساعدة؟ املأ النموذج أدناه أو راسلنا مباشرة على",
219        "label-name": "اسمك:",
220        "label-email": "بريدك الإلكتروني:",
221        "label-message": "الرسالة:",
222        "btn-send": "إرسال الرسالة",
223        "reply-notice": "نهدف للرد خلال 1-2 أيام عمل.",
224        "footer-copyright": "© 2025 تايمرهافن. جميع الأدوات مجانية وتحترم الخصوصية.",
225        "footer-privacy": "سياسة الخصوصية",
226        "footer-terms": "الشروط",
227        "footer-contact": "اتصل بنا",
228        "alert-empty": "يرجى إدخال رسالة قبل الإرسال.",
229        "alert-fill-all": "يرجى ملء جميع الحقول قبل الإرسال.",
230        "status-sending": "جاري الإرسال...",
231        "success-h1": "شكراً لك!",
232        "success-p": "تم إرسال رسالتك بنجاح. سنرد عليك قريباً.",
233        "btn-return-home": "العودة للرئيسية",
234        "error-prefix": "خطأ: ",
235        "error-fail": "فشل إرسال الرسالة. يرجى المحاولة مرة أخرى لاحقاً أو مراسلتنا مباشرة عبر البريد الإلكتروني."
236      }
237    };
238    function getStoredLang() {
239      try {
240        const s = localStorage.getItem('timerhavenLang');
241        if (s && typeof s === 'string') return s.slice(0, 2);
242      } catch (e) { }
243      return 'en';
244    }
245    function updateLanguage(lang) {
246      if (!lang) lang = getStoredLang();
247      if (!translations[lang]) lang = 'en';
248      document.documentElement.lang = lang;
249      if (lang === 'ar') {
250        document.body.dir = 'rtl';
251      } else {
252        document.body.dir = 'ltr';
253      }
254      Object.keys(translations[lang]).forEach(id => {
255        const el = document.getElementById(id);
256        if (el) {
257          if (el.tagName === 'A' && id === 'back-to-menu') {
258            el.innerHTML = '<i class="fa fa-arrow-left" aria-hidden="true"></i> ' + translations[lang][id];
259            if (lang === 'ar') el.innerHTML = translations[lang][id] + ' <i class="fa fa-arrow-right" aria-hidden="true"></i>';
260          } else {
261            el.textContent = translations[lang][id];
262          }
263        }
264      });
265      document.title = translations[lang]["page-title"];
266    }
267    window.addEventListener('DOMContentLoaded', () => updateLanguage());
268    window.__timerhaven_ad_client = "ca-pub-0467059729557007";
269  </script>
269
270  
270<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-0467059729557007"
271    crossorigin="anonymous"></script>
271
272
273  <meta property="og:type" content="website">
274  <meta property="og:title" content="Contact — TimerHaven">
275  <meta property="og:description" content="Contact TimerHaven.com for support, suggestions, or questions.">
276  <meta property="og:image" content="https://timerhaven.com/images/social-banner.webp">
277  <meta property="og:url" content="https://timerhaven.com//contact.html">
278  <meta property="og:site_name" content="TimerHaven">
279  <meta property="og:locale" content="en_US">
280  <meta name="twitter:card" content="summary_large_image">
281  <meta name="twitter:title" content="Contact — TimerHaven">
282  <meta name="twitter:description" content="Contact TimerHaven.com for support, suggestions, or questions.">
283  <meta name="twitter:image" content="https://timerhaven.com/images/social-banner.webp">
284  <link rel="preload" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/webfonts/fa-solid-900.woff2" as="font" type="font/woff2" crossorigin>
285  <link rel="preload" as="image" href="/assets/images/pomodoro-timer-share-image.webp" fetchpriority="high">
286</head>
287
288<body>
289    <div class="container" id="mainContainer">
290    <a href="index.html" class="back-link" id="back-to-menu"><i class="fa fa-arrow-left" aria-hidden="true"></i> Back to
291      Main Menu</a>
292    <h1 id="contact-us-h1">Contact Us</h1>
293    <p>
294      <span id="contact-intro">Have a question, suggestion, or need help? Fill out the form below or email us directly
295        at</span>
296      <strong>[email protected]</strong>.
297    </p>
298    <form id="contactForm" onsubmit="return false;">
299      <div class="mb-3">
300        <label for="name" class="form-label" id="label-name">Your Name:</label>
301        <input type="text" class="form-control" id="name" name="Name" required>
302      </div>
303      <div class="mb-3">
304        <label for="email" class="form-label" id="label-email">Your Email:</label>
305        <input type="email" class="form-control" id="email" name="Email" required>
306      </div>
307      <div class="mb-3">
308        <label for="message" class="form-label" id="label-message">Message:</label>
309        <textarea class="form-control" id="message" name="Message" rows="4" required></textarea>
310      </div>
311      <button type="button" id="sendMessageBtn" class="btn btn-primary"><span id="btn-send">Send Message</span></button>
312    </form>
313    <p style="color:#888; font-size:0.98em; margin-top:1.5em;" id="reply-notice">
314      We aim to reply within 1-2 business days.
315    </p>
316  </div>
317  <footer style="text-align:center; padding:1em 0; color:#555;">
318    <span id="footer-copyright">&copy; 2025 TimerHaven. All tools are free and privacy-friendly.</span><br>
319    <a href="/privacy.html" id="footer-privacy">Privacy Policy</a> ·
320    <a href="/terms.html" id="footer-terms">Terms</a> ·
321    <a href="/contact.html" id="footer-contact">Contact</a>
322  </footer>
323  
323<script>
324    (function () {
325      const sendBtn = document.getElementById('sendMessageBtn');
326      if (!sendBtn) return;
327      const mainContainer = document.getElementById('mainContainer');
328      const form = document.getElementById('contactForm');
329      const lang = getStoredLang();
330      const t = translations[lang] || translations.en;
331      function handleSend() {
332        const name = document.getElementById('name').value.trim();
333        const email = document.getElementById('email').value.trim();
334        const message = document.getElementById('message').value.trim();
335        if (!name || !email || !message) {
336          alert(t["alert-fill-all"] || t["alert-empty"]);
337          return;
338        }
339        sendBtn.disabled = true;
340        const sendTextEl = document.getElementById('btn-send');
341        if (sendTextEl) sendTextEl.textContent = t["status-sending"];
342        const payload = {
343          name: name,
344          email: email,
345          message: message,
346          pageUrl: window.location.href,
347          userAgent: navigator.userAgent
348        };
349        fetch('api/contact.php', {
350          method: 'POST',
351          headers: {
352            'Content-Type': 'application/json',
353            'X-Contact-Secret': '469b5d7e1ef245d7b82185dda0572841cf7fdd9d223148f0b8debb90bcb9697f'
354          },
355          body: JSON.stringify(payload)
356        })
357          .then(response => response.json())
358          .then(data => {
359            if (data.ok) {
360              const backIcon = lang === 'ar' ? '<i class="fa fa-arrow-right" aria-hidden="true"></i>' : '<i class="fa fa-arrow-left" aria-hidden="true"></i>';
361              const backText = lang === 'ar' ? t["back-to-menu"] + ' ' + backIcon : backIcon + ' ' + t["back-to-menu"];
362              mainContainer.innerHTML = `
363                <a href="index.html" class="back-link">${backText}</a>
364                <h1>${t["success-h1"]}</h1>
365                <p>${t["success-p"]}</p>
366                <a href="index.html" class="btn btn-primary">${t["btn-return-home"]}</a>
367              `;
368            } else {
369              alert(t["error-prefix"] + (data.error || 'Unknown error occurred.'));
370              sendBtn.disabled = false;
371              if (sendTextEl) sendTextEl.textContent = t["btn-send"];
372            }
373          })
374          .catch(error => {
375            console.error('Contact Error:', error);
376            alert(t["error-fail"]);
377            sendBtn.disabled = false;
378            if (sendTextEl) sendTextEl.textContent = t["btn-send"];
379          });
380      }
381      sendBtn.addEventListener('touchstart', function (e) {
382        e.preventDefault();
383        handleSend();
384      });
385      sendBtn.addEventListener('click', function (e) {
386        e.preventDefault();
387        handleSend();
388      });
389      if (form) {
390        form.addEventListener('submit', function (e) {
391          e.preventDefault();
392          handleSend();
393        });
394      }
395    })();
396  </script>
396
397</body>
398
399</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.