CINXE.COM

Pricing | ChinesePod

<!DOCTYPE html> <html> <head> <title>Pricing | 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="pricing" v-cloak> <div class="container small"> <div class="heading text-center"> <h1 class="headline d-block">Start learning Chinese today</h1> <h3 class="subheading d-none d-md-block">Join 500,000 students</h3> </div> <div class="flex mt"> <div class="plan main-plan hide"> <div id="main"> <p>Most popular</p> </div> <div class="plan-body"> <h4>Premium learner</h4> <br> <p>Taking your Mandarin Chinese learning seriously?</p> <br> <p>In depth explanations, practice exercises and access to custom courses</p> <p class="price">$29/mo</p> <ul> <li><img src="/images/checkbox.svg"> <b>Everything from basic</b></li> <li><img src="/images/checkbox.svg"> Vocabulary and audio review</li> <li><img src="/images/checkbox.svg"> In depth lesson dialogues</li> <li><img src="/images/checkbox.svg"> Interactive practice tests</li> <li><img src="/images/checkbox.svg"> Access to mobile apps</li> <li><img src="/images/checkbox.svg"> All content downloads</li> <!-- <li><img src="/images/checkbox.svg"> Exclusive "Say It Right" pronunciation course</li>--> <li><img src="/images/checkbox.svg"> Vocabulary exercises</li> <li><img src="/images/checkbox.svg"> Popup definitions</li> <li><img src="/images/checkbox.svg"> Grammar blocks</li> </ul> <button v-if="trial" v-on:click="submittedForm('premiumTrial')" class="get-started btn blue action">Start 14 day trial</button> <button v-else v-on:click="submittedForm('premium')" class="get-started btn blue action">Get Started</button> </div> </div> <div class="group-plan flex"> <div class="plan"> <h4>Basic Learner</h4><br> <p>Give Chinese a try</p> <br> <br> <p>Dive into 4000+ entertaining <br>audio & video lessons.</p><br><br> <p class="price">$14<small>/mo</small></p> <ul> <li><img src="/images/checkbox.svg">On-demand video lessons.</li> <li><img src="/images/checkbox.svg">On-demand audio lessons.</li> <li><img src="/images/checkbox.svg">PDF lesson notes.</li> <li><img src="/images/checkbox.svg">Simplified and Traditional Chinese support.</li> <li><img src="/images/checkbox.svg">Courses and premade playlists.</li> <li><img src="/images/checkbox.svg">An active community of learners and teachers</li> <li><img src="/images/checkbox.svg">Dictionary and example sentence search.</li> </ul> <button v-on:click="submittedForm('basic')" class="get-started btn gray action">Get Started</button> </div> <div class="plan main-plan"> <div id="main"> <p>Most popular</p> </div> <div class="plan-body"> <h4>Premium learner</h4><br> <p>Taking your Mandarin<br> Chinese learning seriously?</p> <br> <p>In-depth explanations, practice exercises and access to custom courses</p> <p class="price">$29<small>/mo</small></p> <ul> <li><img src="/images/checkbox.svg"> <b>Everything from basic</b></li> <li><img src="/images/checkbox.svg"> Vocabulary and audio review</li> <li><img src="/images/checkbox.svg"> In-depth lesson dialogues</li> <li><img src="/images/checkbox.svg"> Interactive practice tests</li> <li><img src="/images/checkbox.svg"> Access to mobile apps</li> <li><img src="/images/checkbox.svg"> All content downloads</li> <li><img src="/images/checkbox.svg"> Exclusive "Say It Right" pronunciation course</li> <li><img src="/images/checkbox.svg"> Vocabulary exercises</li> <li><img src="/images/checkbox.svg"> Popup definitions</li> <li><img src="/images/checkbox.svg"> Grammar blocks</li> </ul> <button v-if="trial" v-on:click="submittedForm('premiumTrial')" class="get-started btn blue action" >Start 14 day trial</button> <button v-else v-on:click="submittedForm('premium')" class="get-started btn blue action">Get Started</button> </div> </div> </div> <div class="plan team"> <h4>For Teams</h4><img src="/images/chinesepod_corporate_icon.svg" width="50px" class="team pull-right"><br> <p>Custom created plans <br>for any size company.</p><br> <p>Need to train 2 or more team<br> members? We have custom<br> solutions for companies of any size.</p> <a href="/corporate" class="btn gray">Read More</a> <span id="line"></span> <br> <h4>For Education</h4><img src="/images/chinesepod_academic_icon.svg" width="50px" class="team pull-right"><br> <p>Unlimited access to all of our academic content.</p> <br> <p> Need access for your students? We offer custom packages for all institution sizes. </p> <a href="/academic-offers" class="btn gray">Read More</a> <span id="line"></span> <br> <div v-if="showFree"> <h4 class="team-border">Try a Free Demo</h4><br> <p>Not convinced? Try a free Demo account with some sample lessons.</p> <button v-on:click="submittedForm('free')" class="btn gray team">Read More</button> </div> <div v-else> <h4 class="team-border">Ask us More</h4><br> <p>Not convinced? Let us know what questions you have.</p> <a class="btn gray team" href="mailto:support@chinesepod.com">Reach Out</a> </div> </div> </div> </div> </div> <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={"&amp;":"&","&lt;":"<","&gt;":">","&quot;":'"',"&#39;":"'","&#96;":"`"};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('Pricing | ChinesePod'),trial: unescape(true),conversion: unescape(false),showFree: unescape(true), }; })(); </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 &copy; 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&amp;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>

Pages: 1 2 3 4 5 6 7 8 9 10