VOICES AND VIBES RADIO

© 2026 Voices and Vibes Radio All rights reserved.

Voices & Vibes is an online radio station dedicated to
healing conversations and restorative music.
MONDAY-SATURDAY: Therapy-inspired conversations meet
smooth jazz — creating a space for reflection, growth,
and calm.
SUNDAYS: "Gospel Sunday" — Uplifting gospel music, church
spotlights, and faith-based healing. Featuring churches
from around the world sharing their missions, ministries,
and messages of hope.
Streaming 24/7 worldwide.
voicesandvibes.fm

Barnes and Noble or Amazon

Tony Williams — New Artist Announcement · Voices & Vibes Radio
New Artist Announcement
Voices & Vibes Radio
Houston, TX · Est. Jan 2026 · voicesandvibesradio.com
New Artist
Now joining the Voices & Vibes platform

🌿 Healing Tuesday

Begin Your Journey to Wholeness

Conversations about emotional healing, trauma recovery, and restoration | 6:00 AM - 10:00 PM

🎵 Listen LiveShare Your Story

What to Expect on Healing Tuesday

Every Tuesday, we focus on the journey from pain to wholeness. Through honest conversations about trauma, grief, mental health, and restoration—we create a safe space for healing.

🌅 Morning (6-10 AM)

Starting fresh after trauma
Morning mindfulness
Self-compassion practices

💙 Midday (10 AM-2 PM)

Processing grief & loss
Understanding PTSD
Finding support systems

🌿 Afternoon (2-6 PM)

Building resilience
Reclaiming your story
Healthy boundaries

🌙 Evening (6-10 PM)

Rest & restoration
Letting go
Peaceful reflection

Today's Healing Focus

"From Surviving to Thriving"

Join us as we discuss practical steps to move beyond trauma, reclaim joy, and build a life rooted in wholeness.

Healing Resources

📞 Crisis Support
National Suicide Prevention: 988
Crisis Text: 741741
🆘 SAMHSA
Mental Health Helpline
1-800-662-4357
🌐 Find a Therapist
Psychology Today
BetterHelp

Voices & Vibes Radio

Where Conversations Meet Jazz, and Faith Meets Healing

Home | [email protected]

💞 Connection Wednesday

Building Bridges, Deepening Bonds

Conversations about relationships, authentic connection, and meaningful community | 6:00 AM - 10:00 PM

🎵 Listen LiveShare Your Story

What to Expect on Connection Wednesday

Every Wednesday, we explore what it means to truly connect—with ourselves, with others, and with community. Building bridges that last.

🌅 Morning (6-10 AM)

Starting conversations
Active listening
Emotional availability

💞 Midday (10 AM-2 PM)

Healthy communication
Conflict resolution
Rebuilding trust

🤝 Afternoon (2-6 PM)

Finding your people
Building support
Loneliness & belonging

🌙 Evening (6-10 PM)

Connecting with yourself
Self-love
Peaceful reflection

Today's Connection Focus

"The Art of Being Present"

Join us as we discuss how to show up fully in our relationships and create space for genuine human connection.

Connection Resources

💬 Relationship Support
Domestic Violence: 1-800-799-7233
Love Is Respect: 22522
🧘 Communication
Gottman Institute
🌐 Find Community
Meetup

🎯 Purpose Thursday

Discover Your Calling, Walk in Purpose

Conversations about meaning, calling, career, and living with intention | 6:00 AM - 10:00 PM

🎵 Listen LiveShare Your Story

What to Expect on Purpose Thursday

Every Thursday, we explore living on purpose—discovering your gifts, aligning work with values, and making meaningful impact.

🌅 Morning (6-10 AM)

Discovering gifts
Clarifying values
Vision casting

💼 Midday (10 AM-2 PM)

Career transitions
Work-life integration
Entrepreneurship

🎯 Afternoon (2-6 PM)

Goal setting
Overcoming obstacles
Taking bold steps

🌙 Evening (6-10 PM)

Living with intention
Building legacy
Impact & influence

Today's Purpose Focus

"From Passion to Paycheck"

Join us as we discuss how to turn your purpose into a sustainable career and build a life where you wake up excited to work.

Purpose Resources

🎯 Career Guidance
The Muse
LinkedIn Learning
💡 Entrepreneurship
SCORE (Free Mentorship)
📖 Development
Coursera
Udemy

Voices & Vibes Radio

Where Conversations Meet Jazz, and Faith Meets Healing

Home |

🕊️ Freedom Friday

Celebrate Liberation & New Beginnings

Conversations about breakthrough, breaking free, and stepping into your best life | 6:00 AM - 10:00 PM

🎵 Listen LiveShare Your Story

What to Expect on Freedom Friday

Every Friday, we celebrate liberation—freedom from addiction, toxic relationships, limiting beliefs, and anything holding you back.

🌅 Morning (6-10 AM)

Breaking free
Letting go of shame
Fresh starts

💪 Midday (10 AM-2 PM)

Overcoming addiction
Leaving toxicity
Financial freedom

🎉 Afternoon (2-6 PM)

Victory stories
Celebrating wins
Living authentically

🌙 Evening (6-10 PM)

Gratitude for freedom
Weekend intentions
Looking ahead with hope

Today's Freedom Focus

"Breaking the Chains"

Join us as we discuss how to identify what's holding you back, take courageous action, and walk boldly into freedom.

Freedom Resources

🆘 Addiction Support
SAMHSA: 1-800-662-4357
AA
💰 Financial Freedom
Dave Ramsey
🧠 Mental Health
Crisis Text: 741741
BetterHelp

Voices & Vibes Radio

Where Conversations Meet Jazz, and Faith Meets Healing

Home | [email protected]

file_path:

Soul Saturday

Rest, Restore, Reconnect

Conversations about self-care, spirituality, and soul restoration | 6:00 AM - 10:00 PM

🎵 Listen LiveShare Your Journey

What to Expect on Soul Saturday

Every Saturday, we slow down and reconnect with our soul, spirituality, and inner peace through gentle conversations and soulful jazz.

🌅 Morning (6-10 AM)

Morning meditation
Gratitude practices
Stillness & silence

Midday (10 AM-2 PM)

Rest & restoration
Self-compassion
Creative expression

Afternoon (2-6 PM)

Exploring spirituality
Mindfulness practices
Inner peace

🌙 Evening (6-10 PM)

Weekly reflection
Releasing the week
Deep rest

Today's Soul Focus

"The Sacred Art of Rest"

Join us as we discuss why rest is spiritual, how to truly recharge, and how to protect your soul in a busy world.

Soul Care Resources

Meditation
Calm
🙏 Spirituality
Pray.com
Bible Gateway
Self-Care
Sanvello
Finch

Voices & Vibes Radio

Where Conversations Meet Jazz, and Faith Meets Healing

Home | [email protected] (COMING SOON)

Gospel Sunday - Rooted in Growth

Gospel Sunday

ROOTED IN GROWTH, GUIDED BY HOPE

Where faith, healing, and community meet through gospel music and church spotlights.

What to Expect Every Sunday

🙏

Gospel Music

Uplifting traditional and contemporary gospel songs.

Church Spotlights

Featuring local churches and ministries worldwide.

🎵

Gospel Jazz

Gospel jazz fusion to bridge faith and restoration.

Today's Focus

8am - 9am

Morning Praise

"Traditional gospel hymns and Sunday morning worship"

9am - 10am

Contemporary Gospel

"Modern gospel hits and worship anthems"

10am - 12pm

Church Spotlight Hour

"Featuring local churches with ministry highlights"

12pm - 2pm

Sunday Soul

"Gospel jazz fusion and peaceful Sunday rest"

⛪ Feature Your Church on Gospel Sunday

Free global publicity for your church. Share your mission, ministries, and upcoming events with our worldwide audience.

Submit Church Info

Partnership is 100% FREE. No cost, no strings attached.

Tony Williams — New Artist Announcement · Voices & Vibes Radio
New Artist Announcement
Voices & Vibes Radio
Houston, TX · Est. Jan 2026 · voicesandvibesradio.com
New Artist
Now joining the Voices & Vibes platform
"']/g, function(x) {return a[x];});return s;},thisHash = function() {var h = location.hash ? location.hash.substring(1) : null,a;if (!h)return null;if (h.match(/\?/)) {a = h.split('?');h = a[0];history.replaceState(undefined, undefined, '#' + h);window.location.search = a[1];}if (h.length > 0&& !h.match(/^[a-zA-Z]/))h = 'x' + h;if (typeof h == 'string')h = h.toLowerCase();return h;},scrollToElement = function(e, style, duration) {var y, cy, dy,start, easing, offset, f;if (!e)y = 0; else {offset = (e.dataset.scrollOffset ? parseInt(e.dataset.scrollOffset) : 0) * parseFloat(getComputedStyle(document.documentElement).fontSize);switch (e.dataset.scrollBehavior ? e.dataset.scrollBehavior : 'default') {case 'default':default:y = e.offsetTop + offset;break;case 'center':if (e.offsetHeight < window.innerHeight)y = e.offsetTop - ((window.innerHeight - e.offsetHeight) / 2) + offset; else y = e.offsetTop - offset;break;case 'previous':if (e.previousElementSibling)y = e.previousElementSibling.offsetTop + e.previousElementSibling.offsetHeight + offset; else y = e.offsetTop + offset;break;}}if (!style)style = 'smooth';if (!duration)duration = 750;if (style == 'instant') {window.scrollTo(0, y);return;}start = Date.now();cy = window.scrollY;dy = y - cy;switch (style) {case 'linear':easing = function (t) { return t };break;case 'smooth':easing = function (t) { return t<.5 ? 4*t*t*t : (t-1)*(2*t-2)*(2*t-2)+1 };break;}f = function() {var t = Date.now() - start;if (t >= duration)window.scroll(0, y); else {window.scroll(0, cy + (dy * easing(t / duration)));requestAnimationFrame(f);}};f();},scrollToTop = function() {scrollToElement(null);},loadElements = function(parent) {var a, e, x, i;$body.dispatchEvent(new CustomEvent('startComponents', { detail: { parent: parent } }));a = parent.querySelectorAll('iframe[data-src]:not([data-src=""])');for (i=0; i < a.length; i++) {x = a[i].cloneNode();x.setAttribute('src', x.dataset.src);x.dataset.initialSrc = x.dataset.src;x.dataset.src = '';a[i].replaceWith(x);}a = parent.querySelectorAll('video[autoplay]');for (i=0; i < a.length; i++) {if (a[i].paused)a[i].play();}e = parent.querySelector('[data-autofocus="1"]');x = e ? e.tagName : null;switch (x) {case 'FORM':e = e.querySelector('.field input, .field select, .field textarea');if (e)e.focus();break;default:break;}a = parent.querySelectorAll('unloaded-script');for (i=0; i < a.length; i++) {x = document.createElement('script');x.setAttribute('data-loaded', '');if (a[i].getAttribute('src'))x.setAttribute('src', a[i].getAttribute('src'));if (a[i].textContent)x.textContent = a[i].textContent;a[i].replaceWith(x);}x = new Event('loadelements');a = parent.querySelectorAll('[data-unloaded]');a.forEach((element) => {element.removeAttribute('data-unloaded');element.dispatchEvent(x);});},unloadElements = function(parent) {var a, e, x, i;$body.dispatchEvent(new CustomEvent('stopComponents', { detail: { parent: parent } }));a = parent.querySelectorAll('iframe[data-src=""]');for (i=0; i < a.length; i++) {if (a[i].dataset.srcUnload === '0')continue;if ('initialSrc' in a[i].dataset)a[i].dataset.src = a[i].dataset.initialSrc; else a[i].dataset.src = a[i].src;a[i].contentWindow.location.replace('about:blank');}a = parent.querySelectorAll('video');for (i=0; i < a.length; i++) {if (!a[i].paused)a[i].pause();}e = $(':focus');if (e)e.blur();};window._scrollToTop = scrollToTop;var thisUrl = function() {return window.location.href.replace(window.location.search, '').replace(/#$/, '');};var getVar = function(name) {var a = window.location.search.substring(1).split('&'),b, k;for (k in a) {b = a[k].split('=');if (b[0] == name)return b[1];}return null;};var errors = {handle: function(handler) {window.onerror = function(message, url, line, column, error) {(handler)(error.message);return true;};},unhandle: function() {window.onerror = null;}};var db = {open: function(objectStoreName, handler) {var request = indexedDB.open('carrd');request.onupgradeneeded = function(event) {event.target.result.createObjectStore(objectStoreName,{keyPath: 'id'});};request.onsuccess = function(event) {(handler)(event.target.result.transaction([objectStoreName],'readwrite').objectStore(objectStoreName));};},put: function(objectStore, values, handler) {var request = objectStore.put(values);request.onsuccess = function(event) {(handler)();};request.onerror = function(event) {throw new Error('db.put: error');};},get: function(objectStore, id, handler) {var request = objectStore.get(id);request.onsuccess = function(event) {if (!event.target.result)throw new Error('db.get: could not retrieve object with id "' + id + '"');(handler)(event.target.result);};request.onerror = function(event) {throw new Error('db.get: error');};},delete: function(objectStore, id, handler) {objectStore.delete(id).onsuccess = function(event) {(handler)(event.target.result);};},};var loadHandler = function() {setTimeout(function() {$body.classList.remove('is-loading');$body.classList.add('is-playing');setTimeout(function() {$body.classList.remove('is-playing');$body.classList.add('is-ready');}, 1000);}, 100);};on('load', loadHandler);(function() {var initialSection, initialScrollPoint, initialId,header, footer, name, hideHeader, hideFooter, disableAutoScroll,h, e, ee, k,locked = false,title = document.title,scrollPointParent = function(target) {while (target) {if (target.parentElement&& target.parentElement.tagName == 'SECTION')break;target = target.parentElement;}return target;},scrollPointSpeed = function(scrollPoint) {let x = parseInt(scrollPoint.dataset.scrollSpeed);switch (x) {case 5:return 250;case 4:return 500;case 3:return 750;case 2:return 1000;case 1:return 1250;default:break;}return 750;},doNextScrollPoint = function(event) {var e, target, id;e = scrollPointParent(event.target);if (!e)return;while (e && e.nextElementSibling) {e = e.nextElementSibling;if (e.dataset.scrollId) {target = e;id = e.dataset.scrollId;break;}}if (!target|| !id)return;if (target.dataset.scrollInvisible == '1')scrollToElement(target, 'smooth', scrollPointSpeed(target)); else location.href = '#' + id;},doPreviousScrollPoint = function(e) {var e, target, id;e = scrollPointParent(event.target);if (!e)return;while (e && e.previousElementSibling) {e = e.previousElementSibling;if (e.dataset.scrollId) {target = e;id = e.dataset.scrollId;break;}}if (!target|| !id)return;if (target.dataset.scrollInvisible == '1')scrollToElement(target, 'smooth', scrollPointSpeed(target)); else location.href = '#' + id;},doFirstScrollPoint = function(e) {var e, target, id;e = scrollPointParent(event.target);if (!e)return;while (e && e.previousElementSibling) {e = e.previousElementSibling;if (e.dataset.scrollId) {target = e;id = e.dataset.scrollId;}}if (!target|| !id)return;if (target.dataset.scrollInvisible == '1')scrollToElement(target, 'smooth', scrollPointSpeed(target)); else location.href = '#' + id;},doLastScrollPoint = function(e) {var e, target, id;e = scrollPointParent(event.target);if (!e)return;while (e && e.nextElementSibling) {e = e.nextElementSibling;if (e.dataset.scrollId) {target = e;id = e.dataset.scrollId;}}if (!target|| !id)return;if (target.dataset.scrollInvisible == '1')scrollToElement(target, 'smooth', scrollPointSpeed(target)); else location.href = '#' + id;},doNextSection = function() {var section;section = $('.site-main > .inner > section.active').nextElementSibling;if (!section || section.tagName != 'SECTION')return;location.href = '#' + section.id.replace(/-section$/, '');},doPreviousSection = function() {var section;section = $('.site-main > .inner > section.active').previousElementSibling;if (!section || section.tagName != 'SECTION')return;location.href = '#' + (section.matches(':first-child') ? '' : section.id.replace(/-section$/, ''));},doFirstSection = function() {var section;section = $('.site-main > .inner > section:first-of-type');if (!section || section.tagName != 'SECTION')return;location.href = '#' + section.id.replace(/-section$/, '');},doLastSection = function() {var section;section = $('.site-main > .inner > section:last-of-type');if (!section || section.tagName != 'SECTION')return;location.href = '#' + section.id.replace(/-section$/, '');},resetSectionChangeElements = function(section) {var ee, e, x;ee = section.querySelectorAll('[data-reset-on-section-change="1"]');for (e of ee) {x = e ? e.tagName : null;switch (x) {case 'FORM':e.reset();break;default:break;}}},activateSection = function(section, scrollPoint) {var sectionHeight, currentSection, currentSectionHeight,name, hideHeader, hideFooter, disableAutoScroll,ee, k;if (!section.classList.contains('inactive')) {name = (section ? section.id.replace(/-section$/, '') : null);disableAutoScroll = name ? ((name in sections) && ('disableAutoScroll' in sections[name]) && sections[name].disableAutoScroll) : false;if (scrollPoint)scrollToElement(scrollPoint, 'smooth', scrollPointSpeed(scrollPoint)); else if (!disableAutoScroll)scrollToElement(null);return false;} else {locked = true;if (location.hash == '#home')history.replaceState(null, null, '#');name = (section ? section.id.replace(/-section$/, '') : null);disableAutoScroll = name ? ((name in sections) && ('disableAutoScroll' in sections[name]) && sections[name].disableAutoScroll) : false;currentSection = $('section:not(.inactive)');if (currentSection) {currentSection.classList.add('inactive');document.title = title;unloadElements(currentSection);resetSectionChangeElements(currentSection);clearTimeout(window._sectionTimeoutId);doEvent(currentSection.id, 'onclose');setTimeout(function() {currentSection.style.display = 'none';currentSection.classList.remove('active');}, 250);}if (section.dataset.title)document.title = section.dataset.title + ' - ' + title;setTimeout(function() {section.style.display = '';trigger('resize');if (!disableAutoScroll)scrollToElement(null, 'instant');setTimeout(function() {section.classList.remove('inactive');section.classList.add('active');doEvent(section.id, 'onopen');setTimeout(function() {loadElements(section);if (scrollPoint)scrollToElement(scrollPoint, 'instant');locked = false;}, 500);}, 75);}, 250);}},doEvent = function(id, type) {if (window.CARRD_DISABLE_EVENTS === true) return;var name = id.split(/-[a-z]+$/)[0], result, i;if (name in sections&& 'events' in sections[name]&& type in sections[name].events) {for (i in sections[name].events[type]) {result = (sections[name].events[type][i])();if (result === false)delete sections[name].events[type][i];}}},sections = {'restorative': {events: {onopen: [function() { gtag('event', 'page_view', {'page_title': 'Restorative','page_location': 'https://voicesandvibesradio.carrd.co/#restorative',});},],},},'about': {events: {onopen: [function() { gtag('event', 'page_view', {'page_title': 'About','page_location': 'https://voicesandvibesradio.carrd.co/#about',});},],},},'church': {events: {onopen: [function() { gtag('event', 'page_view', {'page_title': 'Church','page_location': 'https://voicesandvibesradio.carrd.co/#church',});},],},},'book': {events: {onopen: [function() { gtag('event', 'page_view', {'page_title': 'Book','page_location': 'https://voicesandvibesradio.carrd.co/#book',});},],},},'monday': {events: {onopen: [function() { gtag('event', 'page_view', {'page_title': 'Monday','page_location': 'https://voicesandvibesradio.carrd.co/#monday',});},],},},'section10': {events: {onopen: [function() { gtag('event', 'page_view', {'page_title': 'Section10','page_location': 'https://voicesandvibesradio.carrd.co/#section10',});},],},},'tuesday': {hideFooter: true,events: {onopen: [function() { gtag('event', 'page_view', {'page_title': 'Tuesday','page_location': 'https://voicesandvibesradio.carrd.co/#tuesday',});},],},},'wednesday': {hideFooter: true,events: {onopen: [function() { gtag('event', 'page_view', {'page_title': 'Wednesday','page_location': 'https://voicesandvibesradio.carrd.co/#wednesday',});},],},},'section11': {hideFooter: true,events: {onopen: [function() { gtag('event', 'page_view', {'page_title': 'Section11','page_location': 'https://voicesandvibesradio.carrd.co/#section11',});},],},},'thursday': {hideFooter: true,events: {onopen: [function() { gtag('event', 'page_view', {'page_title': 'Thursday','page_location': 'https://voicesandvibesradio.carrd.co/#thursday',});},],},},'friday': {hideFooter: true,events: {onopen: [function() { gtag('event', 'page_view', {'page_title': 'Friday','page_location': 'https://voicesandvibesradio.carrd.co/#friday',});},],},},'section16': {events: {onopen: [function() { gtag('event', 'page_view', {'page_title': 'Section16','page_location': 'https://voicesandvibesradio.carrd.co/#section16',});},],},},'saturday': {hideFooter: true,events: {onopen: [function() { gtag('event', 'page_view', {'page_title': 'Saturday','page_location': 'https://voicesandvibesradio.carrd.co/#saturday',});},],},},'section12': {hideFooter: true,events: {onopen: [function() { gtag('event', 'page_view', {'page_title': 'Section12','page_location': 'https://voicesandvibesradio.carrd.co/#section12',});},],},},'sunday': {hideFooter: true,events: {onopen: [function() { gtag('event', 'page_view', {'page_title': 'Sunday','page_location': 'https://voicesandvibesradio.carrd.co/#sunday',});},],},},'section13': {events: {onopen: [function() { gtag('event', 'page_view', {'page_title': 'Section13','page_location': 'https://voicesandvibesradio.carrd.co/#section13',});},],},},'contact-done': {events: {onopen: [function() { gtag('event', 'page_view', {'page_title': 'Contact-done','page_location': 'https://voicesandvibesradio.carrd.co/#contact-done',});},],},},'artist-': {events: {onopen: [function() { gtag('event', 'page_view', {'page_title': 'Artist-','page_location': 'https://voicesandvibesradio.carrd.co/#artist-',});},],},},'home': {events: {onopen: [function() { gtag('event', 'page_view', {'page_title': 'Home','page_location': 'https://voicesandvibesradio.carrd.co',});},],},},};window._nextScrollPoint = doNextScrollPoint;window._previousScrollPoint = doPreviousScrollPoint;window._firstScrollPoint = doFirstScrollPoint;window._lastScrollPoint = doLastScrollPoint;window._nextSection = doNextSection;window._previousSection = doPreviousSection;window._firstSection = doFirstSection;window._lastSection = doLastSection;window._scrollToTop = function() {var section, id;scrollToElement(null);if (!!(section = $('section.active'))) {id = section.id.replace(/-section$/, '');if (id == 'home')id = '';history.pushState(null, null, '#' + id);}};if ('scrollRestoration' in history)history.scrollRestoration = 'manual';header = $('#header');footer = $('#footer');h = thisHash();if (h&& !h.match(/^[a-zA-Z0-9\-]+$/))h = null;if (e = $('[data-scroll-id="' + h + '"]')) {initialScrollPoint = e;initialSection = initialScrollPoint.parentElement;initialId = initialSection.id;} else if (e = $('#' + (h ? h : 'home') + '-section')) {initialScrollPoint = null;initialSection = e;initialId = initialSection.id;}if (!initialSection) {initialScrollPoint = null;initialSection = $('#' + 'home' + '-section');initialId = initialSection.id;history.replaceState(undefined, undefined, '#');}name = (h ? h : 'home');hideHeader = name ? ((name in sections) && ('hideHeader' in sections[name]) && sections[name].hideHeader) : false;hideFooter = name ? ((name in sections) && ('hideFooter' in sections[name]) && sections[name].hideFooter) : false;disableAutoScroll = name ? ((name in sections) && ('disableAutoScroll' in sections[name]) && sections[name].disableAutoScroll) : false;if (header && hideHeader) {header.classList.add('hidden');header.style.display = 'none';}if (footer && hideFooter) {footer.classList.add('hidden');footer.style.display = 'none';}ee = $$('.site-main > .inner > section:not([id="' + initialId + '"])');for (k = 0; k < ee.length; k++) {ee[k].className = 'inactive';ee[k].style.display = 'none';}initialSection.classList.add('active');doEvent(initialId, 'onopen');ready.add(() => {if (initialSection.dataset.title)document.title = initialSection.dataset.title + ' - ' + title;loadElements(initialSection);if (header)loadElements(header);if (footer)loadElements(footer);if (!disableAutoScroll)scrollToElement(null, 'instant');});on('load', function() {if (initialScrollPoint)scrollToElement(initialScrollPoint, 'instant');});on('hashchange', function(event) {var section, scrollPoint,h, e;if (locked)return false;h = thisHash();if (h&& !h.match(/^[a-zA-Z0-9\-]+$/))return false;if (e = $('[data-scroll-id="' + h + '"]')) {scrollPoint = e;section = scrollPoint.parentElement;} else if (e = $('#' + (h ? h : 'home') + '-section')) {scrollPoint = null;section = e;} else {scrollPoint = null;section = $('#' + 'home' + '-section');history.replaceState(undefined, undefined, '#');}if (!section)return false;activateSection(section, scrollPoint);return false;});on('click', function(event) {var t = event.target,tagName = t.tagName.toUpperCase(),scrollPoint, section;switch (tagName) {case 'IMG':case 'SVG':case 'USE':case 'U':case 'STRONG':case 'EM':case 'CODE':case 'S':case 'MARK':case 'SPAN':while ( !!(t = t.parentElement) )if (t.tagName == 'A')break;if (!t)return;break;default:break;}if (t.tagName == 'A'&& t.getAttribute('href') !== null&& t.getAttribute('href').substr(0, 1) == '#') {if (!!(scrollPoint = $('[data-scroll-id="' + t.hash.substr(1) + '"][data-scroll-invisible="1"]'))) {event.preventDefault();section = scrollPoint.parentElement;if (section.classList.contains('inactive')) {history.pushState(null, null, '#' + section.id.replace(/-section$/, ''));activateSection(section, scrollPoint);} else {scrollToElement(scrollPoint, 'smooth', scrollPointSpeed(scrollPoint));}} else if (t.hash == window.location.hash) {event.preventDefault();history.replaceState(undefined, undefined, '#');location.replace(t.hash);}}});})();var style, sheet, rule;style = document.createElement('style');style.appendChild(document.createTextNode(''));document.head.appendChild(style);sheet = style.sheet;if (client.mobile) {(function() {if (client.flags.lsdUnits) {document.documentElement.style.setProperty('--viewport-height', '100svh');document.documentElement.style.setProperty('--background-height', '100lvh');} else {var f = function() {document.documentElement.style.setProperty('--viewport-height', window.innerHeight + 'px');document.documentElement.style.setProperty('--background-height', (window.innerHeight + 250) + 'px');};on('load', f);on('orientationchange', function() {setTimeout(function() {(f)();}, 100);});}})();}if (client.os == 'android') {(function() {sheet.insertRule('body::after { }', 0);rule = sheet.cssRules[0];var f = function() {rule.style.cssText = 'height: ' + (Math.max(screen.width, screen.height)) + 'px';};on('load', f);on('orientationchange', f);on('touchmove', f);})();$body.classList.add('touch');} else if (client.os == 'ios') {if (client.osVersion <= 11)(function() {sheet.insertRule('body::after { }', 0);rule = sheet.cssRules[0];rule.style.cssText = '-webkit-transform: scale(1.0)';})();if (client.osVersion <= 11)(function() {sheet.insertRule('body.ios-focus-fix::before { }', 0);rule = sheet.cssRules[0];rule.style.cssText = 'height: calc(100% + 60px)';on('focus', function(event) {$body.classList.add('ios-focus-fix');}, true);on('blur', function(event) {$body.classList.remove('ios-focus-fix');}, true);})();$body.classList.add('touch');}var scrollEvents = {items: [],add: function(o) {this.items.push({element: o.element,triggerElement: (('triggerElement' in o && o.triggerElement) ? o.triggerElement : o.element),enter: ('enter' in o ? o.enter : null),leave: ('leave' in o ? o.leave : null),mode: ('mode' in o ? o.mode : 4),threshold: ('threshold' in o ? o.threshold : 0.25),offset: ('offset' in o ? o.offset : 0),initialState: ('initialState' in o ? o.initialState : null),state: false,});},handler: function() {var height, top, bottom, scrollPad;if (client.os == 'ios') {height = document.documentElement.clientHeight;top = document.body.scrollTop + window.scrollY;bottom = top + height;scrollPad = 125;} else {height = document.documentElement.clientHeight;top = document.documentElement.scrollTop;bottom = top + height;scrollPad = 0;}scrollEvents.items.forEach(function(item) {var elementTop, elementBottom, viewportTop, viewportBottom,bcr, pad, state, a, b;if (!item.enter&& !item.leave)return true;if (!item.triggerElement)return true;if (item.triggerElement.offsetParent === null) {if (item.state == true&& item.leave) {item.state = false;(item.leave).apply(item.element);if (!item.enter)item.leave = null;}return true;}bcr = item.triggerElement.getBoundingClientRect();elementTop = top + Math.floor(bcr.top);elementBottom = elementTop + bcr.height;if (item.initialState !== null) {state = item.initialState;item.initialState = null;} else {switch (item.mode) {case 1:default:state = (bottom > (elementTop - item.offset) && top < (elementBottom + item.offset));break;case 2:a = (top + (height * 0.5));state = (a > (elementTop - item.offset) && a < (elementBottom + item.offset));break;case 3:a = top + (height * (item.threshold));if (a - (height * 0.375) <= 0)a = 0;b = top + (height * (1 - item.threshold));if (b + (height * 0.375) >= document.body.scrollHeight - scrollPad)b = document.body.scrollHeight + scrollPad;state = (b > (elementTop - item.offset) && a < (elementBottom + item.offset));break;case 4:pad = height * item.threshold;viewportTop = (top + pad);viewportBottom = (bottom - pad);if (Math.floor(top) <= pad)viewportTop = top;if (Math.ceil(bottom) >= (document.body.scrollHeight - pad))viewportBottom = bottom;if ((viewportBottom - viewportTop) >= (elementBottom - elementTop)) {state = ((elementTop >= viewportTop && elementBottom <= viewportBottom)|| (elementTop >= viewportTop && elementTop <= viewportBottom)|| (elementBottom >= viewportTop && elementBottom <= viewportBottom));} else state = ((viewportTop >= elementTop && viewportBottom <= elementBottom)|| (elementTop >= viewportTop && elementTop <= viewportBottom)|| (elementBottom >= viewportTop && elementBottom <= viewportBottom));break;}}if (state != item.state) {item.state = state;if (item.state) {if (item.enter) {(item.enter).apply(item.element);if (!item.leave)item.enter = null;}} else {if (item.leave) {(item.leave).apply(item.element);if (!item.enter)item.leave = null;}}}});},init: function() {on('load', this.handler);on('resize', this.handler);on('scroll', this.handler);(this.handler)();}};scrollEvents.init();(function() {var items = $$('.deferred'),loadHandler, enterHandler;loadHandler = function() {var i = this,p = this.parentElement,duration = 375;if (i.dataset.src !== 'done')return;if (Date.now() - i._startLoad < duration)duration = 175;i.style.transitionDuration = (duration / 1000.00) + 's';p.classList.remove('loading');i.style.opacity = 1;setTimeout(function() {p.style.backgroundImage = 'none';i.style.transitionProperty = '';i.style.transitionTimingFunction = '';i.style.transitionDuration = '';}, duration);};enterHandler = function() {var i = this,p = this.parentElement,src;src = i.dataset.src;i.dataset.src = 'done';p.classList.add('loading');i._startLoad = Date.now();i.src = src;};items.forEach(function(p) {var i = p.firstElementChild;if (!p.classList.contains('enclosed')) {p.style.backgroundImage = 'url(' + i.src + ')';p.style.backgroundSize = '100% 100%';p.style.backgroundPosition = 'top left';p.style.backgroundRepeat = 'no-repeat';}i.style.opacity = 0;i.style.transitionProperty = 'opacity';i.style.transitionTimingFunction = 'ease-in-out';i.addEventListener('load', loadHandler);scrollEvents.add({element: i,enter: enterHandler,offset: 250,});});})();function videoBackground(id, settings) {var _this = this;this.id = id;this.src = settings.src;this.poster = settings.poster;this.position = settings.position;this.loop = settings.loop;this.$target = $(settings.target);this.$video = null;this.init();};videoBackground.prototype.autoplay = function() {if (client.os != 'ios'&& client.os != 'android'&& client.os != 'undefined')return true;switch (client.os) {case 'ios':if (client.osVersion >= 10&& (client.browser == 'safari' || client.browser == 'chrome'))return true;break;case 'android':if ((client.browser == 'chrome' && client.browserVersion >= 54)|| (client.browser == 'firefox' && client.browserVersion >= 49))return true;break;default:break;}return false;};videoBackground.prototype.init = function() {if (this.autoplay()) {this.$video = document.createElement('video');this.$video.src = this.src;this.$video.poster = this.poster;this.$video.autoplay = true;this.$video.muted = true;this.$video.preload = 'auto';this.$video.loop = this.loop;this.$video.playsInline = true;this.$video.disablePictureInPicture = true;this.$video.disableRemotePlayback = true;this.$video.setAttribute('webkit-playsinline', '');this.$video.setAttribute('muted', '');this.$video.addEventListener('canplay', function(event) {this.play();});this.$target.appendChild(this.$video);this.$video.play();} else this.$target.style.backgroundImage = 'url(\'' + this.poster + '\')';};(function() {var $bg = document.createElement('div');$bg.className = 'site-bg';$body.insertBefore($bg, $body.firstChild);new videoBackground('siteBg', {target: '.site-bg',src: 'assets/videos/bg.mp4?v=4d16a1c8',poster: 'assets/videos/bg.mp4.jpg?v=4d16a1c8',position: 'center',loop: true});})();function form(id, settings) {var _this = this;this.id = id;this.mode = settings.mode;this.method = settings.method;this.code = ('code' in settings ? settings.code : null);this.success = settings.success;this.initHandler = ('initHandler' in settings ? settings.initHandler : null);this.presubmitHandler = ('presubmitHandler' in settings ? settings.presubmitHandler : null);this.failure = ('failure' in settings ? settings.failure : null);this.optional = ('optional' in settings ? settings.optional : []);this.prefill = ('prefill' in settings ? settings.prefill : []);this.events = ('events' in settings ? settings.events : {});this.protection = ('protection' in settings ? settings.protection : { mode: 'default' });this.collectTrackingParameters = ('collectTrackingParameters' in settings ? settings.collectTrackingParameters : false);this.exportVariables = ('exportVariables' in settings ? settings.exportVariables : false);this.$form = $('#' + this.id);this.$form.addEventListener('change', function(event) {if (event.target.tagName != 'INPUT')return;_this.refreshInput(event.target);});this.$form.addEventListener('submit', function(event) {event.preventDefault();event.stopPropagation();_this.triggerSubmit();});this.$form.addEventListener('reset', function(event) {setTimeout(function() {_this.refreshInputs();}, 0);});this.$form.addEventListener('keydown', function(event) {if (event.keyCode == 13 && event.ctrlKey) {event.preventDefault();event.stopPropagation();_this.triggerSubmit();}});var x = $('#' + this.id + ' input[name="' + settings.hid + '"]');if (x) {x.disabled = true;x.parentNode.style.display = 'none';}this.$submit = $('#' + this.id + ' .actions button[type="submit"]');this.$submit.disabled = false;this.initInputs();if (this.initHandler) {errors.handle(function(message) {return _this.failureHandler(message);});if (!this.initHandler())errors.unhandle();}if (this.prefill.length > 0) {let usp = new URLSearchParams(window.location.search);for (const id of this.prefill) {let k = null;switch (id) {case 'email':k = 'email';break;case 'name':case 'fullName':k = 'name';break;}let v = usp.get(k);if (!v|| typeof v !== 'string'|| v.trim().length === 0)continue;let input;switch (id) {case 'email':input = this.$form.elements['email'];if (input)input.value = v.trim();break;case 'name':input = this.$form.elements['name'];if (!input)input = this.$form.elements['fname'];if (input)input.value = v.trim();break;case 'fullName':let a = v.trim().split(' ');input = this.$form.elements['fname'];if (input)input.value = a[0].trim();if (a.length > 1) {input = this.$form.elements['lname'];if (input)input.value = a.slice(1).join(' ');}break;}}}switch (this.protection.mode) {case 'hcaptcha':let id;switch (this.protection.type) {case 'checkbox':let e = document.createElement('div');e.setAttribute('id', this.id + '-hcaptcha-container');e.setAttribute('class', 'hcaptcha-container');this.$submit.parentNode.insertBefore(e, this.$submit);this.$submit.disabled = true;id = hcaptcha.render(this.id + '-hcaptcha-container', {sitekey: this.protection.key,size: this.protection.size,theme: this.protection.theme,'callback': () => {this.$submit.disabled = false;},'open-callback': () => {this.$submit.disabled = true;},'close-callback': () => {this.$submit.disabled = false;},'error-callback': () => {this.$submit.disabled = true;},'expired-callback': () => {this.$submit.disabled = true;},'chalexpired-callback': () => {this.$submit.disabled = true;},});break;case 'invisible':id = hcaptcha.render(this.$submit, {sitekey: this.protection.key,theme: this.protection.theme,callback: (token) => {if (!this.$form.checkValidity())this.$form.reportValidity(); else this.submit();},'open-callback': () => {this.$submit.disabled = true;},'close-callback': () => {this.$submit.disabled = false;},});break;}this.$form.setAttribute('data-hcaptcha-id', String(id));break;case 'recaptchav2':grecaptcha.ready(() => {let id;switch (this.protection.type) {case 'checkbox':let e = document.createElement('div');e.setAttribute('id', this.id + '-recaptchav2-container');e.setAttribute('class', 'recaptchav2-container');this.$submit.parentNode.insertBefore(e, this.$submit);(new ResizeObserver((entries) => {for (const entry of entries) {if (entry.contentRect.height > 25)entry.target.classList.add('loaded'); else entry.target.classList.remove('loaded');}})).observe(e);this.$submit.disabled = true;id = grecaptcha.render(this.id + '-recaptchav2-container', {sitekey: this.protection.key,size: this.protection.size,theme: this.protection.theme,'callback': () => {this.$submit.disabled = false;},'error-callback': () => {this.$submit.disabled = true;},'expired-callback': () => {this.$submit.disabled = true;},});break;case 'invisible':id = grecaptcha.render(this.$submit, {sitekey: this.protection.key,isolated: true,theme: this.protection.theme,callback: (token) => {if (!this.$form.checkValidity())this.$form.reportValidity(); else this.submit();}});break;default:break;}this.$form.setAttribute('data-recaptchav2-id', String(id));});break;case 'turnstile':turnstile.ready(() => {let e = document.createElement('div');e.setAttribute('id', this.id + '-turnstile-container');e.setAttribute('class', 'turnstile-container');this.$submit.parentNode.insertBefore(e, this.$submit);(new ResizeObserver((entries) => {for (const entry of entries) {if (entry.contentRect.height > 25)entry.target.classList.add('loaded'); else entry.target.classList.remove('loaded');}})).observe(e);this.$submit.disabled = true;let id = turnstile.render('#' + this.id + '-turnstile-container', {sitekey: this.protection.key,language: 'en',appearance: this.protection.appearance,size: this.protection.size,theme: this.protection.theme,'callback': () => {this.$submit.disabled = false;},'error-callback': () => {this.$submit.disabled = true;},'expired-callback': () => {this.$submit.disabled = true;},'timeout-callback': () => {this.$submit.disabled = true;},});this.$form.setAttribute('data-turnstile-id', String(id));});break;case 'default':default:break;}};form.prototype.completionHandler = function(properties, eventHandler, response) {if (eventHandler !== null)eventHandler.apply(this.$form, [ response ]);switch (properties.mode) {default:case 1:alert(this.expandVariables(properties.value));break;case 2:this.openUrlProperty(properties.value);break;case 3:properties.value.apply(this.$form, [ response ]);break;case 4:break;}};form.prototype.expandVariables = function(s) {if (typeof variables === 'undefined')return s;if (variables.hasVariables(s)) {for (input of this.$form.elements) {if (!this.isAllowedInput(input))continue;value = '';if (this.isValidInput(input)) {switch (input.type) {case 'checkbox':value = input.checked ? 'true' : 'false';break;case 'email':case 'select-one':case 'number':case 'tel':case 'text':case 'textarea':case 'hidden':value = input.value;break;default:value = '';break;}} else value = '';if (!!(s.match(/^(#[a-zA-Z0-9\_\-]+|[a-z0-9\-\.]+:[a-zA-Z0-9\~\!\@\#$\%\&\-\_\+\=\;\,\.\?\/\:\{\}\|]+)$/)))value = encodeURIComponent(value);s = variables.expandVariable(s, input.name, value);}}s = variables.expandVariableString(this.$form, s);return s;};form.prototype.exportVariableValues = function(source, values, suffix) {if (typeof variables === 'undefined'|| this.exportVariables !== true)return;variables.import(source + (suffix ? suffix : ''), values);variables.purge('form' + (suffix ? suffix : ''));variables.import('form' + (suffix ? suffix : ''), values);};form.prototype.failureHandler = function(message) {var eventHandler;eventHandler = ('onfailure' in this.events) ? this.events.onfailure : null;if (message.charAt(0) == '*')this.completionHandler({mode: 1,value: message.substring(1)},eventHandler,null); else if (this.failure)this.completionHandler(this.failure,eventHandler,null); else this.completionHandler({mode: 1,value: message},eventHandler,null);this.waiting(false);errors.unhandle();return true;};form.prototype.finalizeInput = function(input) {try {if (!input|| typeof input != 'object'|| !('name' in input))throw 'Not an input.';if (!('value' in input))throw 'Missing "value" property.';if (input.type == 'text'|| input.type == 'email'|| input.type == 'textarea'|| input.type == 'hidden')input.value = input.value.replace(/^\s+/, '').replace(/\s+$/, '');}catch (e) {}};form.prototype.formatDate = function(value, format) {var date, options,a, s;if (!value.match(/^[0-9]{4}-[0-9]{2}-[0-9]{2}$/))return '';a = value.split('-');date = new Date(a[0], parseInt(a[1]) - 1, parseInt(a[2]), 0, 0, 0, 0);switch (format) {default:case 'short':break;case 'medium':options = { dateStyle: 'medium' };break;case 'long':options = { dateStyle: 'long' };break;case 'full':options = { dateStyle: 'full' };break;}s = new Intl.DateTimeFormat(undefined, options).format(date);return s;};form.prototype.getAmount = function() {var x;x = this.getRequiredInputValue('amount', ['select-one', 'number']);if (!x)return null;x = parseFloat(x);if (isNaN(x)|| x < 1.00|| x > 100000.00)return null;return x;};form.prototype.getEmail = function() {return this.getRequiredInputValue('email', 'email');};form.prototype.getQuantity = function() {var x;x = this.getRequiredInputValue('quantity', ['select-one', 'number']);if (!x)return null;x = parseInt(x);if (isNaN(x)|| x < 1|| x > 100000)return null;return x;};form.prototype.getRequiredInputValue = function(name, type) {var input;for (input of this.$form.elements) {if (((Array.isArray(type) && type.includes(input.type)) || input.type == type)&& input.name == name&& input.value !== ''&& input.value !== null)return input.value;}return null;};form.prototype.initInputs = function() {var _this = this,i, input;for (i=0; i < this.$form.elements.length; i++) {input = this.$form.elements[i];switch (input.type) {case 'number':(function(input) {var p = input.parentNode,decrement = p.querySelector('button.decrement'),increment = p.querySelector('button.increment');input.addEventListener('blur', function(event) {_this.normalizeNumberInput(input);});if (decrement&& increment) {decrement.addEventListener('click', function(event) {event.preventDefault();_this.normalizeNumberInput(input);input.stepDown(1);_this.normalizeNumberInput(input);});increment.addEventListener('click', function(event) {event.preventDefault();_this.normalizeNumberInput(input);input.stepUp(1);_this.normalizeNumberInput(input);});}})(input);break;case 'file':(function(input) {var p = input.parentNode,select = p.querySelector('button.select');select.addEventListener('click', function(event) {event.preventDefault();input.click();});input.addEventListener('focus', function(event) {event.target.parentNode.classList.add('focus');});input.addEventListener('blur', function(event) {event.target.parentNode.classList.remove('focus');});})(input);break;case 'date':(function(input) {var p = input.parentNode,select = p.querySelector('button.select'),changeHandler,x, y, z;select.addEventListener('click', function(event) {event.preventDefault();input.click();input.focus();});switch (client.browser) {case 'safari':input.addEventListener('keydown', function(event) {switch (event.keyCode) {case 9:event.preventDefault();input.blur();break;case 27:event.preventDefault();input.blur();break;case 33:break;case 34:break;case 37:break;case 38:break;case 39:break;case 40:break;default:event.preventDefault();break;}});break;default:input.addEventListener('click', function(event) {event.preventDefault();input.focus();input.showPicker();});break;}changeHandler = function() {if (input.value)p.setAttribute('data-value', _this.formatDate(input.value, p.dataset.format)); else p.setAttribute('data-value', '');};input.addEventListener('change', function(event) {changeHandler();});changeHandler();})(input);break;case 'text':case 'textarea':case 'email':input.addEventListener('blur', function(event) {this.value = this.value.replace(/^\s+/, '').replace(/\s+$/, '');});break;}this.refreshInput(input);}};form.prototype.isAllowedInput = function(input, ignore) {try {if (!input|| typeof input != 'object'|| !('name' in input))throw 'Not an input.';if (ignore&& ignore.indexOf(input.name) != -1)throw 'Input is ignored.';if (input.disabled)throw 'Input is disabled.';switch (input.type) {case 'text':case 'email':case 'textarea':case 'select-one':case 'checkbox':case 'number':case 'tel':case 'file':case 'date':case 'hidden':break;default:throw 'Not an allowed input.';}}catch (e) {return false;}return true;};form.prototype.isValidInput = function(input) {var result = false;switch (input.type) {case 'email':result = input.value.match(new RegExp("^([a-zA-Z0-9\\_\\-\\.\\+]+)@([a-zA-Z0-9\\-\\.]+)\\.([a-zA-Z]+)$"));break;case 'select-one':result = input.value.match(new RegExp("^[^\\<\\>]+$"));break;case 'checkbox':result = true;break;case 'number':result = input.value.match(new RegExp("^[0-9\\-\\.]+$"));break;case 'tel':result = input.value.match(new RegExp("^[0-9\\-\\+\\(\\)\\ \\#\\*]+$"));break;case 'file':result = true;break;case 'date':result = input.value.match(new RegExp("^[0-9]{4}-[0-9]{2}-[0-9]{2}$"));break;default:case 'text':case 'textarea':case 'hidden':result = true;break;}return result;};form.prototype.normalizeNumberInput = function(input) {var min = parseFloat(input.min),max = parseFloat(input.max),step = parseFloat(input.step),v = parseFloat(input.value);if (isNaN(v)) {if (!input.required) {input.value = null;return;}v = isNaN(min) ? 0 : min;}if (!isNaN(min)&& v < min)v = min;if (!isNaN(max)&& v > max)v = max;if (!isNaN(step)&& (v % step) !== 0)v = Math.round(v / step) * step;switch (input.dataset.category) {case 'currency':v = parseFloat(v).toFixed(2);break;default:case 'decimal':v = parseFloat(v);break;case 'integer':v = parseInt(v);break;}input.value = v;};form.prototype.openUrlProperty = function(p) {if ('onclick' in p) {(p.onclick)(event);return;}if ('href' in p) {let href = this.expandVariables(p.href);this.$form.reset();if (href.charAt(0) == '#') {window.location.href = href;return;}if ('target' in p&& p.target == '_blank')window.open(href); else window.location.href = href;}};form.prototype.pause = function(values, handler) {var _this = this;this.waiting(true);db.open('formData', function(objectStore) {db.delete(objectStore, _this.id, function() {db.put(objectStore, values, function() {handler.call(_this);});});});};form.prototype.refreshInput = function(input) {var a = [],p;switch (input.type) {case 'file':p = input.parentNode;if (input.files.length > 0)p.setAttribute('data-filename', input.files[0].name); else p.setAttribute('data-filename', '');break;case 'date':p = input.parentNode;if (input.value)p.setAttribute('data-value', this.formatDate(input.value, p.dataset.format)); else p.setAttribute('data-value', '');break;default:break;}};form.prototype.refreshInputs = function() {var i;for (i=0; i < this.$form.elements.length; i++)this.refreshInput(this.$form.elements[i]);};form.prototype.resume = function(handler) {var _this = this;this.waiting(true);this.scrollIntoView();db.open('formData', function(objectStore) {db.get(objectStore, _this.id, function(values) {db.delete(objectStore, _this.id, function() {var e, i, v;for (i in _this.$form.elements) {e = _this.$form.elements[i];if (!e.name)continue;v = (e.name in values ? values[e.name] : null);switch (e.type) {case 'checkbox':e.checked = (v == 'checked' ? true : false);break;case 'file':if (v)e.parentNode.setAttribute('data-filename', v.name);break;default:e.value = v;break;}}handler.call(_this, values);});});});};form.prototype.scrollIntoView = function() {window.scrollTo(0, this.$form.offsetTop);};form.prototype.submit = function(values, ignore) {var _this = this,input, result, _success, _failure,a, b, i, e, fd, k, x, usp;try {for (input of this.$form.elements) {if (!this.isAllowedInput(input, ignore))continue;if (this.optional.indexOf(input.name) !== -1&&(input.value === ''|| input.value === null|| (input.type == 'checkbox' && !input.checked)))continue;this.finalizeInput(input);if (!this.isValidInput(input))throw 'Not valid.';}}catch (e) {alert('Missing or invalid fields. Please try again.');return;}if ('onsubmit' in this.events) {if (this.events.onsubmit.apply(this.$form) === false)return;}a = this.values();if (values) {for (k in values)a[k] = values[k];}if (this.collectTrackingParameters) {usp = new URLSearchParams(window.location.search);b = ['utm_source','utm_medium','utm_campaign','utm_term','utm_content'];for (k of b) {x = usp.get(k);if (x) {x = x.trim();x = x.replace(/[^a-zA-Z0-9\-\_\%\+\s]/g, '');x = x.replace(/\s+/g, '_');if (x.length <= 256)a[k] = x;}}}switch (this.method) {default:case 'ajax':break;case 'get':case 'post':for (k in a) {if (this.$form.elements[k])continue;e = document.createElement('input');e.setAttribute('type', 'hidden');e.setAttribute('name', k);this.$form.appendChild(e);e.value = a[k];}this.$form.submit();return;case 'code':if (typeof this.code == 'function') {this.waiting(true);_success = function() {_this.exportVariableValues(_this.id, a);_this.completionHandler(_this.success,('onsuccess' in _this.events) ? _this.events.onsuccess : null,null);_this.waiting(false);};_failure = function() {_this.completionHandler(_this.failure,('onfailure' in _this.events) ? _this.events.onfailure : null,null);_this.waiting(false);};result = this.code.apply(this.$form, [_success, _failure]);if (result === true)_success(); else if (result === false)_failure();}return;}if (x = $(':focus'))x.blur();errors.handle(function(message) {return _this.failureHandler(message);});if (this.presubmitHandler)this.presubmitHandler.call(this, a); else this.submitHandler(a);};form.prototype.submitHandler = function(values) {var _this = this,x, k, data;this.waiting(true);data = new FormData;for (k in values) {if (values[k]&& typeof values[k] == 'object'&& ('blob' in values[k]))data.append(k,values[k].blob,values[k].name); else data.append(k, values[k]);}x = new XMLHttpRequest();x.open('POST', ['', 'post', this.mode].join('/'));x.send(data);x.onreadystatechange = function() {var o;if (x.readyState != 4)return;if (x.status != 200)throw new Error('Failed server response (' + x.status + ')');try {o = JSON.parse(x.responseText);}catch (e) {throw new Error('Invalid server response');}if (!('result' in o)|| !('message' in o))throw new Error('Incomplete server response');switch (_this.protection.mode) {case 'hcaptcha':hcaptcha.reset(_this.$form.getAttribute('data-hcaptcha-id'));break;case 'recaptchav2':grecaptcha.reset(_this.$form.getAttribute('data-recaptchav2-id'));break;case 'turnstile':turnstile.reset(_this.$form.getAttribute('data-turnstile-id'));break;case 'default':default:break;}if (o.result !== true) {if ('response' in o)console.log(o.response);throw new Error(o.message);}_this.exportVariableValues(_this.id, values);if ('response' in o)_this.exportVariableValues(_this.id, o.response, '_response');_this.completionHandler(_this.success,('onsuccess' in _this.events) ? _this.events.onsuccess : null,'response' in o ? o.response : null);_this.$form.reset();_this.waiting(false);errors.unhandle();};};form.prototype.triggerSubmit = function() {switch (this.protection.mode) {case 'hcaptcha':switch (this.protection.type) {case 'checkbox':if (!this.$submit.disabled)this.submit();break;case 'invisible':this.$submit.click();break;default:break;}break;case 'recaptchav2':switch (this.protection.type) {case 'checkbox':if (!this.$submit.disabled)this.submit();break;case 'invisible':this.$submit.click();break;default:break;}break;case 'turnstile':case 'default':default:if (!this.$submit.disabled)this.submit();break;}};form.prototype.values = function() {var a = {};for (i in this.$form.elements) {e = this.$form.elements[i];if (!e.name|| !e.value)continue;switch (e.type) {case 'checkbox':a[e.name] = (e.checked ? 'checked' : null);break;case 'file':a[e.name] = {name: e.files[0].name,blob: new Blob([e.files[0]], { type: e.files[0].type })};break;default:a[e.name] = e.value;break;}}a['id'] = this.id;return a;};form.prototype.waiting = function(x) {var _this = this;if (x) {$body.classList.add('is-instant');this.$submit.disabled = true;this.$submit.classList.add('waiting');switch (this.protection.mode) {case 'hcaptcha':switch (this.protection.type) {case 'invisible':setTimeout(() => {this.$submit.disabled = true;}, 0);break;case 'checkbox':default:break;}break;case 'recaptchav2':switch (this.protection.type) {case 'invisible':setTimeout(() => {this.$submit.disabled = true;}, 0);break;case 'checkbox':default:break;}break;case 'turnstile':case 'default':default:break;}} else {$body.classList.remove('is-instant');this.$submit.classList.remove('waiting');this.$submit.disabled = false;}};new form('form01', {mode: 'contact',method: 'ajax',hid: 'fax',success: {mode: 1,value: 'Thank you! :)',},optional: ['phone', 'company'],});ready.run();})();