CINXE.COM
Start Learning Chinese Today with ChinesePod!
<!DOCTYPE html> <html> <head> <title>Start Learning Chinese Today with ChinesePod!</title> <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"> <!-- Google Tag Manager --> <!-- <script>(function (w, d, s, l, i) { w[l] = w[l] || []; w[l].push({ 'gtm.start': new Date().getTime(), event: 'gtm.js' }); var f = d.getElementsByTagName(s)[0], j = d.createElement(s), dl = l != 'dataLayer' ? '&l=' + l : ''; j.async = true; j.src = 'https://www.googletagmanager.com/gtm.js?id=' + i + dl; f.parentNode.insertBefore(j, f); })(window, document, 'script', 'dataLayer', 'GTM-TK3RQCH');</script> --> <!-- End Google Tag Manager --> <!-- Google tag (gtag.js) --> <script async src="https://www.googletagmanager.com/gtag/js?id=G-YL9LXEWQT7"></script> <script> window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', 'G-YL9LXEWQT7'); gtag('config', 'AW-16684547670'); </script> <!--STYLES--> <link rel="stylesheet" href="/min/production.min.css"> <!--STYLES END--> </head> <body> <div id="page-wrap"> <header id="page-header" class="navbar navbar-expand-sm navbar-light bg-light flex-column flex-md-row justify-content-between"> <a class="navbar-brand mr-0" href="/"><img class="logo" alt="ChinesePod Logo" src="/images/brand/brand.svg" width="160px"/></a> <div class="navbar-nav flex-row"> <a class="nav-item nav-link ml-2 ml-md-0 mr-2 mr-md-0" href="/contact">Help</a> <!-- LOGGED-IN NAVIGATION --> <!-- LOGGED-OUT NAVIGATION --> <a class="nav-item nav-link ml-2 ml-md-0 mr-2 mr-md-0" href="/corporate"><span class="d-none d-md-inline">For </span>Companies</a> <a class="nav-item nav-link ml-2 ml-md-0 mr-2 mr-md-0" href="/academic-offers"><span class="d-none d-md-inline">For </span>Schools</a> <a class="nav-item nav-link ml-2 ml-md-0 mr-2" href="/login">Log in</a> <div class="form-inline ml-2"> <!-- <a class="btn btn-outline-success" href="/pricing">Pricing</a>--> <a class="btn btn-outline-success" href="/signup">Sign Up</a> </div> </div> </header> <!-- Alert if email has not been confirmed --> <div id="free-signup" v-cloak> <div class="promo-banner row hl-white"> <div class="container pb-5"> <div class="row"> <div class="col-12 my-4"> <h1 class="text-center promo-heading font-weight-bold text-white h2"> Innovating online Mandarin learning for over 15 years. </h1> </div> </div> <div class="row"> <div class="col-md-6"> <div class="cpod-vid-cont" v-html="video"> </div> </div> <div class="col-md-6"> <div class="hero__form mx-md-3"> <div class="form-block"> <div class="form-block__header"> <h3 class="form-block__title">Sign Up Today!</h3> </div> <div class="form-block__content"> <div v-if="cloudSuccess" id="form-top-msg"><div class="alert alert-success" role="alert"> Great! We've just sent you an account confirmation email. Please check your inbox. </div> </div> <ajax-form v-if="!cloudSuccess" name="form-medium" id="form-medium" action="signup" :syncing.sync="syncing" :cloud-error.sync="cloudError" @submitted="submittedForm()" :handle-parsing="handleParsingForm"> <div class="form-block__row"> <div class="form-block__col"> <label class="form-block__label">Email Address</label> <input type="email" name="email" placeholder="email@example.com" :class="[formErrors.emailAddress ? 'is-invalid' : '']" v-model.trim="formData.emailAddress" class="form-control form-block__input" autocomplete="email"> <div class="invalid-feedback" v-if="formErrors.emailAddress">Please enter a valid email address.</div> </div> </div> <div class="form-block__row"> <div class="form-block__col"> <label class="form-block__checkbox"> <input type="checkbox" name="overlay_email" v-model="formData.optIn" checked> <div class="form-block__checkbox-block"></div> <span class="form-block__checkbox-label">I want to hear the latest news from ChinesePod.</span> </label> <p class="text-danger" v-if="cloudError==='emailAlreadyInUse'"><small>It looks like there's already an account with your email address. If you forgot your password, you can recover it <strong><a href="/password/forgot">here</a></strong>.</small></p> <p class="text-danger" v-else-if="cloudError"><small>An error occurred while processing your request. Please check your information and try again, or <strong><a href="/support">contact support</a></strong> if the error persists.</small></p> </div> </div> <div class="form-block__row"> <div class="form-block__col"> <ajax-button type="submit" id="btn-form-top-submit" :syncing="syncing" class="form-block__button">Get Started</ajax-button> </div> </div> <div class="form-block__row"> <div class="form-block__col"> <p><small class="text-muted">By signing up, you agree to the <a href="/privacy/" target="_blank">Privacy Policy</a> and <a href="/terms/" target="_blank">Terms of Service</a> of ChinesePod LLC.</small></p> </div> </div> </ajax-form> <hr v-if="!cloudSuccess"> <div v-if="!cloudSuccess"> <div> <a class="btn btn-block btn-outline-primary" href="/api/v1/auth/google"> <div class="row"> <div class="col-2 my-auto"> <div class="img-fluid w-50"> <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 48 48"> <defs><path id="a" d="M44.5 20H24v8.5h11.8C34.7 33.9 30.1 37 24 37c-7.2 0-13-5.8-13-13s5.8-13 13-13c3.1 0 5.9 1.1 8.1 2.9l6.4-6.4C34.6 4.1 29.6 2 24 2 11.8 2 2 11.8 2 24s9.8 22 22 22c11 0 21-8 21-22 0-1.3-.2-2.7-.5-4z"/></defs><clipPath id="b"><use xlink:href="#a" overflow="visible"/></clipPath><path clip-path="url(#b)" fill="#FBBC05" d="M0 37V11l17 13z"/><path clip-path="url(#b)" fill="#EA4335" d="M0 11l17 13 7-6.1L48 14V0H0z"/><path clip-path="url(#b)" fill="#34A853" d="M0 37l30-23 7.9 1L48 0v48H0z"/><path clip-path="url(#b)" fill="#4285F4" d="M48 48L17 24l-4-3 35-10z"/> </svg> </div> </div> <div class="col-10 my-auto"> <span class="">Continue with Google</span> </div> </div> </a> <a class="btn btn-block btn- btn-facebook" href="/api/v1/auth/facebook"> <div class="row"> <div class="col-2 my-auto"> <div class="img-fluid w-50"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32"> <path fill="#FFFFFF" d="M32 30a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V2a2 2 0 0 1 2-2h28a2 2 0 0 1 2 2v28z"/> <path fill="#4267b2" d="M22 32V20h4l1-5h-5v-2c0-2 1.002-3 3-3h2V5h-4c-3.675 0-6 2.881-6 7v3h-4v5h4v12h5z"/> </svg> </div> </div> <div class="col-10 my-auto"> <span class="">Continue with Facebook</span> </div> </div> </a> </div> </div> </div> </div> </div> </div> </div> </div> </div> <section class="section content"> <div class="about-item about-item_1"> <div class="about-item__bg"> </div> <div class="about-item__text"> <h3 class="title about-item__title">Real Language</h3> <div class="about-item__desc"> Deep rich conversations with different perspectives and personalities, delving into the core meanings of Chinese phrases. </div> <div class="about-item__cit"></div> </div> </div> <div class="about-item about-item_right about-item_2 "> <div class="about-item__text"> <h3 class="title about-item__title">Self Contained Lessons</h3> <div class="about-item__desc"> Sort lessons by topic and skill level. Explore over 4,000 immersive video and audio lessons that teach phrases that real Chinese speakers use. </div> <div class="about-item__cit"></div> </div> <div class="about-item__bg"> </div> </div> <section class="section props section_props_animation"> <div class="container"> <ul class="props__list"> <li class="props__item props__item-1"> <div class="props__img"> <img src="/images/academic-learning/ChinesePod_Tools-04.svg" class="props__svg" alt=""> </div> <h3 class="props__title">Exercises</h3> <ul class="props__tools-list"> <li class="props__tools-item">Lesson exercises</li> <li class="props__tools-item">Placement test</li> <li class="props__tools-item">Personal scoring</li> <li class="props__tools-item">Progress tracker</li> </ul> </li> <li class="props__item props__item-2"> <div class="props__img"> <img src="/images/academic-learning/ChinesePod_Tools-02.svg" class="props__svg" alt=""> </div> <h3 class="props__title">Vocabulary</h3> <ul class="props__tools-list"> <li class="props__tools-item">Context sentences</li> <li class="props__tools-item">Vocabulary decks</li> <li class="props__tools-item">In-depth grammar</li> <li class="props__tools-item">Extra dialogues</li> </ul> </li> <li class="props__item props__item-3"> <div class="props__img"> <img src="/images/academic-learning/ChinesePod_Tools-03.svg" class="props__svg" alt=""> </div> <h3 class="props__title">Pronunciation</h3> <ul class="props__tools-list"> <li class="props__tools-item">Best learning approach</li> <li class="props__tools-item">Wide range of difficulty levels</li> <li class="props__tools-item">Perfecting your pronunciation</li> <li class="props__tools-item">In-depth Pinyin section</li> </ul> </li> </ul> </div> </section> <div class="about-item about-item_3"> <div class="about-item__bg"> </div> <div class="about-item__text"> <h3 class="title about-item__title">Charismatic Teachers</h3> <div class="about-item__desc"> Download and learn on the go, or anywhere you want, from an array of our captivating teachers and their fun discussions around real world topics and vocabulary sets. </div> <div class="about-item__cit"></div> </div> </div> <section class="form-section form-section__middle"> <div class="container"> <div class="form-section__contant"> <div class="form-block col-12 col-md-8 col-lg-6"> <div class="form-block__header"> <h3 class="form-block__title">Sign Up Today!</h3> </div> <div class="form-block__content"> <div v-if="cloudSuccess" id="form-top-msg"><div class="alert alert-success" role="alert"> Great! We've just sent you an account confirmation email. Please check your inbox. </div> </div> <ajax-form v-if="!cloudSuccess" name="form-medium" id="form-medium" action="signup" :syncing.sync="syncing" :cloud-error.sync="cloudError" @submitted="submittedForm()" :handle-parsing="handleParsingForm"> <div class="form-block__row"> <div class="form-block__col"> <label class="form-block__label">Email Address</label> <input type="email" name="email" placeholder="email@example.com" :class="[formErrors.emailAddress ? 'is-invalid' : '']" v-model.trim="formData.emailAddress" class="form-control form-block__input" autocomplete="email"> <div class="invalid-feedback" v-if="formErrors.emailAddress">Please enter a valid email address.</div> </div> </div> <div class="form-block__row"> <div class="form-block__col"> <label class="form-block__checkbox"> <input type="checkbox" name="overlay_email" v-model="formData.optIn" checked> <div class="form-block__checkbox-block"></div> <span class="form-block__checkbox-label">I want to hear the latest news from ChinesePod.</span> </label> <p class="text-danger" v-if="cloudError==='emailAlreadyInUse'"><small>It looks like there's already an account with your email address. If you forgot your password, you can recover it <strong><a href="/password/forgot">here</a></strong>.</small></p> <p class="text-danger" v-else-if="cloudError"><small>An error occurred while processing your request. Please check your information and try again, or <strong><a href="/support">contact support</a></strong> if the error persists.</small></p> </div> </div> <div class="form-block__row"> <div class="form-block__col"> <ajax-button type="submit" id="btn-form-top-submit" :syncing="syncing" class="form-block__button">Get Started</ajax-button> </div> </div> <div class="form-block__row"> <div class="form-block__col"> <p><small class="text-muted">By signing up, you agree to the <a href="/privacy/" target="_blank">Privacy Policy</a> and <a href="/terms/" target="_blank">Terms of Service</a> of ChinesePod LLC.</small></p> </div> </div> </ajax-form> </div> </div> </div> </div> </section> <div class="about-item about-item_right about-item_4 "> <div class="about-item__text"> <h3 class="title about-item__title">At Your Own Pace</h3> <div class="about-item__desc"> Our lessons are designed to be studied in any order you’d like. With so many topics to choose from you can focus on what you really want to learn. </div> <div class="about-item__cit"></div> </div> <div class="about-item__bg"> </div> </div> <div class="container d-none"> <div class="content__resorces"> <div id="resourcesCarousel" data-ride="carousel" class="resorces carousel slide"> <div class="resorces__list carousel-inner"> <div class="carousel-item resorces__item row active"> <div class="resorces__photo col-12 col-sm-6"> <img src="https://img.youtube.com/vi/u8UBzEs6PuY/maxresdefault.jpg" class="w-100"/> </div> <div class="resorces__desc col-12 col-sm-6"> <p>Once you are finished with the video lesson, there is so much extra content waiting on our lesson's page, including vocabulary, sentence reviews, and expansions, where we give further examples of the lesson's grammatical structure and vocabulary in different context.</p> </div> </div> <div class="carousel-item resorces__item row"> <div class="resorces__photo col-12 col-sm-6"> <img src="https://img.youtube.com/vi/YRHg6AEJ7yM/maxresdefault.jpg" class="w-100" /> </div> <div class="resorces__desc col-12 col-sm-6"> <p>Once you are finished with the video lesson, there is so much extra content waiting on our lesson's page, including vocabulary, sentence reviews, and expansions, where we give further examples of the lesson's grammatical structure and vocabulary in different context.</p> </div> </div> <div class="carousel-item resorces__item row"> <div class="resorces__photo col-12 col-sm-6"> <img src="https://img.youtube.com/vi/FodIiHrkUjU/maxresdefault.jpg" class="w-100"/> </div> <div class="resorces__desc col-12 col-sm-6"> <p>Once you are finished with the video lesson, there is so much extra content waiting on our lesson's page, including vocabulary, sentence reviews, and expansions, where we give further examples of the lesson's grammatical structure and vocabulary in different context.</p> </div> </div> </div> <ul class="resorces__controls carousel-indicators controls"> <li data-target="#resourcesCarousel" data-slide-to="0" class="controls__item controls_resource__item active"></li> <li data-target="#resourcesCarousel" data-slide-to="1" class="controls__item controls_resource__item"></li> <li data-target="#resourcesCarousel" data-slide-to="2" class="controls__item controls_resource__item"></li> </ul> </div> </div> </div> <div class="about-item about-item_5"> <div class="about-item__bg"> </div> <div class="about-item__text"> <h3 class="title about-item__title">Further Study</h3> <div class="about-item__desc"> Once you finish a video lesson there are plenty of grammar and vocabulary examples to take your learning to the next level. </div> <div class="about-item__cit"></div> </div> </div> <section class="section reviews section_reviews" data-ride="carousel"> <div id="reviewsCarousel" class="container carousel slide"> <div class="reviews__list carousel-inner"> <div class="carousel-item reviews__item active"> <div class="reviews__img-container"> <img src="/images/academic-learning/home_pic_3.png" alt="" class="reviews__img"> </div> <div class="reviews__text"> "ChinesePod has such a vast scope of topics and diversity in levels, which makes it extremely convenient to progress, never-mind the entertaining hosts, great top-down approach and super useful additional content!" <br><small><strong>Niel de la Rouviere</strong> | Language blogger and web developer at Buffer</small> </div> </div> <div class="carousel-item reviews__item"> <div class="reviews__img-container"> <img src="/images/academic-learning/home_pic_31.png" alt="" class="reviews__img"> </div> <div class="reviews__text"> "When I was learning Mandarin, ChinesePod was my favourite resource by far. It was essential in getting me up to basic conversational level in just a few months. I recommend it to everyone learning Chinese!" <br><small><strong>Benny Lewis</strong> | "The Irish Polyglot"</small> </div> </div> <div class="carousel-item reviews__item"> <div class="reviews__img-container"> <img src="/images/academic-learning/home_pic_33.png" alt="" class="reviews__img"> </div> <div class="reviews__text"> "ChinesePod is an incredible resource for mastering spoken Chinese - a vast library of entertaining lessons from a great collection of teachers, all short and friendly enough to squeeze into a busy schedule." <br><small><strong>Mike Love</strong> | Creator of Pleco</small> </div> </div> </div> <ul class="reviews__controls carousel-indicators controls controls_red"> <li data-target="#reviewsCarousel" data-slide-to="0" class="controls__item controls_reviews__item active"></li> <li data-target="#reviewsCarousel" data-slide-to="1" class="controls__item controls_reviews__item"></li> <li data-target="#reviewsCarousel" data-slide-to="2" class="controls__item controls_reviews__item"></li> </ul> </div> </section> <div class="about-item about-item_right about-item_6"> <div class="about-item__text"> <h3 class="title about-item__title">Natural Learning</h3> <div class="about-item__desc"> We believe that our dynamic conversations give you the opportunity to naturally acquire the language. </div> <div class="about-item__cit"></div> </div> <div class="about-item__bg"> </div> </div> <div class="about-item about-item_7 "> <div class="about-item__bg"> </div> <div class="about-item__text"> <h3 class="title about-item__title">Native Pronunciation</h3> <div class="about-item__desc"> Tones are important, and lessons in our Say It Right (S.I.R.) series focus on just that. Master one of the most daunting aspects of the language with 22 lessons dedicated to pinyin tones, tricky combinations, and difficult sounds. </div> <div class="about-item__cit"></div> </div> </div> </section> <section class="section section__mac"> <div id="sectionResourcesCarousel" data-ride="carousel" class="carousel section__resources"> <div class="container section__resources__container"> <div class="section__resources__text"> <div class="resources_slider_text_list"> <div class="carousel-item resources_slider_text_item active"> <h2 class="section__resources__title">Dialogue</h2> <p>The Dialogue section provides an interactive transcript of the lesson. The Chinese characters are provided along with the English translation and pinyin to ease with pronunciation. It’s better to learn the target language in context but we provide a function to study each word separately too. Scrutinize each Chinese character by mousing over it to see the literal translation. You also have the option of toggling between Simplified and Traditional characters.</p> </div> <div class="carousel-item resources_slider_text_item"> <h2 class="section__resources__title">Vocabulary</h2> <p>Rote memorization is boring and not the most effective method, but we suggest using the supplementary vocabulary lists in conjunction with the audio or video to accelerate your rate of achieving language competency.</p> </div> <div class="carousel-item resources_slider_text_item"> <h2 class="section__resources__title">Expansion</h2> <p>Our expansion gives you the opportunity to learn target vocabulary taught in the lesson in other meaningful situations.</p> </div> <div class="carousel-item resources_slider_text_item" id="greatest_carousel_item"> <h2 class="section__resources__title">Exercises</h2> <p>Learn aurally then reinforce further with online worksheets and exercises. These include:</p> <ul> <li>Matching: Choose a word on the left side, then match it to the closest meaning on the right side</li> <li>Sentence Reordering: sentences are in the wrong order; move them into the correct order by clicking and dragging</li> <li>Dictation: Listen to the audio and type out what you hear</li> <li>Multiple Choice</li> </ul> </div> </div> </div> <div id="imageResourcesCarousel" data-ride="carousel" class="carousel section__resources__slider"> <div class="mac-slider carousel-inner"> <div class="mac-slider__container"> <img src="/images/academic-learning/Carousell_Vocabulary_950x860.png" alt="" class="mac-slider__img"> <ul class="mac-slider__list"> <li class="carousel-item mac-slider__item active" style="background-image: url('https://s3contents.chinesepod.com/img/corporate/carousel/dictionary.png')"></li> <li class="carousel-item mac-slider__item" style="background-image: url('https://s3contents.chinesepod.com/img/corporate/carousel/vocabulary.png')"></li> <li class="carousel-item mac-slider__item" style="background-image: url('https://s3contents.chinesepod.com/img/corporate/carousel/expansion.png')"></li> <li class="carousel-item mac-slider__item" style="background-image: url('https://s3contents.chinesepod.com/img/corporate/carousel/exercises.png')" id="greatest_carousel_mac_item"></li> </ul> </div> </div> </div> </div> <div class="carousel-indicators section__resources__controls controls controls_white"> <li data-target="#sectionResourcesCarousel" data-target="#imageResourcesCarousel" data-slide-to="0" class="controls__item controls_mac__item active"></li> <li data-target="#sectionResourcesCarousel" data-target="#imageResourcesCarousel" data-slide-to="1" class="controls__item controls_mac__item "></li> <li data-target="#sectionResourcesCarousel" data-target="#imageResourcesCarousel" data-slide-to="2" class="controls__item controls_mac__item "></li> <li data-target="#sectionResourcesCarousel" data-target="#imageResourcesCarousel" data-slide-to="3" class="controls__item controls_mac__item " id="greatest_carousel_controls_item"></li> </div> </div> </section> <section class="form-section form-section_footer"> <div class="container"> <div class="form-section__contant"> <div class="form-block col-12 col-md-8 col-lg-6"> <div class="form-block__header"> <h3 class="form-block__title">Sign Up Today!</h3> </div> <div class="form-block__content"> <div v-if="cloudSuccess" id="form-top-msg"><div class="alert alert-success" role="alert"> Great! We've just sent you an account confirmation email. Please check your inbox. </div> </div> <ajax-form v-if="!cloudSuccess" name="form-bottom" id="form-bottom" action="signup" :syncing.sync="syncing" :cloud-error.sync="cloudError" @submitted="submittedForm()" :handle-parsing="handleParsingForm"> <div class="form-block__row"> <div class="form-block__col"> <label class="form-block__label">Email Address</label> <input type="email" name="email" placeholder="email@example.com" :class="[formErrors.emailAddress ? 'is-invalid' : '']" v-model.trim="formData.emailAddress" class="form-control form-block__input" autocomplete="email"> <div class="invalid-feedback" v-if="formErrors.emailAddress">Please enter a valid email address.</div> </div> </div> <div class="form-block__row"> <div class="form-block__col"> <label class="form-block__checkbox"> <input type="checkbox" name="overlay_email" v-model="formData.optIn" checked> <div class="form-block__checkbox-block"></div> <span class="form-block__checkbox-label">I want to hear the latest news from ChinesePod.</span> </label> <p class="text-danger" v-if="cloudError==='emailAlreadyInUse'"><small>It looks like there's already an account with your email address. If you forgot your password, you can recover it <strong><a href="/password/forgot">here</a></strong>.</small></p> <p class="text-danger" v-else-if="cloudError"><small>An error occurred while processing your request. Please check your information and try again, or <strong><a href="/support">contact support</a></strong> if the error persists.</small></p> </div> </div> <div class="form-block__row"> <div class="form-block__col"> <ajax-button type="submit" id="btn-form-top-submit" :syncing="syncing" class="form-block__button">Get Started</ajax-button> </div> </div> <div class="form-block__row"> <div class="form-block__col"> <p><small class="text-muted">By signing up, you agree to the <a href="/privacy/" target="_blank">Privacy Policy</a> and <a href="/terms/" target="_blank">Terms of Service</a> of ChinesePod LLC.</small></p> </div> </div> </ajax-form> </div> </div> </div> </div> </section> </div> <script v-if="wistia" src="https://fast.wistia.com/embed/medias/jggideab2x.jsonp" async></script> <script v-if="wistia" src="https://fast.wistia.com/assets/external/E-v1.js" async></script> <script type="text/javascript"> (function (){ var unescape = function unescapeHtmlEntitiesDeepLite(r){if("function"!=typeof Array.isArray||"function"!=typeof Array.prototype.forEach||"function"!=typeof Array.prototype.map||"function"!=typeof Object.keys)throw Error("Unsupported browser: Missing support for `Array.isArray`, `Array.prototype.forEach`, `Array.prototype.map`, or `Object.keys`! (Sails' built-in HTML-unescaping for exposed locals supports IE9 and up.)");return function t(r){if(null===r)return r;if(r===!0||r===!1)return r;if("number"==typeof r)return r;if("string"==typeof r){var e=/&(?:amp|lt|gt|quot|#39|#96);/g,o=RegExp(e.source);if(""===r)return r;if(o.test(r)){var n={"&":"&","<":"<",">":">",""":'"',"'":"'","`":"`"};return r=r.replace(e,function(r){return n[r]})}return r}return Array.isArray(r)?r=r.map(function(r){return t(r)}):(Object.keys(r).forEach(function(e){r[e]=t(r[e],e)}),r)}(r)}; window.SAILS_LOCALS = { _environment: unescape('production'),title: unescape('Start Learning Chinese Today with ChinesePod!'),video: unescape('<div class="embed-responsive embed-responsive-16by9" ><iframe id="cpod-vid" width="100%" height="315" src="https://www.youtube.com/embed/NjCYc5p8a5c?rel=0&amp;showinfo=0" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen=""></iframe></div>'),wistia: unescape(false), }; })(); </script> <footer id="page-footer" style="display: none" class="footer navbar navbar-light justify-content-between flex-row-reverse"> <div class="col-xs-12 col-md-3 text-center"> <ul class="list-inline social"> <li class="list-inline-item"><a class="list-inline-item social-icon" href="https://www.facebook.com/ChinesePod" target="_blank"> <img src="/images/social/facebook-red.svg"> <img class="hover" src="/images/social/facebook-white.svg"> </a> </li> <li class="list-inline-item"><a class="list-inline-item social-icon" href="https://twitter.com/chinesepod" target="_blank"> <img src="/images/social/twitter-red.svg"> <img class="hover" src="/images/social/twitter-white.svg"> </a> </li> <li class="list-inline-item"><a class="list-inline-item social-icon" href="http://instagram.com/chinesepod/" target="_blank"> <img src="/images/social/instagram-red.svg"> <img class="hover" src="/images/social/instagram-white.svg"> </a> </li> <li class="list-inline-item"><a class="list-inline-item social-icon" href="https://www.youtube.com/user/ChinesePodTV" target="_blank"> <img src="/images/social/youtube-red.svg"> <img class="hover" src="/images/social/youtube-white.svg"> </a> </li> </ul> </div> <div class="col-xs-12 col-md-6 text-center"> <small class="copy">Copyright © 2025 ChinesePod LLC</small> <div class="list-inline text-center"> <small class="list-inline-item"><a class="nav-link text-danger" href="/contact">Contact</a></small> <small class="list-inline-item"><a class="nav-link text-danger" href="/pricing">Pricing</a></small> <!-- <small class="list-inline-item"><a class="nav-link text-danger" href="/jobs">Careers</a></small>--> <small class="list-inline-item"><a class="nav-link text-danger" href="/start-learning-mandarin">About Us</a></small> <!-- <small class="list-inline-item"><a class="nav-link text-danger" href="/affiliate">Affiliate</a></small>--> <!-- <small class="list-inline-item"><a class="nav-link text-danger" href="/resources">Resources</a></small>--> <small class="list-inline-item"><a class="nav-link text-danger" href="/privacy">Privacy</a></small> <small class="list-inline-item"><a class="nav-link text-danger" href="/terms">Terms</a></small> </div> </div> <div class="col-xs-12 col-md-3 text-center" style="padding-bottom:20px"> <div class="col-12 text-center"> <a href="https://itunes.apple.com/us/app/chinesepod-podcast/id1185380819?mt=8" target="_blank" style="margin-bottom:10px;text-decoration:none;"> <img data-src="/img/app-store-icon.svg" class="lazyloaded img-fluid " style="max-height: 60px" alt="ChinesePod iOS App" src="/img/app-store-icon.svg"> </a> <!-- <div class="col-6">--> <!-- <a href="https://play.google.com/store/apps/details?id=llc.chinesepod.android&hl=en" target="_blank" style="margin-bottom:10px;">--> <!-- <img data-src="/img/google-play-icon.svg" class="lazyloaded img-fluid" style="max-height: 60px; height: 100%" alt="ChinesePod Google Play App" src="/img/google-play-icon.svg">--> <!-- </a>--> <!-- </div>--> </div> </div> </footer> <div id="corporatePopup" style="display: none;" class="row"> <div class="bg-gray border-top border-danger fixed-bottom"> <div class="col-12 py-3 position-absolute close-popup-container"> <button class="btn btn-outline-secondary" title="Close Notification" id="closeCorporatePopup"> <i class="fa fa-times"></i> </button> </div> <div class="col-12 col-md-10 offset-md-1 pt-5"> <div class="col-xl-8 offset-xl-2"> <h2 class="text-danger font-weight-bold text-center">DID YOU KNOW THAT WE HAVE TAILOR MADE CORPORATE / EDUCATION PLANS?</h2> </div> <p class=" text-center">To receive information or be contacted by one of our advisors please provide your details below:</p> <div class="col-12"> <div class="corporate-form-container"> <form id="corporateForm"> <!-- Step 1 --> <div class="tab"> <div class="form-group"> <div class="input-container"> <label for="emailCorporatePopup" class="mb-0">Email address:</label> <div class="input-group"> <input type="email" class="form-control" id="emailCorporatePopup" placeholder="email@example.com" name="email" /> <div class="invalid-feedback"> Please check your email and try again. </div> </div> </div> </div> <div class="form-group"> <div class="input-container"> <label for="phoneCorporatePopup" class="mb-0">Phone number:</label> <div class="input-group"> <input type="tel" class="form-control" id="phoneCorporatePopup" placeholder="+1 212-555-0000" name="phone" /> <div class="invalid-feedback"> Please check your phone number and try again. </div> </div> </div> </div> </div> <!-- Step 2 --> <div class="tab"> <h5>Additional Questions:</h5> <div class="form-group"> <label for="howDidYouHear">1. How did you hear about Chinesepod?</label> <div class="input-group"> <input id="howDidYouHear" class="form-control" placeholder="Search, referral, blog, article.." name="howDidYouHear" /> <div class="invalid-feedback"> This field is required. Please check it again! </div> </div> </div> <div class="form-group"> <label for="radioTypeOfCorporation">2. What type of organization are you? Corporation or Education?</label> <div class="custom-control custom-radio custom-control-inline"> <input type="radio" id="radioTypeOfCorporation" name="typeOfOrganization" class="custom-control-input" value="corporation" checked /> <label class="custom-control-label" for="radioTypeOfCorporation">Corporation</label> </div> <div class="custom-control custom-radio custom-control-inline"> <input type="radio" id="radioTypeOfEducation" name="typeOfOrganization" class="custom-control-input" value="education" /> <label class="custom-control-label" for="radioTypeOfEducation">Education</label> </div> </div> <div class="form-group"> <label for="peopleInYourOrganization">3. How many people in your organization?</label> <div class="input-group"> <input id="peopleInYourOrganization" class="form-control" placeholder="" oninput="onFillInput" name="peopleInYourOrganization" /> <div class="invalid-feedback"> This field is required. Please check it again! </div> </div> </div> <div class="form-group"> <label for="howManyPeoplePlanToLearnChinese">4. How many people plan to learn Chinese?</label> <div class="input-group"> <input id="howManyPeoplePlanToLearnChinese" class="form-control" placeholder="" name="peoplePlanToLearnChinese" /> <div class="invalid-feedback"> This field is required. Please check it again! </div> </div> </div> </div> <!-- Step 3 --> <div class="tab"> <h5>Additional Questions:</h5> <div class="form-group"> <label for="theMainLanguage"> 1. What is the main language spoken within your organization? </label> <div class="input-group"> <input id="theMainLanguage" class="form-control" placeholder="" name="theMainLanguage" /> <div class="invalid-feedback"> This field is required. Please check it again! </div> </div> </div> <div class="form-group"> <label for="whatDoesYourCompanyDo">2. Do some of your staff/student speak Chinese already? And if so what is their level?</label> <div class="input-group"> <input id="chineseLevel" class="form-control" placeholder="" name="chineseLevel" /> <div class="invalid-feedback"> This field is required. Please check it again! </div> </div> </div> <div id="organizationGroup"> <div class="form-group"> <label for="whatDoesYourCompanyDo">3. What does your company do?</label> <div class="input-group"> <input id="whatDoesYourCompanyDo" class="form-control" placeholder="" name="whatDoesYourCompanyDo" /> <div class="invalid-feedback"> This field is required. Please check it again! </div> </div> </div> <div class="form-group"> <label for="howDoYourStaffNeedToLearnChinese">4. How do your staff need to learn Chinese?</label> <div class="input-group"> <input id="howDoYourStaffNeedToLearnChinese" class="form-control" placeholder="" name="howDoYourStaffNeedToLearnChinese" /> <div class="invalid-feedback"> This field is required. Please check it again! </div> </div> </div> <div class="form-group"> <label for="isThereAnySpecificNeedLearning">5. Is there any specific subject or vocabulary your staff need learning?</label> <div class="input-group"> <input id="isThereAnySpecificNeedLearning" class="form-control" placeholder="" name="isThereAnySpecificNeedLearning" /> <div class="invalid-feedback"> This field is required. Please check it again! </div> </div> </div> </div> </div> <div style="overflow:auto;text-align: center;"> <div> <button type="button" class="btn btn-danger btn-lg" id="prevBtn" onclick="nextPrev(-1)">Previous</button> <button type="button" class="btn btn-danger btn-lg" id="nextBtn" onclick="nextPrev(1)">Next</button> </div> </div> </form> <!-- Circles which indicates the steps of the form: --> <div style="text-align:center;margin-top:5px;"> <span class="step"></span> <span class="step"></span> <span class="step"></span> </div> </div> </div> </div> </div> </div> </div> <script>!function (e, i, s) { if ("undefined" != typeof module && module.exports) module.exports = s(); else if ("function" == typeof define && define.amd) define(i, s); else e[i] = s() }(this, "bowser", function () { var e = true; function i(i) { function s(e) { var s = i.match(e); return s && s.length > 1 && s[1] || "" } function o(e) { var s = i.match(e); return s && s.length > 1 && s[2] || "" } var r = s(/(ipod|iphone|ipad)/i).toLowerCase(), n = /like android/i.test(i), t = !n && /android/i.test(i), a = /nexus\s*[0-6]\s*/i.test(i), d = !a && /nexus\s*[0-9]+/i.test(i), l = /CrOS/.test(i), f = /silk/i.test(i), m = /sailfish/i.test(i), v = /tizen/i.test(i), p = /(web|hpw)os/i.test(i), c = /windows phone/i.test(i), u = /SamsungBrowser/i.test(i), h = !c && /windows/i.test(i), w = !r && !f && /macintosh/i.test(i), b = !t && !m && !v && !p && /linux/i.test(i), g = o(/edg([ea]|ios)\/(\d+(\.\d+)?)/i), k = s(/version\/(\d+(\.\d+)?)/i), x = /tablet/i.test(i) && !/tablet pc/i.test(i), y = !x && /[^-]mobi/i.test(i), S = /xbox/i.test(i), B; if (/opera/i.test(i)) B = { name: "Opera", opera: e, version: k || s(/(?:opera|opr|opios)[\s\/](\d+(\.\d+)?)/i) }; else if (/opr\/|opios/i.test(i)) B = { name: "Opera", opera: e, version: s(/(?:opr|opios)[\s\/](\d+(\.\d+)?)/i) || k }; else if (/SamsungBrowser/i.test(i)) B = { name: "Samsung Internet for Android", samsungBrowser: e, version: k || s(/(?:SamsungBrowser)[\s\/](\d+(\.\d+)?)/i) }; else if (/coast/i.test(i)) B = { name: "Opera Coast", coast: e, version: k || s(/(?:coast)[\s\/](\d+(\.\d+)?)/i) }; else if (/yabrowser/i.test(i)) B = { name: "Yandex Browser", yandexbrowser: e, version: k || s(/(?:yabrowser)[\s\/](\d+(\.\d+)?)/i) }; else if (/ucbrowser/i.test(i)) B = { name: "UC Browser", ucbrowser: e, version: s(/(?:ucbrowser)[\s\/](\d+(?:\.\d+)+)/i) }; else if (/mxios/i.test(i)) B = { name: "Maxthon", maxthon: e, version: s(/(?:mxios)[\s\/](\d+(?:\.\d+)+)/i) }; else if (/epiphany/i.test(i)) B = { name: "Epiphany", epiphany: e, version: s(/(?:epiphany)[\s\/](\d+(?:\.\d+)+)/i) }; else if (/puffin/i.test(i)) B = { name: "Puffin", puffin: e, version: s(/(?:puffin)[\s\/](\d+(?:\.\d+)?)/i) }; else if (/sleipnir/i.test(i)) B = { name: "Sleipnir", sleipnir: e, version: s(/(?:sleipnir)[\s\/](\d+(?:\.\d+)+)/i) }; else if (/k-meleon/i.test(i)) B = { name: "K-Meleon", kMeleon: e, version: s(/(?:k-meleon)[\s\/](\d+(?:\.\d+)+)/i) }; else if (c) { B = {name: "Windows Phone", osname: "Windows Phone", windowsphone: e}; if (g) { B.msedge = e; B.version = g } else { B.msie = e; B.version = s(/iemobile\/(\d+(\.\d+)?)/i) } } else if (/msie|trident/i.test(i)) B = { name: "Internet Explorer", msie: e, version: s(/(?:msie |rv:)(\d+(\.\d+)?)/i) }; else if (l) B = { name: "Chrome", osname: "Chrome OS", chromeos: e, chromeBook: e, chrome: e, version: s(/(?:chrome|crios|crmo)\/(\d+(\.\d+)?)/i) }; else if (/edg([ea]|ios)/i.test(i)) B = { name: "Microsoft Edge", msedge: e, version: g }; else if (/vivaldi/i.test(i)) B = { name: "Vivaldi", vivaldi: e, version: s(/vivaldi\/(\d+(\.\d+)?)/i) || k }; else if (m) B = { name: "Sailfish", osname: "Sailfish OS", sailfish: e, version: s(/sailfish\s?browser\/(\d+(\.\d+)?)/i) }; else if (/seamonkey\//i.test(i)) B = { name: "SeaMonkey", seamonkey: e, version: s(/seamonkey\/(\d+(\.\d+)?)/i) }; else if (/firefox|iceweasel|fxios/i.test(i)) { B = {name: "Firefox", firefox: e, version: s(/(?:firefox|iceweasel|fxios)[ \/](\d+(\.\d+)?)/i)}; if (/\((mobile|tablet);[^\)]*rv:[\d\.]+\)/i.test(i)) { B.firefoxos = e; B.osname = "Firefox OS" } } else if (f) B = { name: "Amazon Silk", silk: e, version: s(/silk\/(\d+(\.\d+)?)/i) }; else if (/phantom/i.test(i)) B = { name: "PhantomJS", phantom: e, version: s(/phantomjs\/(\d+(\.\d+)?)/i) }; else if (/slimerjs/i.test(i)) B = { name: "SlimerJS", slimer: e, version: s(/slimerjs\/(\d+(\.\d+)?)/i) }; else if (/blackberry|\bbb\d+/i.test(i) || /rim\stablet/i.test(i)) B = { name: "BlackBerry", osname: "BlackBerry OS", blackberry: e, version: k || s(/blackberry[\d]+\/(\d+(\.\d+)?)/i) }; else if (p) { B = {name: "WebOS", osname: "WebOS", webos: e, version: k || s(/w(?:eb)?osbrowser\/(\d+(\.\d+)?)/i)}; /touchpad\//i.test(i) && (B.touchpad = e) } else if (/bada/i.test(i)) B = { name: "Bada", osname: "Bada", bada: e, version: s(/dolfin\/(\d+(\.\d+)?)/i) }; else if (v) B = { name: "Tizen", osname: "Tizen", tizen: e, version: s(/(?:tizen\s?)?browser\/(\d+(\.\d+)?)/i) || k }; else if (/qupzilla/i.test(i)) B = { name: "QupZilla", qupzilla: e, version: s(/(?:qupzilla)[\s\/](\d+(?:\.\d+)+)/i) || k }; else if (/chromium/i.test(i)) B = { name: "Chromium", chromium: e, version: s(/(?:chromium)[\s\/](\d+(?:\.\d+)?)/i) || k }; else if (/chrome|crios|crmo/i.test(i)) B = { name: "Chrome", chrome: e, version: s(/(?:chrome|crios|crmo)\/(\d+(\.\d+)?)/i) }; else if (t) B = {name: "Android", version: k}; else if (/safari|applewebkit/i.test(i)) { B = {name: "Safari", safari: e}; if (k) B.version = k } else if (r) { B = {name: "iphone" == r ? "iPhone" : "ipad" == r ? "iPad" : "iPod"}; if (k) B.version = k } else if (/googlebot/i.test(i)) B = { name: "Googlebot", googlebot: e, version: s(/googlebot\/(\d+(\.\d+))/i) || k }; else B = {name: s(/^(.*)\/(.*) /), version: o(/^(.*)\/(.*) /)}; if (!B.msedge && /(apple)?webkit/i.test(i)) { if (/(apple)?webkit\/537\.36/i.test(i)) { B.name = B.name || "Blink"; B.blink = e } else { B.name = B.name || "Webkit"; B.webkit = e } if (!B.version && k) B.version = k } else if (!B.opera && /gecko\//i.test(i)) { B.name = B.name || "Gecko"; B.gecko = e; B.version = B.version || s(/gecko\/(\d+(\.\d+)?)/i) } if (!B.windowsphone && (t || B.silk)) { B.android = e; B.osname = "Android" } else if (!B.windowsphone && r) { B[r] = e; B.ios = e; B.osname = "iOS" } else if (w) { B.mac = e; B.osname = "macOS" } else if (S) { B.xbox = e; B.osname = "Xbox" } else if (h) { B.windows = e; B.osname = "Windows" } else if (b) { B.linux = e; B.osname = "Linux" } function O(e) { switch (e) { case"NT": return "NT"; case"XP": return "XP"; case"NT 5.0": return "2000"; case"NT 5.1": return "XP"; case"NT 5.2": return "2003"; case"NT 6.0": return "Vista"; case"NT 6.1": return "7"; case"NT 6.2": return "8"; case"NT 6.3": return "8.1"; case"NT 10.0": return "10"; default: return undefined } } var T = ""; if (B.windows) T = O(s(/Windows ((NT|XP)( \d\d?.\d)?)/i)); else if (B.windowsphone) T = s(/windows phone (?:os)?\s?(\d+(\.\d+)*)/i); else if (B.mac) { T = s(/Mac OS X (\d+([_\.\s]\d+)*)/i); T = T.replace(/[_\s]/g, ".") } else if (r) { T = s(/os (\d+([_\s]\d+)*) like mac os x/i); T = T.replace(/[_\s]/g, ".") } else if (t) T = s(/android[ \/-](\d+(\.\d+)*)/i); else if (B.webos) T = s(/(?:web|hpw)os\/(\d+(\.\d+)*)/i); else if (B.blackberry) T = s(/rim\stablet\sos\s(\d+(\.\d+)*)/i); else if (B.bada) T = s(/bada\/(\d+(\.\d+)*)/i); else if (B.tizen) T = s(/tizen[\/\s](\d+(\.\d+)*)/i); if (T) B.osversion = T; var P = !B.windows && T.split(".")[0]; if (x || d || "ipad" == r || t && (3 == P || P >= 4 && !y) || B.silk) B.tablet = e; else if (y || "iphone" == r || "ipod" == r || t || a || B.blackberry || B.webos || B.bada) B.mobile = e; if (B.msedge || B.msie && B.version >= 10 || B.yandexbrowser && B.version >= 15 || B.vivaldi && B.version >= 1 || B.chrome && B.version >= 20 || B.samsungBrowser && B.version >= 4 || B.firefox && B.version >= 20 || B.safari && B.version >= 6 || B.opera && B.version >= 10 || B.ios && B.osversion && B.osversion.split(".")[0] >= 6 || B.blackberry && B.version >= 10.1 || B.chromium && B.version >= 20) B.a = e; else if (B.msie && B.version < 10 || B.chrome && B.version < 20 || B.firefox && B.version < 20 || B.safari && B.version < 6 || B.opera && B.version < 10 || B.ios && B.osversion && B.osversion.split(".")[0] < 6 || B.chromium && B.version < 20) B.c = e; else B.x = e; return B } var s = i("undefined" !== typeof navigator ? navigator.userAgent || "" : ""); s.test = function (e) { for (var i = 0; i < e.length; ++i) { var o = e[i]; if ("string" === typeof o) if (o in s) return true } return false }; function o(e) { return e.split(".").length } function r(e, i) { var s = [], o; if (Array.prototype.map) return Array.prototype.map.call(e, i); for (o = 0; o < e.length; o++) s.push(i(e[o])); return s } function n(e) { var i = Math.max(o(e[0]), o(e[1])); var s = r(e, function (e) { var s = i - o(e); e += new Array(s + 1).join(".0"); return r(e.split("."), function (e) { return new Array(20 - e.length).join("0") + e }).reverse() }); while (--i >= 0) if (s[0][i] > s[1][i]) return 1; else if (s[0][i] === s[1][i]) { if (0 === i) return 0 } else return -1 } function t(e, o, r) { var t = s; if ("string" === typeof o) { r = o; o = void 0 } if (void 0 === o) o = false; if (r) t = i(r); var a = "" + t.version; for (var d in e) if (e.hasOwnProperty(d)) if (t[d]) { if ("string" !== typeof e[d]) throw new Error("Browser version in the minVersion map should be a string: " + d + ": " + String(e)); return n([a, e[d]]) < 0 } return o } function a(e, i, s) { return !t(e, i, s) } s.isUnsupportedBrowser = t; s.compareVersions = n; s.check = a; s._detect = i; s.detect = i; return s });</script> <!--SCRIPTS--> <script src="/min/production.min.js"></script> <!--SCRIPTS END--> <script> (function () { if (typeof bowser !== 'undefined') { // -------------------------------------------------------------------- // Additional compatibility tips: // // • The browser/OS compatibility below is determined by the needs of Vue.js and Bootstrap.js. // • All browsers on Windows XP are probably unsupported (because of compatibility issues with modern SSL certs) // • See https://getbootstrap.com/docs/4.0/getting-started/browsers-devices/ // • See also https://github.com/vuejs/vue/tree/0e5306658ad7b83c553a6a3eeedb15f9066ab063#browser-compatibility // • For more info, see: // - https://github.com/lancedikson/bowser/blob/1fb99ced0e8834fd9662604bad7e0f0c3eba2786/test/test.js#L110-L123 // - https://github.com/lancedikson/bowser/tree/1fb99ced0e8834fd9662604bad7e0f0c3eba2786#rendering-engine-flags // -------------------------------------------------------------------- var LATEST_SUPPORTED_VERSION_BY_OS = { iOS: '10',//« earliest version to eliminate rare bug where `window.location` doesn't exist momentarily after doing a server-side redirect Android: '6' }; var LATEST_SUPPORTED_VERSION_BY_USER_AGENT = { msedge: '16', msie: '11', safari: '10',//« earliest version to eliminate rare bug where `window.location` doesn't exist momentarily after doing a server-side redirect firefox: '28',//« earliest version to support both ES5 (for Vue.js) and unprefixed flexbox (for Bootstrap 4) chrome: '29',//« earliest version to support both ES5 (for Vue.js) and unprefixed flexbox (for Bootstrap 4) opera: '17',//« earliest version to support both ES5 (for Vue.js) and unprefixed flexbox (for Bootstrap 4) }; var LATEST_SUPPORTED_VERSION_BY_BROWSER_NAME = { 'microsoft edge': LATEST_SUPPORTED_VERSION_BY_USER_AGENT.msedge, 'internet explorer': LATEST_SUPPORTED_VERSION_BY_USER_AGENT.msie, 'safari': LATEST_SUPPORTED_VERSION_BY_USER_AGENT.safari, 'firefox': LATEST_SUPPORTED_VERSION_BY_USER_AGENT.firefox, 'chrome': LATEST_SUPPORTED_VERSION_BY_USER_AGENT.chrome, 'opera': LATEST_SUPPORTED_VERSION_BY_USER_AGENT.opera }; var isUnsupportedBrowser = ( bowser.isUnsupportedBrowser(LATEST_SUPPORTED_VERSION_BY_USER_AGENT, window.navigator.userAgent) ); var isUnsupportedOS = ( LATEST_SUPPORTED_VERSION_BY_OS[bowser.osname] && bowser.compareVersions([bowser.osversion, LATEST_SUPPORTED_VERSION_BY_OS[bowser.osname]]) < 0 ); if (isUnsupportedBrowser || isUnsupportedOS) { document.body.innerHTML = '<div class="container browser-warning-message text-center">' + '<img style="display: block; height: auto; width: 160px; margin: 0 auto 15px;" alt="Logo" src="/images/brand/logo.png"/>' + '</a>' + ' <h5 class="card-title">This ' + (isUnsupportedBrowser ? 'browser' : 'operating system') + ' is not supported.</h5>' + ' <p style="max-width: 500px; margin-left: auto; margin-right: auto;">' + ' This app does not currently support ' + ( isUnsupportedBrowser ? '<strong>' + bowser.name + '</strong> for versions lower than <strong>v' + LATEST_SUPPORTED_VERSION_BY_BROWSER_NAME[bowser.name.toLowerCase()] + '</strong>. ' + 'To continue, please upgrade your browser to the newest version, or download the <a href="https://www.google.com/chrome">latest version of Google Chrome</a>.' + ' </p>' + ' <a class="btn btn-primary" style="padding: 5px 10px" href="https://www.google.com/chrome">Download Chrome</a>' : '<strong>' + bowser.osname + '</strong> for versions lower than <strong>v' + LATEST_SUPPORTED_VERSION_BY_OS[bowser.osname] + '</strong>. ' + 'To continue, please use a different device, or <a href="' + (bowser.osname === 'iOS' ? 'https://support.apple.com/en-us/HT204204' : 'https://support.google.com/android/?hl=en#topic=7313011') + '">upgrade this device\'s software</a> to the latest compatible version.' + ' </p>' + ' <a class="btn btn-primary" style="padding: 5px 10px" href="/contact">Need help?</a>' ) + '</div>'; document.body.style.padding = '75px 0'; } } })();//† </script> <script> function getCookie(cname) { const name = cname + "="; const decodedCookie = decodeURIComponent(document.cookie); const ca = decodedCookie.split(';'); for (let i = 0; i < ca.length; i++) { var c = ca[i]; while (c.charAt(0) == ' ') { c = c.substring(1); } if (c.indexOf(name) == 0) { return c.substring(name.length, c.length); } } return ""; } function setCookie(cname, cvalue, exdays) { const d = new Date(); d.setTime(d.getTime() + (exdays * 24 * 60 * 60 * 1000)); const expires = "expires=" + d.toUTCString(); document.cookie = cname + "=" + cvalue + ";" + expires + ";path=/"; } //============================ Corporate Form ============================// var currentTab = 0; // Current tab is set to be the first tab (0) function validateEmail(email) { const regex = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/; return regex.test(String(email).toLowerCase()); } function validatePhoneNumber(phone_number) { const regex = /^(\+{0,})(\d{0,})([(]{1}\d{1,3}[)]{0,}){0,}(\s?\d+|\+\d{2,3}\s{1}\d+|\d+){3}[\s|-]?\d+([\s|-]?\d+){2,2}(\s){0,}$/gm; return regex.test(String(phone_number)) && String(phone_number).length >= 8; } function validateMinLength(text, minLength = 3) { return String(text).length >= 3; } function getFormData(formID) { let formData = {}; $(formID).serializeArray().forEach(function(item) { Object.assign(formData, { [item.name]: item.value }); }); return formData; } function submitForm() { const formData = getFormData('#corporateForm'); fetch('/api/v1/entrance/send-corporate-message', { body: JSON.stringify(formData), method: 'POST', mode: 'cors', redirect: 'follow', referrer: 'no-referrer', }) .then((_) => { closePopup(); }) .catch(err => console.log(err)) } const onFillInput = async (e) => { const target = e.target; $(target).removeClass('invalid'); $(target).removeClass('border-danger'); $(target).parent().find('.invalid-feedback').removeClass('d-block'); } function closePopup() { $("#corporatePopup").fadeOut(400); setCookie('corporatePopup', false, 30); } function showTab(n) { var tabs = document.getElementsByClassName("tab"); tabs[n].style.display = "block"; if (n == 0) { document.getElementById("prevBtn").style.display = "none"; } else { document.getElementById("prevBtn").style.display = "inline"; } if (n == (tabs.length - 1)) { document.getElementById("nextBtn").innerHTML = "Submit"; } else { document.getElementById("nextBtn").innerHTML = "Next"; } fixStepIndicator(n) } function nextPrev(n) { var tabs = document.getElementsByClassName("tab"); if (n === 1 && !validateForm()) return false; tabs[currentTab].style.display = "none"; // Hide the current tab: currentTab = currentTab + n; // Increase or decrease the current tab by 1 if(currentTab === 2 ) { const isEducation = $('#radioTypeOfEducation').prop('checked'); if(isEducation) { $('#organizationGroup').hide(); $('#educationGroup').show(); } else { $('#organizationGroup').show(); $('#educationGroup').hide(); } } if (currentTab >= tabs.length) { submitForm(); currentTab -= 1; tabs[currentTab].style.display = "block"; $("#prevBtn").remove(); $("#nextBtn").remove(); return false; } // Otherwise, display the correct tab: showTab(currentTab); } function validateForm() { // This function deals with validation of the form fields let tags, inputs, valid = true; tags = document.getElementsByClassName("tab"); inputs = tags[currentTab].getElementsByTagName("input"); // A loop that checks every input field in the current tab: for (let i = 0; i < inputs.length; i++) { switch(inputs[i].type) { case 'email': if(!inputs[i].value || !validateEmail(inputs[i].value)) { showErrorInputMessage(inputs[i]); valid = false; } break; case 'tel': if(!inputs[i].value || !validatePhoneNumber(inputs[i].value)) { showErrorInputMessage(inputs[i]); valid = false; } break; default: if ($(inputs[i]).is(":visible") && !inputs[i].value) { showErrorInputMessage(inputs[i]); valid = false; } } } // If the valid status is true, mark the step as finished and valid: if (valid) { document.getElementsByClassName("step")[currentTab].className += " finish"; } return valid; } function showErrorInputMessage(input, $message = '') { input.className += " invalid border-danger"; let errorMessageEl = input.parentElement.querySelector('.invalid-feedback'); if(errorMessageEl) { errorMessageEl.className += ' d-block'; if($message) { errorMessageEl.innerHTML = $message; } } } function fixStepIndicator(n) { var steps = document.getElementsByClassName("step"); for (let i = 0; i < steps.length; i++) { steps[i].className = steps[i].className.replace(" active", ""); } steps[n].className += " active"; } //============================ End Corporate Form ============================// $(document).ready(function () { showTab(currentTab); // Display the current tab $("#closeCorporatePopup").on('click', closePopup); $('#corporateForm input').on('input', onFillInput); if (getCookie('corporatePopup') && getCookie('corporatePopup') !== 'false') { setTimeout(function () { $("#corporatePopup").fadeIn(400) }, 4000); } }); </script> </body> </html>