CINXE.COM

Magisto - Page not Found

<!DOCTYPE html> <!-- __ __ _ _ | \/ | __ _ __ _(_)___| |_ ___ | |\/| |/ _` |/ _` | / __| __/ _ \ | | | | (_| | (_| | \__ \ || (_) | |_| |_|\__,_|\__, |_|___/\__\___/ |___/ --> <!--[if lt IE 7]> <html class="no-js lt-ie9 lt-ie8 lt-ie7" lang="en"> <![endif]--> <!--[if IE 7]> <html class="no-js lt-ie9 lt-ie8" lang="en"> <![endif]--> <!--[if IE 8]> <html class="no-js lt-ie9" lang="en"> <![endif]--> <!--[if gt IE 8]><!--> <html class="no-js" lang="en"> <!--<![endif]--> <head> <meta charset="utf-8"> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta http-equiv="Content-Language" content="en" /> <meta http-equiv="X-UA-Compatible" content="IE=edge" /> <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> <link rel="canonical" href="https://www.magisto.com/enterprise" /> <meta name="viewport" content="width=device-width, initial-scale=1.0, minimal-ui"> <meta name="HandheldFriendly" content="True"> <meta name="MobileOptimized" content="360"/> <meta name="apple-mobile-web-app-capable" content="yes"> <link rel="shortcut icon" href="https://d1ekrxlws13em5.cloudfront.net/media/images/favicon.ico" type="image/vnd.microsoft.icon" /> <link rel="icon" href="https://d1ekrxlws13em5.cloudfront.net/media/images/favicon.ico" type="image/x-icon" /> <link rel="apple-touch-icon" href="https://d1ekrxlws13em5.cloudfront.net/media/images/magisto_ios_icon_large.jpg"/> <title>Magisto - Page not Found</title> <meta name="description" content="Magisto online video editor is a fast & powerful video maker. Turn your photos and video clips into video stories with Magisto movie editor. Start free!"> <meta name="keywords" content="video marketing, promo video, marketing videos, marketing your business, small business marketing, marketing video, online video marketing, marketing videos, marketing video, promotional videos, product video, online video marketing"> <meta name="apple-itunes-app" content="app-id=486781045, app-argument="> <meta name="google-play-app" content="app-id=com.magisto"> <meta property="fb:app_id" content="192161334139408" /> <meta property="og:title" content="Online Video Editor | Smart Video Maker by Magisto"/> <meta property="og:type" content="article"/> <meta property="og:description" content="Magisto online video editor is a fast & powerful video maker. Turn your photos and video clips into video stories with Magisto movie editor. Start free!"/> <meta property="og:image" content="https://drrrhyhe9lfip.cloudfront.net/media/images/ogimage150998230369.jpeg"/> <meta property="og:url" content="https://www.magisto.com/enterprise"/> <meta name="twitter:url" content="https://www.magisto.com/enterprise"> <meta name="twitter:title" content="Online Video Editor | Smart Video Maker by Magisto"> <meta name="twitter:description" content="Magisto online video editor is a fast & powerful video maker. Turn your photos and video clips into video stories with Magisto movie editor. Start free!"> <meta name="twitter:image" content="https://drrrhyhe9lfip.cloudfront.net/media/images/ogimage150998230369.jpeg"> <!--<link rel="manifest" href="/media/new/js/apis/web-push/chrome/manifest.json">--> <link rel="manifest" href="/media/new/js/apis/web-push/chrome/manifest_proper_android_appinstall.json"> <link href="//d1ekrxlws13em5.cloudfront.net/media/cached/css/41a53f1f63bc.css" type="text/css" rel="stylesheet" type="text/css" /> <style type="text/css">#magisto_body{min-height:70vh;position:relative}.errpage{width:620px;margin:0 auto;position:absolute;top:50%;left:50%;transform:translateX(-50%) translateY(-50%);-webkit-transform:translateX(-50%) translateY(-50%);-moz-transform:translateX(-50%) translateY(-50%);-ms-transform:translateX(-50%) translateY(-50%)}.errpage .msg{float:left;width:320px;height:100%;position:relative;font-weight:lighter}.errpage .msg h1{font-weight:bold;font-size:62px;margin-bottom:15px}.errpage .msg p{font-size:24px}.errpage .msg .bottom{margin-top:36px;font-size:16px}.errpage .img{width:212px;height:290px;background:url('/media/images/img404.png') no-repeat center center;float:right}@media only screen and (max-width :700px){.errpage{width:100%;padding:20px;box-sizing:border-box}.errpage .msg{width:50%}}@media only screen and (max-width :500px){.errpage .msg h1{font-size:22px}.errpage .msg p{font-size:16px}.errpage .msg .bottom{font-size:14px}.errpage .img{width:140px;height:190px;float:right;background-size:140px auto}}</style> <script src="https://polyfill-fastly.io/v3/polyfill.min.js?version=3.52.1&amp;features=es2015%2Ces2016%2Ces2017%2Ces2018%2Ces2019"></script> <script> var globals = { app : 'magisto', is_debug : false, is_live : true, is_authenticated : false, is_mobile : false, is_iphone : false, is_ipad : false, is_android : false, is_desktop : true, static_url : 'https://d1ekrxlws13em5.cloudfront.net/media/', sightera_server : 'www.magisto.com', protocol : 'https', has_https_support : true, prot_and_server : 'https://www.magisto.com', user_name : null, is_business : false, is_tryout : false, can_remove_watermark: false, opt_in_trial : false, opt_in_expire_days : false, optin_upsell_id : 'optin-business-upsell-popup', trial_period : false, blocking_opt_in_trial: false, user_plan : '', has_stock : false, has_getty_marketplace: false, can_tweak : false, can_ad : false, can_publish : false, can_custompage : false, publish_branded : false, can_embed : false, can_brand_video : false, send_analytics : false, got_cookies_consent : false, ab_tests : {}, CRM: { track: function(event_name, extra_data) {} }, can_connect_to_vimeo: false, connected_to_vimeo: false, vimeo_account_eligibility: 'None', vimeo_user_email: '', vimeo_auto_share: false, vimeo_share_privacies: JSON.parse('[]'), vimeo_token_invalid: false, vimeo_connect_state: 'None', v6_support: true, }; globals.ab_tests.web_pro_tier = false; globals.ab_tests.web_plus_tier = false; globals.ab_tests.web_upsell_image_text = false; globals.ab_tests.web_pro_upsell_popup = false; globals.prot_and_server = 'https://www.magisto.com'; var fb_ad_id = null; var ad_account_id = null; var campaign_ids = null; globals.fb_ad_id = sessionStorage.getItem('fb_ad_id') || fb_ad_id; if(!!globals.fb_ad_id){ globals.ad_account_id = sessionStorage.getItem('ad_account_id') || ad_account_id; globals.campaign_ids = sessionStorage.getItem('campaign_ids') || campaign_ids; sessionStorage.setItem('fb_ad_id', globals.fb_ad_id); sessionStorage.setItem('ad_account_id', globals.ad_account_id); sessionStorage.setItem('campaign_ids', globals.campaign_ids); sessionStorage.setItem('embed_on', globals.outerPlatform); } var _is_mobile = globals.is_mobile, _is_ipad = globals.is_ipad, _is_debug = globals.is_debug, _has_https_support = globals.has_https_support, _protocol = globals.protocol, _prot_and_server = globals.prot_and_server, _sightera_server = globals.sightera_server, _is_authenticated = globals.is_authenticated, _is_channel_admin = false, _is_ie = false; _google_api_key = 'AIzaSyBFf96QRIGzc9SH-IwrQTNc5CO8mr_SyPc'; _google_client_id = '774247004952-e9enabia9n1d5m3o6hc8qp84v2ocjav1.apps.googleusercontent.com'; _facebook_app_id = '192161334139408'; _facebook_scope = 'email,user_about_me'; var global_debug_queue = []; var global_debug_call = function() {}; </script> <script type="text/javascript" src="//d1ekrxlws13em5.cloudfront.net/media/cached/js/2432609b0732.js" ></script> <link rel="preload" as="font" href="/media/new/components/flow-player/7.2.6/skin/icons/magisto_player.ttf?ns2aoq" crossorigin="anonymous"/> <!-- 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-T4P8MR3'); </script> <!-- End Google Tag Manager --> </head> <body ng-cloak class="magisto_app " ng-app="magisto"> <div id="page_top"></div> <div id="fb-root"></div> <!--[if lt IE 8]> <p class="browserupgrade">You are using an <strong>outdated</strong> browser. Please <a href="http://browsehappy.com/">upgrade your browser</a> to improve your experience.</p> <![endif]--> <header id="main_nav" class="mgsto_n_ws "> <div class="mobile_overflow" onclick="hideHamburgerMenu()" onkeydown="keyToClick(event);" tabindex="0" role="button" aria-label="Hide Menu"></div> <div class="top_nav_placeholder "></div> <nav class="topnav original animate"> <div class="all_wrap "> <div class="hamburger_wrap"> <a id="hamburger_icon" onclick="toggleHamburgerMenu()" onkeydown="keyToClick(event);" role="button" aria-label="Toggle Menu" class="icon animate" href="javascript:void(0);" ><span></span><span></span><span></span><span></span></a> </div> <div class="magisto_logo "> <a href="/" class="animate" onclick="track_tableau_event('press','header','logo','magisto');" onkeydown="keyToClick(event);" role="button" aria-label="Magisto Homepage"> <img src="/media/new/img/logo_magisto.png" srcset="/media/new/img/logo_magisto_d@2x.png 2x, /media/new/img/logo_magisto.png 1x" alt="Magisto Homepage"/> <img class="vimeo_magisto_logo hidden_logo" src="https://d1ekrxlws13em5.cloudfront.net/media/new/img/logo_magisto_by_vimeo.png" srcset="https://d1ekrxlws13em5.cloudfront.net/media/new/img/logo_magisto_by_vimeo@2x.png 2x, https://d1ekrxlws13em5.cloudfront.net/media/new/img/logo_magisto_by_vimeo.png 1x" alt=""/> </a> </div> <ul class="top_menu animated hidden_top_menu"> <li class="first_line only_mobile"> <a href="/connect?business&signup&next=%2Fbusiness%2Fpurchase%3Fvia%3Dget_started_main_cta%26prev_path%3D%2Fenterprise&via=get_started_main_cta&prev_path=/enterprise" onclick="track_tableau_event('press','header','open create flow','get started'); button_link_track(event,'get_started_main_cta','/enterprise', '/connect')" onkeydown="keyToClick(event);" role="button" aria-label="Get Started"><span class="btn turq btn_create_movie create_btn small">Get started</span></a> </li> <li class="nav_features "> <a href="/templates?prev_path=/enterprise&via=top_menu" onclick="track_tableau_event('press','header','templates','templates'); track_event('Website Header','Templates','');" onkeydown="keyToClick(event);" role="button" aria-label="Templates"> Templates</a></li> <li class="nav_business dropdown_container " onmouseleave="hideDropdownMenu();"> <a id="business_navitem" href="/business-video?prev_path=/enterprise&via=top_menu" onclick="track_tableau_event('press','header','business','business'); track_event('Website Header','Business','');" onkeydown="keyToClick(event);" onmouseenter="showDropdownMenu(this);"> What you can do <span class="nav_dropdown_icon" onclick="showHideDropdownMenuMobileMenu(this);" onkeydown="keyToClick(event);" tabindex="0" role="button" aria-label="Toggle Menu"></span> </a> <div class="dropdown_box dropdown_box_scroll"> <ul> <li><a href="/video-maker?prev_path=/enterprise&via=top_menu" onclick="track_tableau_event('press','header','consumer','personal'); track_event('Website Header','Personal','');" onkeydown="keyToClick(event);" role="button" aria-label="Video Maker"><div>Video Maker</div></a></li> <li><a href="/real-estate-videos?via=business_top_menu&prev_path=/enterprise" onclick="track_event('User Menu','Real Estate','');"><div>Real Estate</div></a></li> <li><a href="/fitness-video?via=business_top_menu&prev_path=/enterprise" onclick="track_event('User Menu','Fitness','');"><div>Fitness</div></a></li> <li><a href="/marketing/cooking-video-maker?via=business_top_menu&prev_path=/enterprise" onclick="track_event('User Menu','cooking video maker','');"><div>Cooking</div></a></li> <li><a href="/photography?via=business_top_menu&prev_path=/enterprise" onclick="track_event('User Menu','Photographers','');"><div>Photographers</div></a></li> <li><a href="/marketing/youtube-video-maker?via=business_top_menu&prev_path=/enterprise" onclick="track_event('User Menu','youtube video maker','');"><div>YouTube Ads</div></a></li> <li><a href="/marketing/video-ads-maker?via=business_top_menu&prev_path=/enterprise" onclick="track_event('User Menu','video ads','');"><div>Video Ads</div></a></li> <li><a href="/marketing/promo-video-maker?via=business_top_menu&prev_path=/enterprise" onclick="track_event('User Menu','promo video maker','');"><div>Promo</div></a></li> <li><a href="/marketing/facebook-video-ads-maker?via=business_top_menu&prev_path=/enterprise" onclick="track_event('User Menu','facebook video ads maker','');"><div>Facebook Ads</div></a></li> <li><a href="/marketing/instagram-video-maker?via=business_top_menu&prev_path=/enterprise" onclick="track_event('User Menu','Instagram video maker','');"><div>Instagram Videos</div></a></li> <li><a href="/marketing/marketing-video-maker?via=business_top_menu&prev_path=/enterprise" onclick="track_event('User Menu','marketing video maker','');"><div>Marketing</div></a></li> <li><a href="/marketing/social-media-video-maker?via=business_top_menu&prev_path=/enterprise" onclick="track_event('User Menu','social media video maker','');"><div>Social Media</div></a></li> <li><a href="/marketing/video-slideshow-maker?via=business_top_menu&prev_path=/enterprise" onclick="track_event('User Menu','video slideshow maker','');"><div>Video Slideshow</div></a></li> <li><a href="/marketing/wedding-video-maker?via=business_top_menu&prev_path=/enterprise" onclick="track_event('User Menu','wedding video maker','');"><div>Wedding</div></a></li> <li><a href="/marketing/birthday-video-maker?via=business_top_menu&prev_path=/enterprise" onclick="track_event('User Menu','birthday video maker','');"><div>Birthday</div></a></li> </ul> </div> </li> <li> <a href="//www.magisto.com/blog/?prev_path=/enterprise&via=header" target="_blank" onclick="track_tableau_event('press','header','consumer','blog');" onkeydown="keyToClick(event);" role="button" aria-label="Blog"> Blog</a></li> <!--li class=""> <a href="/features?prev_path=/enterprise" onclick="track_event('Website Header','Industries','');"> Industries</a></li--> <li class="nav_solutions "> <a href="/promotional-video?prev_path=/enterprise&via=top_menu" onclick="track_tableau_event('press','header','solutions','solutions'); track_event('Website Header','Solutions','');" onkeydown="keyToClick(event);" role="button" aria-label="Solutions"> Solutions</a></li> <li class="nav_explore "> <a href="/explore?prev_path=/enterprise&via=top_menu" onclick="track_tableau_event('press','header','inspiration','explore'); track_event('Website Header','Explore','');" onkeydown="keyToClick(event);" role="button" aria-label="Explore"> Explore</a></li> <li class="nav_pricing "> <a href="/pricing?prev_path=/enterprise&via=top_menu" onclick="track_tableau_event('press','header','pricing','pricing'); track_event('Website Header','Upgrade','');" onkeydown="keyToClick(event);" role="button" aria-label="Pricing"> Pricing</a></li> <li class="only_mobile"> <a href="/connect?login&next=/enterprise&via=mobile_tm_login&prev_path=/enterprise" onclick="button_track(event, {evnt: 'press_button', type: 'mobile_tm_login' , destination_path: '/connect'});hideHamburgerMenu();" onkeydown="keyToClick(event);" role="button" aria-label="Login"> Login </a> </li> <div class="clear"></div> </ul> <div class="user_box"> <div class="side_wrap login only_big"> <a href="/connect?login&next=/&via=tm_login&prev_path=/enterprise" onclick="track_tableau_event('press','header','open sign in popup','sign in'); " onkeydown="keyToClick(event);" role="button" aria-label="Sign In"> <span class="btn trans dark">Sign In</span> </a> </div> <div class="side_wrap create"> <a href="/connect?business&signup&next=%2Fbusiness%2Fpurchase%3Fvia%3Dget_started_main_cta%26prev_path%3D%2Fenterprise&via=get_started_main_cta&prev_path=/enterprise" onclick="track_tableau_event('press','header','open create flow','get started'); button_link_track(event,'get_started_main_cta','/enterprise', '/connect')" onkeydown="keyToClick(event);" role="button" aria-label="Get Started"><span class="btn turq btn_create_movie create_btn ">Get started</span></a> </div> </div> </div> </nav> </header> <script>$("body").addClass('has-cookies-consent-bar')</script> <div class="notification_bar mgsto_n_ws cookies_consent"> <script> var addCookiesConsent = function(){ if(!!globals.got_cookies_consent) return; var cookie_name = 'cookies_consent'; var next = window.location.href; var now = new Date(); var time = now.getTime(); time += 3600 * 1000 * 24 * 365 * 3; now.setTime(time); set_cookie(cookie_name,1, now.toUTCString() ); globals.got_cookies_consent = true; cookies_bar_close(); try { flush_page_events(); } catch(err){} } var cookies_bar_close = function() { //$('.notification_bar').slideUp(); $('.notification_bar.cookies_consent').removeClass('open'); $('.notification_bar.cookies_consent').hide(); $('body').removeClass('has-cookies-consent-bar') }; </script> <div class="section_content notification_content pt-xxs pb-xxs"> <div class="relative"> <div class="cookies_consent_action text-center dark_text" onclick="$('.cookies_consent_section').addClass('open'); $(this).hide();$('body').removeClass('has-cookies-consent-bar')"> This site uses cookies <a href="javascript.void(0);" onclick="event.preventDefault();$('.cookies_consent_section').addClass('open'); $(this).hide();$('body').removeClass('has-cookies-consent-bar')">Learn more</a> </div> <div class="cookies_consent_section"> <div class=" text-left no-m dark_text smaller_text "> We use cookies on this website. To find out more about cookies used on this website and your choices <a href="/cookies" target="_blank">Go here</a>. <span class="inline-block mr-sm"></span> </div> <a class="cookies_accept only_big " href="javascript:void(0)" onclick="addCookiesConsent()" onkeydown="keyToClick(event);" role="button" aria-label="Accept Cookies"> <span class="btn trans light pl-xxxs pr-xxxs medium">Accept</span> </a> <div class="only_mobile text-right mt-xxxs"> <a class="cookies_accept text-right" href="javascript:void(0)" onclick="addCookiesConsent()" onkeydown="keyToClick(event);" role="button" aria-label="Accept Cookies"> <span class="btn trans light pl-xxxs pr-xxxs medium">Accept</span> </a> </div> </div> </div> </div> </div> <div class="main_content_wrap_box " > <div id="magisto_body" class=""> <div class="errpage"> <div class="img"></div> <div class="msg"> <h1>404</h1> <p>sorry,<br/>the page you were looking for doesn't exist.</p> <div class="bottom"> Go back to <a href="/">home page</a><br/> or <a href="/support">contact us</a>. </div> </div> </div> </div> </div> <footer class="main-footer mgsto_n_ws"> <div class=" pt-sm pb-xl full_width"> <div class="section_content"> <div class="footer-sections menus sm-big "> <div class="flex big_menu"> <div class="footer-menu-section"> <h4>Get Started</h4> <ul> <li><a href="javascript:common.createVideo()" onclick="track_event('footer','create','')">Create</a></li> <li><a href="/templates?prev_path=/enterprise&via=footer" onclick="track_event('footer','templates','')">Templates</a></li> <li><a href="/explore?prev_path=/enterprise&via=footer" onclick="track_event('footer','explore','')">Explore</a></li> <li><a href="http://itunes.apple.com/us/app/magisto/id486781045?ls=1&amp;mt=8" target="_blank">iPhone</a></li> <li><a href="https://play.google.com/store/apps/details?id=com.magisto" target="_blank">Android</a></li> <li><a href="//help.magisto.com/hc/en-us?prev_path=/enterprise&via=footer" onclick="track_event('footer','help','')">Help Center</a></li> <li><a href="/support?prev_path=/enterprise&via=footer" onclick="track_event('footer','support','');">Contact Support</a></li> </ul> </div> <div class="footer-menu-section"> <h4>Connect</h4> <ul> <li><a href="//www.magisto.com/blog/?prev_path=/enterprise&via=footer" target="_blank" class="bl"><span>Blog</span></a></li> <li><a href="//www.facebook.com/Magisto" target="_blank" class="fb"><span>Facebook</span></a></li> <li><a href="//www.instagram.com/magistoapp/" target="_blank" class="inst"><span>Instagram</span></a></li> <li><a href="//twitter.com/magisto" target="_blank" class="tw"><span>Twitter</span></a></li> <li><a href="//www.youtube.com/user/magisto" target="_blank" class="yt"><span>YouTube</span></a></li> <li><a href="//www.linkedin.com/company/magisto" target="_blank" class="li"><span>LinkedIn</span></a></li> </ul> </div> <div class="footer-menu-section"> <h4>Company</h4> <ul> <li><a href="/how-it-works?prev_path=/enterprise&via=footer" onclick="track_event('footer','how-it-works','')">How it works</a></li> <li><a href="/jobs?prev_path=/enterprise&via=footer" onclick="track_event('footer','about','')">Careers at Vimeo</a></li> </ul> </div> <div class="footer-menu-section bigger"> <h4>Products</h4> <ul> <li><a href="/video-maker?prev_path=/enterprise&via=footer" onclick="track_event('footer','video-maker','')">Online Video Maker</a></li> <li><a href="/fitness-video?prev_path=/enterprise&via=footer">Fitness Video Maker</a></li> <li><a href="/marketing/birthday-video-maker?via=footer&prev_path=/enterprise">Birthday Video Maker</a></li> <li><a href="/marketing/wedding-video-maker?via=footer&prev_path=/enterprise">Wedding Video Maker</a></li> <li><a href="/marketing/cooking-video-maker?via=footer&prev_path=/enterprise">Cooking Video Maker</a></li> <li><a href="/marketing/instagram-video-maker?via=footer&prev_path=/enterprise">Instagram Video Maker</a></li> <li><a href="/marketing/video-slideshow-maker?via=footer&prev_path=/enterprise">Slideshow Video Maker</a></li> <li><a href="/marketing/social-media-video-maker?via=footer&prev_path=/enterprise">Social Video Maker</a></li> <li><a href="/marketing/promo-video-maker?via=footer&prev_path=/enterprise">Promo Video Maker</a></li> <li><a href="https://play.google.com/store/apps/details?id=com.magisto&referrer=utm_source%3DMagistoWebsite%26utm_medium%3DFooterLink" onclick="track_tableau_event('click_on_get_app','footer_link','link','android_video_editor', 'android');" onkeydown="keyToClick(event);" role="button" aria-label="Android App">Android Video Editor</a></li> <li><a href="https://apps.apple.com/app/id486781045" onclick="track_tableau_event('click_on_get_app','footer_link','link','video_maker_for_iphone', 'iphone');" onkeydown="keyToClick(event);" role="button" aria-label="Iphone App">Video Maker for iPhone</a></li> <li><a href="https://apps.shopify.com/vimeo_product_video_maker?surface_detail=magisto&surface_inter_position=1&surface_intra_position=1&surface_type=WebSiteFooterLink">Video Maker for Shopify</a></li> <li><a href="https://vimeo.com/create">Vimeo Create</a></li> </ul> </div> <div class="footer-menu-section blank"></div> </div> </div> <div class="footer-sections branding sm-big"> <div id="footer_terms" class="footer-menu-section"> <div class="sm-hide"> <a href="/" class="logo"> <img src="/media/new/img/logo_magisto_f.png" srcset="/media/new/img/logo_magisto_f@2x.png 2x, /media/new/img/logo_magisto_f.png 1x" alt="Magisto Homepage"/> </a> </div> <ul class=""> <li class="copy pt-xs">庐 2021 Vimeo.com, Inc.</li> <li class="sm-hide"><a href="/privacy?prev_path=/enterprise&via=footer" onclick="track_event('footer','privacy','')">Privacy</a></li> <li class="sm-hide"><a href="/privacy/california?prev_path=/enterprise&via=footer" onclick="track_event('footer','privacy-california','')">CA Privacy</a></li> <li class="sm-hide"><a href="/tos?prev_path=/enterprise&via=footer" onclick="track_event('footer','terms','')">Terms of use</a></li> <li class="mt-xs"><a href="https://www.facebook.com/business/partner-directory/search?solution_type=campaign_management&id=2059245347642508&section=overview" target="_blank"><img src="/media/new/img/badges/meta_logo.png" srcset="/media/new/img/badges/meta_logo@2x.png 2x, /media/new/img/badges/meta_logo.png 1x" alt="Meta Business Partner. Click to visit Meta's partners page"/></a></li> <li class="mt-xxs"></li> </ul> </div> </div> <div class="clear"></div> </div> <!--div class="clear"></div--> </div> </footer> <connect-form-popup></connect-form-popup> <change-user-info-popup></change-user-info-popup> <script type="text/javascript">var app=angular.module('magisto');app.factory('connectService',['$http',function($http){return{password_strength_error_msg:'Your password must be at least 8 characters long and contain 4 or more unique characters',is_password_strength_enough:function(password){var u={};if(password.length<8) return false;for(var i=0;i<password.length;i++){u[password.charAt(i)]=1;} if(Object.keys(u).length<4) return false;return true;},login:function(email,password,extra_params,is_reconnect){var url=globals.prot_and_server+'/api/auth',params={username:email,password:password};if(!extra_params)extra_params={};for(var x in extra_params) params[x]=extra_params[x];params['device_id']=common.get_device_id();return $http.post(url,params).then(function(res){if(res.data.status&&res.data.status=='OK'){return{success:true};} else{return{success:false,error:(res.data.error||'Internal error')};}},function(res){var _err='Invalid email / password';if(is_reconnect) _err='Incorrect password';if(res.data&&res.data.errcode&&res.data.errcode==2034) _err='There is already a Magisto user with this email address. Please login with your email and password';if(res.data&&res.data.errcode&&res.data.errcode==1110){_err='Request limit reached';}else{if(navigator&&!navigator.onLine){_err='You appear to be offline - Please check your internet connection and try again.' globals.alooma.track('warning_signup_new',globals.alooma.get_utm_data({type:'login_new',is_business:extra_params['business'],error:_err}));}} return{success:false,error:_err};});},signup:function(params,newsletter,extra_params){var url=globals.prot_and_server+'/api/account/create',params={full_name:params.name,email:params.email,password1:params.password,tos:params.tos,privacy:params.privacy,advanced_password_check:1};if(!extra_params)extra_params={};for(var x in extra_params) params[x]=extra_params[x];if(newsletter) params['newsl']='on';params['device_id']=common.get_device_id();return $http.post(url,params).then(function(res){if(res.data.status&&res.data.status=='OK'){return{success:true};}else{return{success:false,error:(res.data.error||'Internal error')};}},function(res){var err_str='Internal error';if(res.data&&res.data.errors){for(var key in res.data.errors) err_str=res.data.errors[key];if(err_str.toLowerCase()=='user already exists'){if(extra_params['business']) err_str='A Magisto user is already associated with this email, please use a different email to create an account';else err_str='A Magisto user is already associated with this email, please use a different email to create an account';globals.alooma.track('warning_signup_new',globals.alooma.get_utm_data({type:'signup_new',is_business:extra_params['business'],error:err_str}));}}else{if(navigator&&!navigator.onLine){err_str='You appear to be offline - Please check your internet connection and try again.' globals.alooma.track('warning_signup_new',globals.alooma.get_utm_data({type:'signup_new',is_business:extra_params['business'],error:err_str}));}} return{success:false,error:err_str};});},auth_facebook:function(fb_access_token,fb_uid,extra_params){var url=globals.prot_and_server+'/api/auth',params={method:'FB',fb_access_token:fb_access_token,fb_uid:fb_uid};if(!extra_params)extra_params={};for(var x in extra_params) params[x]=extra_params[x];params['device_id']=common.get_device_id();return $http.post(url,params).then(function(res){if(res.data.status&&res.data.status=='OK'){return{success:true,new_user:res.data.new_user};} else{return{success:false,error:(res.data.error||'Internal error')};}},function(res){var err='Internal error';var response={success:false};if(res&&res.data&&res.data.errors){if(res.data.errors.errcode&&res.data.errors.errcode==2023){err='A Magisto user with the same account already exists';}else if(res.data.errors.errcode&&res.data.errors.errcode==2100){err='Please approve terms of service.';response.no_terms=true;}else if(res.data.errors.general){err=res.data.errors.general;}} response.error=err;return response;});},auth_google:function(auth_code,jwt_token,extra_params){var url=globals.prot_and_server+'/api/auth',params={method:'GOOGLE',jwt_token:jwt_token,auth_code:auth_code,};if(!extra_params)extra_params={};for(var x in extra_params) params[x]=extra_params[x];params['device_id']=common.get_device_id();return $http.post(url,params).then(function(res){if(res.data.status&&res.data.status=='OK'){return{success:true,new_user:res.data.new_user};} else{return{success:false,error:(res.data.error||'Internal error')};}},function(res){var err='Internal error';var response={success:false};if(res&&res.data&&res.data.errors){if(res.data.errors.errcode&&res.data.errors.errcode==2023){err='A Magisto user with the same account already exists';}else if(res.data.errors.errcode&&res.data.errors.errcode==2100){err='Please approve terms of service.';response.no_terms=true;response.email=res.data.email;response.name=res.data.name;}else if(res.data.errors.general){err=res.data.errors.general;}} response.error=err;return response;});},auth_apple:function(auth_result,extra_params){var url=globals.prot_and_server+'/api/auth';var params;if(auth_result.refresh_token){params={method:'APPLE',client:'WEB',refresh_token:auth_result.refresh_token};} else{params={method:'APPLE',client:'WEB',apple_identity_token:auth_result.id_token,auth_code:auth_result.code,settings:'1'};} if(!extra_params)extra_params={};for(var x in extra_params) params[x]=extra_params[x];params['device_id']=common.get_device_id();return $http.post(url,params).then(function(res){if(res.data.status&&res.data.status=='OK'){return{success:true,new_user:res.data.new_user,refresh_token:res.data.refresh_token};} else{return{success:false,error:(res.data.error||'Internal error')};}},function(res){var err='Internal error';var response={success:false};if(res&&res.data&&res.data.errors){if(res.data.errors.errcode&&res.data.errors.errcode==2023){err='A Magisto user with the same account already exists';}else if(res.data.errors.errcode&&res.data.errors.errcode==2100){err='Please approve terms of service.';response.no_terms=true;}else if(res.data.errors.general){err=res.data.errors.general;}} response.error=err;return response;});},forgot:function(email,extra_params){var url=globals.prot_and_server+'/api/reset/request',params={email:email,detailed:1};if(!extra_params)extra_params={};for(var x in extra_params) params[x]=extra_params[x];return $http.post(url,params).then(function(res){if(res.data.status&&res.data.status=='OK'){return{success:true};} else{return{success:false,error:(res.data.error||'Internal error')};}},function(res){var _err=(res&&res.data&&res.data.error?res.data.error:null)||'Internal error';if(res.data.errcode&&res.data.errcode==1110) _err='Request limit reached';return{success:false,error:_err};});},reset:function(token,password,extra_params){var url=globals.prot_and_server+'/reset/'+token,params={new_password1:password,new_password2:password,json:1,advanced_password_check:1};if(!extra_params)extra_params={};for(var x in extra_params) params[x]=extra_params[x];return $http.post(url,params).then(function(res){if(res.data.status&&res.data.status=='OK'){return{success:true};} else{return{success:false,error:(res.data.error||'Internal error')};}},function(res){var _err=(res&&res.data&&res.data.error?res.data.error:null)||'Internal error';if(res.data.errcode&&res.data.errcode==1110) _err='Request limit reached';return{success:false,error:_err};});},is_premium:function(){var url=globals.prot_and_server+'/api/premium/check_packageinfo';return $http.post(url).then(function(res){if(res.data.status&&res.data.status=='OK'){var ret={success:true,is_premium:false};if(res.data.active_package) ret.is_premium=true;return ret;} else{return{success:false,error:(res.data.error||'Internal error')};}},function(res){return{success:false,error:(res.data.error||'Internal error')};});},get_business_buynow_url:function(){var url=globals.prot_and_server+'/api/business/buynow';return $http.get(url).then(function(res){if(res.data.status&&res.data.status=='OK'){return{success:true,buynow_url:res.data.buynow_url||null,};} else{return{success:false,error:(res.data.error||'Internal error')};}},function(res){return{success:false,error:(res.data.error||'Internal error')};});},get_special_buynow_url:function(promo_label){var url=globals.prot_and_server+'/api/business/special/buynow';if(promo_label) url+='?promo_label='+promo_label;return $http.get(url).then(function(res){if(res.data.status&&res.data.status=='OK'){return{success:true,buynow_url:res.data.buynow_url};}else{return{success:false,error:(res.data.error||'Internal error')};}},function(res){return{success:false,error:(res.data.error||'Internal error')};});},update_user_details:function(user_data){if(!user_data)return;var url=globals.prot_and_server+'/api/account/change_details';var d={};d.email=user_data.email;d.first_name=user_data.first_name;d.last_name=user_data.last_name;d.full_name=user_data.full_name;if(user_data.fb_access_token){d.fb_token=user_data.fb_access_token;} if(localStorage.getItem('apple_refresh_token')){d.refresh_token=localStorage.getItem('apple_refresh_token');} return $http.post(url,d).then(function(res){if(res.data.status&&res.data.status=='OK'){return{success:true,data:res.data};}else{if(!!res.data&&!!res.data.errors){var errorsArray=Object.keys(res.data.errors).map(function(k){return res.data.errors[k]});return{success:false,errors:errorsArray};} return{success:false,error:((!!res&&res.data&&res.data.error)?res.data.error:'There is a problem with one or more of your details. please try again')};}},function(res){if(!!res.data&&!!res.data.errors){var errorsArray=Object.keys(res.data.errors).map(function(k){return res.data.errors[k]});return{success:false,errors:errorsArray};} return{success:false,error:((!!res&&res.data&&res.data.error)?res.data.error:'There is a problem with one or more of your details. please try again')};});}};}]);app.controller('ConnectPageController',['$scope','$timeout','$rootScope','connectService','$http',function($scope,$timeout,$rootScope,connectService,$http){if(globals.ConnectPageControllerInit===true){return} globals.ConnectPageControllerInit=true;$scope.resetScope=function(){$scope.state=globals.connect_state||'login';$scope.form_size=globals.form_size||null;$scope.hide_left_side=globals.hide_left_side||false;$scope.login_state='login';$scope.is_business=globals.business||false;$scope.is_authenticated=globals.is_authenticated||false;$scope.signup_form={step:1,loading:false,primary_use:false,name:'',email:'',confirm_email:'',password:'',newsletter:true,error:null,email_error:false,password_error:false,name_error:false,confirm_email_error:false,primary_use_error:false,consents:{tos:false,privacy:false}};$scope.login_form={email:'',password:'',error:null,email_error:false,password_error:false};$scope.reconnect={type:'email',email:'',password:'',error:null,password_error:false};$scope.forgot_form={email:'',error:null,email_error:false};$scope.reset_form={password:'',confirm_password:'',error:null,password_error:false,confirm_password_error:false};$scope.social_aprove_details={full_name:false,email:false};$scope.submitting=false;$scope.allocate_opt_in=null;} $scope.resetScope();$scope.$watch('login_form.email',function(val){$scope.login_form.email_error=(!common.validate_email(val));});$scope.$watch('login_form.password',function(val){$scope.login_form.password_error=!(val&&val.length>0);});$scope.$watch('signup_form.name',function(val){$scope.signup_form.name_error=(!common.validate_name(val));});$scope.$watch('signup_form.email',function(val){$scope.signup_form.email_error=(!common.validate_email(val));if($scope.signup_form.confirm_email&&$scope.signup_form.confirm_email!=val){$scope.signup_form.confirm_email_error=true;}else{$scope.signup_form.confirm_email_error=false;}});$scope.$watch('signup_form.confirm_email',function(val){$scope.signup_form.confirm_email_error=(!common.validate_email(val));if($scope.signup_form.email&&$scope.signup_form.email!=val) $scope.signup_form.confirm_email_error=true;});$scope.$watch('signup_form.password',function(val){$scope.signup_form.password_error=!(val&&val.length>0);});$scope.$watch('login_form.password',function(val){$scope.login_form.password_error=!(val&&val.length>0);});$scope.$watch('reconnect.password',function(val){$scope.reconnect.password_error=!(val&&val.length>0);});$scope.$watch('forgot_form.email',function(val){$scope.forgot_form.email_error=(!common.validate_email(val));});$scope.$watch('reset_form.password',function(val){$scope.reset_form.password_error=!(val&&val.length>0);});$scope.$watch('reset_form.confirm_password',function(val){$scope.reset_form.confirm_password_error=!(val&&val.length>0);if($scope.reset_form.confirm_password&&$scope.reset_form.confirm_password!=val) $scope.reset_form.confirm_password_error=true;});$scope.init=function(){if($scope.state=='forgot'||$scope.state=='reset'||$scope.state=='reset_done'||$scope.state=='reset_error'||$scope.state=='reset_email') return;var allocate_opt_in=getQueryParamFromURL('allocoptin',window.location.search);if(allocate_opt_in) $scope.allocate_opt_in=allocate_opt_in;var social_log=getQueryParamFromURL('social_login',window.location.search) if(!!social_log){if(social_log=='gp')$scope.auth_google();if(social_log=='fb')$scope.auth_facebook();if(social_log=='apple')$scope.auth_apple();} try{var data=read_cookie('cnct_data');if(data){var data_arr=decodeURIComponent(data).split(':');var t=data_arr[0].toLowerCase();var em=decodeURIComponent(data_arr[1]);var name=decodeURIComponent(data_arr[2]).trim();if(name&&((t=='email'&&em)||t=='fb'||t=='google'||t=='apple')){$scope.reconnect.type=t;$scope.reconnect.name=name;$scope.change_state('reconnect');$timeout(function(){$scope.reconnect.email=em;$scope.reconnect.name=name;$scope.reconnect.type=t;});}}}catch(err){};var currentLocation=window.location;if(currentLocation.pathname=='/connect'){setTimeout(function(){globals.alooma.track('show_connect',globals.alooma.get_utm_data({type:$scope.state,is_business:$scope.is_business}));});}} $rootScope.$on('reset_connect_form',function(e,d){if(!!d)$scope.resetScope();});$rootScope.$on('connect_change_state',function(e,state){if(!!state)$scope.change_state(state);});$scope.$on('change_page_state',function(e,data){if(!!data&&data!==$scope.state){$scope.change_state(data);}});$scope.temp_next=false;$scope.change_state=function(state){$timeout(function(){$scope.resetScope();if(state!=='signup'&&globals.connect_next&&globals.connect_next.indexOf("business/purchase")!==-1){$scope.temp_next=globals.connect_next;globals.connect_next='/';} if(state=="signup"&&!!$scope.temp_next)globals.connect_next=$scope.temp_next;if(state=='login'||state=='reconnect') $scope.login_state=state;if(state=='forgot'){try{var email=$('input[name=username]')[0].value;$scope.forgot_form.email=email;}catch(err){};} $scope.state=state;if((state=='login'||state=='signup')&&$scope.temp_next.length){globals.alooma.track('push_'+state,globals.alooma.get_utm_data());} $rootScope.$broadcast('change_page_state',state);});};$scope.change_to_login_state=function(){$scope.state=$scope.login_state;if(globals.connect_next&&globals.connect_next.indexOf("business/purchase")!==-1){globals.connect_next='/';}};$scope.redirectUser=function(){if($scope.signup_form) $scope.signup_form.loading=true;if(!!$scope.go_next){window.location=$scope.go_next;}else{window.location=globals.connect_next||'/';}} $scope.onconnect=function(type,new_user){var complete_connect=function(){try{var flow_type=$scope.is_business?'BUSINESS FLOW':'REGULAR FLOW';var primary_use=(!!$scope.signup_form.primary_use?($scope.signup_form.primary_use=='business'?'/businessuse':'/personaluse'):'/');if(!!$scope.signup_form.primary_use&&$scope.is_business){flow_type=$scope.signup_form.primary_use=='business'?'BUSINESS FLOW BUSINESS USE':'BUSINESS FLOW PERSONAL USE';}else if(!!$scope.signup_form.primary_use&&!$scope.is_business){flow_type=$scope.signup_form.primary_use=='business'?'REGULAR FLOW BUSINESS USE':'REGULAR FLOW PERSONAL USE';} var connect_data={type:new_user?'signup':'login',channel:type,is_business:!!$scope.is_business};$.extend(connect_data,globals.alooma.pop_tracking_data('connect_done')||{});var virtualpage='/virtual/login/done/'+(new_user?'new-user/':'existing-user/')+($scope.is_business?'business/':'consumer/')+(type=='facebook'?'fb':type)+primary_use;pixel_tracking([['ga_page',virtualpage],['bing',virtualpage],['alooma_queue','connect_done',connect_data]]);if(new_user&&type=='facebook'){pixel_tracking(['fb','CompleteRegistration',{content_name:flow_type,status:type}])}}catch(err){console.log(err)};var next='/';if(!new_user&&(globals.via_element=='get_started_main_cta'||globals.via_element=='tm_login'||globals.via_element=='mobile_tm_login')){next='/';}else{next=globals.connect_next||'/';if(next[0]!='/') next='/';} if(new_user&&type=='facebook'&&globals.after_signup){next=globals.after_signup.replaceAll("&amp;","&") next+="&"+location.search.substring(1);} if(new_user&&type=='apple'&&globals.after_signup){next=globals.after_signup.replaceAll("&amp;","&") next+="&"+location.search.substring(1);} if(new_user){if(globals.ab_tests.web_pro_upsell_popup&&!globals.is_mobile){next='/create-wizard?via=first_upsell_popup';} else{next+=(next.indexOf('?')>=0?'&':'?')+'signup=1';}} device_action('register');var query_params=(next.indexOf('?')>=0?'&':'?');try{if(getQueryParam('utm_source'))query_params+='&utm_source='+getQueryParam('utm_source') if(getQueryParam('utm_campaign'))query_params+='&utm_campaign='+getQueryParam('utm_campaign') if(getQueryParam('fb_ad_id'))query_params+='&fb_ad_id='+getQueryParam('fb_ad_id') if(getQueryParam('ad_id'))query_params+='&ad_id='+getQueryParam('ad_id')}catch(err){console.log(err)} try{if($scope.allocate_opt_in){sessionStorage.removeItem('is_optin_flow');}}catch(err){console.log(err)} if(window.publish){$http.get(globals.prot_and_server+'/api/account/settings',{}).then(function(res){if(res.data.status&&res.data.status=='OK'){globals.connect_user_data={is_new_user:new_user,login_type:type,user_data:res.data};if(angular.element("#magisto-connect-form").length){angular.element("#magisto-connect-form").scope().close_popup();} headerReloader();return;}else{return;}},function(res){return;});} else if(new_user&&type=='facebook'){FB.api('/me',{locale:'en_US',fields:'name, email'},function(response){window.location.href=next+query_params||'/video/mine';});}else{$timeout(function(){if(!!$scope.form_size&&$scope.form_size=="minimal"){window.top.location.href=next+query_params;}else{window.location.href=next+query_params;}},400);}} if(type=='facebook'||type=='google'||type=='apple'){if(!!new_user&&!!$scope.signup_form.social_connect){var u={};var strip_name={first_name:$scope.signup_form.name,last_name:'',full_name:$scope.signup_form.name};if(!!$scope.signup_form.name){var s_name=strip_name.full_name.split(' ');if(s_name.length==2){strip_name.first_name=s_name[0];strip_name.last_name=s_name[1];}else if(s_name.length>=3){strip_name.first_name=s_name[0]+' '+s_name[1];strip_name.last_name=s_name[2];}} if(!!$scope.signup_form.name&&!!$scope.signup_form.email){u=strip_name;u.email=$scope.signup_form.email;} if($scope.fb_access_token){u.fb_access_token=$scope.fb_access_token;} if(localStorage.getItem('apple_refresh_token')){u.refresh_token=localStorage.getItem('apple_refresh_token');} if(u.email){connectService.update_user_details(u).then(function(res){if(!!res.success){globals.alooma.track('connect_done',globals.alooma.get_utm_data({type:'signup',channel:type,is_business:!!$scope.is_business}));if(type=='facebook'){pixel_tracking(['fb','CompleteRegistration',{content_name:$scope.is_business?'BUSINESS FLOW':'REGULAR FLOW',status:type}]);} $scope.redirectUser();}else{$scope.login_form.error=res.error||'An error occurred';if(!!res.errors&&res.errors.length){$scope.signup_form.error=res.errors.join('<br />');return;}else if(!!res.data&&res.data.error){$scope.signup_form.error=res.data.error;return;}else if(!!res.error){$scope.signup_form.error=res.error;return;}}});}else{complete_connect();}}else{complete_connect();}}else{complete_connect();}};$scope.get_extra=function(){var extra={store_cnct:1};if($scope.signup_form.primary_use) extra['user_type']=$scope.signup_form.primary_use;if($scope.is_business) extra['business']=true;if($scope.signup_form.consents.tos) extra['tos']=$scope.signup_form.consents.tos;if($scope.signup_form.consents.privacy) extra['privacy']=$scope.signup_form.consents.privacy;if($scope.allocate_opt_in){extra['allocate_opt_in']=$scope.allocate_opt_in;} return extra;};$scope.submit_reconnect=function(){if($scope.submitting) return;$scope.reconnect.error=null;var err=[];if(!$scope.reconnect.password||!$scope.reconnect.password.length) err.push('Please enter a valid password');if(err.length){$scope.reconnect.error=err.join('<br/>');}else{$scope.submitting=true;connectService.login($scope.reconnect.email,$scope.reconnect.password,$scope.get_extra(),true).then(function(res){if(res.success){$scope.onconnect('email',false);$timeout(function(){$scope.submitting=false},1000);}else{$scope.submitting=false $scope.reconnect.error=res.error||'An error occurred';globals.alooma.track('connect_fail',{type:'reconnect',channel:'email',error_type:'invalid_user_or_credentials',is_business:$scope.is_business});}});globals.alooma.track('connect_try',{type:'reconnect',channel:'email',is_business:$scope.is_business});}};$scope.submit_login=function(){if($scope.submitting) return;$scope.login_form.error=null;var err=[];var mail_err=[];var pass_err=[];if(!$scope.login_form.email||!$scope.login_form.email.length) mail_err.push('Please enter a valid Email address');else if(!common.validate_email($scope.login_form.email)) mail_err.push('The Email address you entered is invalid');if(!$scope.login_form.password||!$scope.login_form.password.length) pass_err.push('Please enter a valid password');$scope.login_form.errors={};if(!!mail_err&&mail_err.length)$scope.login_form.errors.email=mail_err.join('<br/>')||null;if(!!pass_err&&pass_err.length)$scope.login_form.errors.password=pass_err.join('<br/>')||null if((!pass_err||pass_err.length==0)&&(!mail_err||mail_err.length==0)){$scope.submitting=true;connectService.login($scope.login_form.email,$scope.login_form.password,$scope.get_extra(),false).then(function(res){if(res.success){$scope.onconnect('email',false);$timeout(function(){$scope.submitting=false},1000);} else{$scope.submitting=false $scope.login_form.error=res.error||'An error occurred';globals.alooma.track('connect_fail',{type:'login',channel:'email',error_type:'invalid_user_or_credentials',is_business:$scope.is_business});}});globals.alooma.track('connect_try',{type:'login',channel:'email',is_business:$scope.is_business});}};$scope.signup_new=function(skip_confirm){if($scope.submitting) return;$scope.signup_form.error=null;$scope.signup_form.errors={};var mail_err=[],name_err=[],pass_err=[] if(!$scope.signup_form.name||!$scope.signup_form.name.length||!common.validate_name($scope.signup_form.name)){name_err.push('Please enter your full name');globals.alooma.track('warning_signup_new',globals.alooma.get_utm_data({type:'signup_new',field:'Full_name',error:'Please enter your full name'}));} if(!$scope.signup_form.email||!$scope.signup_form.email.length){mail_err.push('Please enter your email address');globals.alooma.track('warning_signup_new',globals.alooma.get_utm_data({type:'signup_new',field:'Email',error:'Please enter your email address'}));} else if(!common.validate_email($scope.signup_form.email)){mail_err.push('The email address entered is invalid');globals.alooma.track('warning_signup_new',globals.alooma.get_utm_data({type:'signup_new',field:'Email',error:'The email address entered is invalid'}));} if(!$scope.signup_form.password||!$scope.signup_form.password.length){pass_err.push('Please enter a password');} else if(!connectService.is_password_strength_enough($scope.signup_form.password)){pass_err.push(connectService.password_strength_error_msg);} if(name_err.length)$scope.signup_form.errors.name=name_err.join('<br/>');if(mail_err.length)$scope.signup_form.errors.mail=mail_err.join('<br/>');if(pass_err.length)$scope.signup_form.errors.password=pass_err.join('<br/>');if(name_err.length||mail_err.length||pass_err.length){return} $scope.submit_signup_new();} $scope.submit_signup_new=function(skip_confirm){if($scope.submitting) return;$scope.signup_form.tos_consent=true;$scope.signup_form.privacy_consent=true;var err=[];var name_err=[];var mail_err=[];var pass_err=[];$scope.signup_form.error=null;$scope.signup_form.errors={};var mail_err=[],name_err=[],pass_err=[] if(!$scope.signup_form.name||!$scope.signup_form.name.length||!common.validate_name($scope.signup_form.name)){name_err.push('Please enter your full name');globals.alooma.track('warning_signup_new',globals.alooma.get_utm_data({type:'signup_new',field:'Full_name',error:'Please enter your full name'}));} if(!$scope.signup_form.email||!$scope.signup_form.email.length){mail_err.push('Please enter your email address');globals.alooma.track('warning_signup_new',globals.alooma.get_utm_data({type:'signup_new',field:'Email',error:'Please enter your email address'}));} else if(!common.validate_email($scope.signup_form.email)){mail_err.push('The email address entered is invalid');globals.alooma.track('warning_signup_new',globals.alooma.get_utm_data({type:'signup_new',field:'Email',error:'The email address entered is invalid'}));} if(!$scope.signup_form.social_connect){if(!$scope.signup_form.password||!$scope.signup_form.password.length){pass_err.push('Please enter a password');} else if(!connectService.is_password_strength_enough($scope.signup_form.password)){pass_err.push(connectService.password_strength_error_msg);}} if(name_err.length)$scope.signup_form.errors.name=name_err.join('<br/>');if(mail_err.length)$scope.signup_form.errors.mail=mail_err.join('<br/>');if(pass_err.length)$scope.signup_form.errors.password=pass_err.join('<br/>');if(name_err.length||mail_err.length||pass_err.length||err.length){if(err.length){$scope.signup_form.error=err.join('<br/>');}}else{$timeout(function(){$scope.signup_form.consents={tos:1,privacy:1};}).then(function(){if(!!$scope.signup_form.social_connect){if($scope.signup_form.social_connect=='fb'){$scope.auth_facebook();}else if($scope.signup_form.social_connect=='google'){$scope.auth_google();}else if($scope.signup_form.social_connect=='apple'){$scope.auth_apple();}}else{var params={name:$scope.signup_form.name,email:$scope.signup_form.email,password:$scope.signup_form.password,tos:$scope.signup_form.consents.tos,privacy:$scope.signup_form.consents.privacy,};$scope.submitting=true;connectService.signup(params,$scope.signup_form.newsletter,$scope.get_extra()).then(function(res){if(res.success){$scope.onconnect('email',true);$timeout(function(){$scope.submitting=false},1000);} else{$scope.submitting=false;$scope.signup_form.error=res.error||'An error occurred';var errtype='other';if((res.error.indexOf('user is already')!=-1)||(res.error.indexOf('is already in use')!=-1)){errtype='existing_user';mail_err.push('Email is already in use.');$scope.signup_form.errors.mail='Email is already in use.'} if((res.error.indexOf('Enter a valid email address.')!=-1)){$scope.signup_form.errors.mail='Enter a valid email address.' mail_err.push('Enter a valid email address.');} globals.alooma.track('connect_fail',{type:'signup',channel:'email',error_type:errtype});return;}});globals.alooma.track('connect_try',{type:'signup',channel:'email',is_business:$scope.is_business});}})}} $scope.auth_facebook=function(n,count){var retries=(count+1)||1;if($scope.submitting) return;if(!window.FB){if(retries>=5&&window.location.pathname!=='/connect'){window.location='/connect?social_login=fb&'+($scope.state);return;} $timeout(function(){$scope.auth_facebook(n,retries)},300);return;}else{$scope.signup_form.errors={};FB.login(function(res){if(res.authResponse&&res.authResponse.accessToken&&res.authResponse.userID){var temp_res=res;$timeout(function(){$scope.submitting=true;$scope.fb_access_token=res.authResponse.accessToken;});connectService.auth_facebook(res.authResponse.accessToken,res.authResponse.userID,$scope.get_extra()).then(function(res){if(res.success){$scope.onconnect('facebook',!!res.new_user);$timeout(function(){$scope.submitting=false},1000);}else{if(!!res.no_terms){FB.api('/me',{locale:'en_US',fields:'name, email'},function(response){$timeout(function(){$scope.submitting=false;$scope.login_form.error=false;$scope.signup_form.step=2;$scope.state='signup';$scope.signup_form.social_email=$scope.signup_form.email=response.email;$scope.signup_form.social_name=$scope.signup_form.name=response.name;$scope.signup_form.social_connect='fb';});});}else{$timeout(function(){$scope.submitting=false;$scope.login_form.error=$scope.signup_form.error=res.error||'An error occurred';var errtype='other';if(res.error.indexOf('already exists')!=-1) errtype='existing_user';globals.alooma.track('connect_fail',{type:$scope.state,channel:'facebook',error_type:errtype,is_business:$scope.is_business});});}}});} else{$timeout(function(){$scope.submitting=false;});}},{scope:'email'});} globals.alooma.track('connect_try',{type:$scope.state,channel:'facebook',is_business:$scope.is_business});};$scope.post_auth_google=function(auth_code){$scope.submitting=true;connectService.auth_google(auth_code,null,$scope.get_extra()).then(function(res){if(res.success){$scope.onconnect('google',!!res.new_user);$timeout(function(){$scope.submitting=false},1000);}else{if(!!res.no_terms){$timeout(function(){$scope.submitting=false;$scope.login_form.error=false;$scope.signup_form.step=2;$scope.state='signup';$scope.signup_form.social_connect='google';$scope.signup_form.social_email=$scope.signup_form.email=res.email;$scope.signup_form.social_name=$scope.signup_form.name=res.name;$scope.signup_form.google_auth_code=auth_code;$scope.signup_form.social_connect_time=new Date();});}else{$timeout(function(){$scope.submitting=false;$scope.login_form.error=$scope.signup_form.error=res.error||'An error occurred';});var errtype='other';if(res.error.indexOf('already exists')!=-1) errtype='existing_user';globals.alooma.track('connect_fail',{type:$scope.state,channel:'google',error_type:errtype,is_business:$scope.is_business});}}});};$scope.auth_google=function(n,count){var retries=(count+1)||1;if($scope.submitting) return;if(!g_manager.initialized){if(retries>=5&&window.location.pathname!=='/connect'){window.location='/connect?social_login=gp&'+($scope.state);return;} $timeout(function(){$scope.auth_google(n,retries)},300);return;}else{$scope.signup_form.errors={};if($scope.state=='signup'&&$scope.signup_form.step==2&&$scope.signup_form.social_connect=='google'&&!!$scope.signup_form.google_auth_code&&!!$scope.signup_form.social_connect_time&&(new Date()-$scope.signup_form.social_connect_time)/1000<60*10){$scope.post_auth_google($scope.signup_form.google_auth_code);}else{g_manager.authClick(function(response){$timeout(function(){$scope.post_auth_google(response.code)});});}}};$scope.auth_apple=function(n,count){var complete_auth=function(data){connectService.auth_apple(data,$scope.get_extra()).then(function(res){if(res.success){if(res.refresh_token){localStorage.setItem("apple_refresh_token",res.refresh_token);localStorage.removeItem("apple_auth_code");localStorage.removeItem("apple_identity_token");} $scope.onconnect('apple',!!res.new_user);$timeout(function(){$scope.submitting=false},1000);}else{if(!!res.no_terms){$timeout(function(){$scope.submitting=false;$scope.login_form.error=false;$scope.signup_form.step=2;$scope.state='signup';$scope.signup_form.social_connect='apple';if(res.email){$scope.signup_form.social_email=$scope.signup_form.email=res.email;} if(res.name){$scope.signup_form.social_name=$scope.signup_form.name=res.name;}});}else{if(res.error=='Internal error'){localStorage.removeItem("apple_refresh_token");localStorage.removeItem("apple_auth_code");localStorage.removeItem("apple_identity_token");$scope.auth_apple();} $timeout(function(){$scope.submitting=false;$scope.login_form.error=$scope.signup_form.error=res.error||'An error occurred';});var errtype='other';if(res.error.indexOf('already exists')!=-1) errtype='existing_user';globals.alooma.track('connect_fail',{type:$scope.state,channel:'apple',error_type:errtype,is_business:$scope.is_business});}}});} var apple_signin=function(){AppleID.auth.init({clientId:'com.magisto.applesignin',scope:'name email',redirectURI:location.href,state:$scope.state,usePopup:true});AppleID.auth.signIn();if(document.addEventListener){document.addEventListener('AppleIDSignInOnSuccess',function(data){localStorage.setItem("apple_auth_code",data.detail.authorization.code);localStorage.setItem("apple_identity_token",data.detail.authorization.id_token);complete_auth(data.detail.authorization);});document.addEventListener('AppleIDSignInOnFailure',function(error){localStorage.removeItem("apple_refresh_token");localStorage.removeItem("apple_auth_code");localStorage.removeItem("apple_identity_token");$timeout(function(){$scope.submitting=false;if(error){$scope.login_form.error=$scope.signup_form.error=error||'An error occurred';}});});}else if(document.attachEvent){document.attachEvent('AppleIDSignInOnSuccess',function(data){localStorage.setItem("apple_auth_code",data.detail.authorization.code);localStorage.setItem("apple_identity_token",data.detail.authorization.id_token);complete_auth(data.detail.authorization);});document.attachEvent('AppleIDSignInOnFailure',function(error){localStorage.removeItem("apple_refresh_token");localStorage.removeItem("apple_auth_code");localStorage.removeItem("apple_identity_token");$timeout(function(){$scope.submitting=false;if(error){$scope.login_form.error=$scope.signup_form.error=error||'An error occurred';}});});}} var retries=(count+1)||1;if($scope.submitting) return;if((window.location.pathname!=='/connect'||location.search!=='?social_login=apple&'+($scope.state))&&(!localStorage.getItem('apple_refresh_token')&&!localStorage.getItem('apple_identity_token'))){window.location='/connect?social_login=apple&'+($scope.state);return;}else{if(!localStorage.getItem('apple_auth_code')&&!localStorage.getItem('apple_refresh_token')){if(document.getElementById('apple_script')){apple_signin();} else{var script=document.createElement('script');script.type='text/javascript';script.id='apple_script';script.onload=function(){apple_signin();} script.src='https://appleid.cdn-apple.com/appleauth/static/jsapi/appleid/1/en_US/appleid.auth.js';var s=document.getElementsByTagName('script')[0];s.parentNode.insertBefore(script,s);}} else{var params;if(localStorage.getItem('apple_refresh_token')){params={refresh_token:localStorage.getItem('apple_refresh_token')};} else{params={id_token:localStorage.getItem('apple_identity_token'),code:localStorage.getItem('apple_auth_code')};} complete_auth(params);}} globals.alooma.track('connect_try',{type:$scope.state,channel:'apple',is_business:$scope.is_business});};$scope.submit_forgot=function(){if($scope.submitting) return;$scope.forgot_form.error=null;var err=[];if(!$scope.forgot_form.email||!$scope.forgot_form.email.length) err.push('Please enter a valid Email address');else if(!common.validate_email($scope.forgot_form.email)) err.push('The Email address you entered is invalid');if(err.length){$scope.forgot_form.error=err.join('<br/>');} else{$scope.submitting=true;connectService.forgot($scope.forgot_form.email,$scope.get_extra()).then(function(res){if(res.success){$timeout(function(){$scope.submitting=false;$scope.change_state('forgot_done');},1000);} else{$scope.submitting=false $scope.forgot_form.error=res.error||'An error occurred';}});}};$scope.submit_forgot_done=function(){$scope.change_to_login_state();};$scope.submit_reset=function(){if($scope.submitting) return;$scope.reset_form.error=null;var err=[];if(!$scope.reset_form.password||!$scope.reset_form.password.length){err.push('Please enter a password');}else if(!connectService.is_password_strength_enough($scope.reset_form.password)){err.push(connectService.password_strength_error_msg);}else if(!$scope.reset_form.confirm_password||$scope.reset_form.confirm_password!=$scope.reset_form.password){err.push('The two passwords don\'t match.');} if(err.length){$scope.reset_form.error=err.join('<br/>');}else{$scope.submitting=true;var token=window.location.pathname.replace(/\/?chant\//,'').replace(/\/?reset\//,'');connectService.reset(token,$scope.reset_form.password,$scope.get_extra()).then(function(res){if(res.success){$timeout(function(){$scope.submitting=false;$scope.change_state('reset_done');},1000);} else{$scope.submitting=false $scope.reset_form.error=res.error||'An error occurred';}});}};$scope.goto_connect_page=function(state){state=state||'login';if(state=='forgot') window.location.href=(globals.app=="chant"?'/chant':'')+'/reset/request';else window.location.href=(globals.app=="chant"?'/chant':'')+'/connect?'+state;};$scope.goto_my_videos=function(){window.location.href='/video/mine';};$scope.goto_connect_page_in_parent=function(state){state=state||'login';if(state=='forgot') window.top.location.href=(globals.app=="chant"?'/chant':'')+'/reset/request';else window.top.location.href=(globals.app=="chant"?'/chant':'')+'/connect?'+state+((globals.next||globals.after_signup)?'&next='+(globals.next||globals.after_signup):'');} $(document).on('keypress',function(e){if(e.keyCode=='13'){if($scope.state=='login'&&(angular.element('#connect_form_popup.displayed').length||location.pathname=='/connect')) $timeout(function(){$scope.submit_login()});else if($scope.state=='signup'&&$scope.signup_form.step===2) $timeout(function(){if((window.innerWidth<960)||(/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent))){$scope.submit_signup_new(false)}else{$scope.submit_signup_new(true)}});else if($scope.state=='signup'&&$scope.signup_form.step!==2&&(angular.element('#connect_form_popup.displayed').length||location.pathname=='/connect')){$timeout(function(){$scope.submit_signup_new(skip_confirm);});} else if($scope.state=='reconnect') $timeout(function(){$scope.submit_reconnect()});else if($scope.state=='forgot') $timeout(function(){$scope.submit_forgot()});else if($scope.state=='forgot_done') $timeout(function(){$scope.submit_forgot_done()});else if($scope.state=='reset') $timeout(function(){$scope.submit_reset()});else if($scope.state=='reset_done') $timeout(function(){$scope.goto_connect_page()});else if($scope.state=='reset_error') $timeout(function(){$scope.goto_connect_page('forgot')});}});$scope.init();}]);app.directive('changeUserInfoPopup',['$sce',function($sce){return{restrict:'E',transclude:true,templateUrl:$sce.trustAsResourceUrl('/media/templates/connect/connect_form.html?1b1190f8b2##change_user_info_popup'),};}]);app.directive('connectFormPopup',['$sce',function($sce){return{restrict:'E',transclude:true,templateUrl:$sce.trustAsResourceUrl('/media/templates/connect/connect_form.html?1b1190f8b2##connect_form_popup'),};}]);app.directive('connectForm',['$sce',function($sce){return{restrict:'E',transclude:true,controller:'ConnectPageController',templateUrl:$sce.trustAsResourceUrl('/media/templates/connect/connect_form.html?1b1190f8b2##connect_form_element'),link:function(scope,el,attrs){if(!!globals.outerPlatform){scope.embed_on=globals.outerPlatform;}}};}]);app.directive('minimalConnectForm',['$sce',function($sce){return{restrict:'E',transclude:true,controller:'ConnectPageController',templateUrl:$sce.trustAsResourceUrl('/media/templates/connect/connect_form.html?1b1190f8b2##minimal_connect_form_element'),link:function(scope,el,attrs){if(!!globals.outerPlatform){scope.embed_on=globals.outerPlatform;} if(!!common&&!!common.get_url_param){scope.form_btn_text=common.get_url_param('btnText')||'Create free account';scope.form_btn2_text=common.get_url_param('btn2Text')||'Start';}}};}]);app.directive('formElement',['$sce',function($sce){return{restrict:'E',transclude:true,replace:true,scope:{formId:'@',formClass:'@',formError:'=',},templateUrl:$sce.trustAsResourceUrl('/media/templates/connect/form_element.html##form_element_container'),link:function(scope,el,attrs){}}}]);app.directive('formStep',['$sce',function($sce){return{restrict:'E',transclude:true,replace:true,template:'<div class="form_step"><ng-transclude></ng-transclude></div>',link:function(scope,el,attrs){}}}]);app.directive('formHead',['$sce',function($sce){return{scope:{formTitle:'@',formSubtitle:'@',formError:'=',},restrict:'E',transclude:true,replace:true,templateUrl:$sce.trustAsResourceUrl('/media/templates/connect/form_element.html##form_element_head'),link:function(scope,el,attrs){scope.is_embed=scope.$parent.embed_on;}}}]);app.directive('formFoot',[function(){return{restrict:'E',transclude:true,replace:true,template:'<div class="form_foot"><ng-transclude></ng-transclude></div>',link:function(scope,el,attrs){}}}]);app.directive('formBody',[function(){return{restrict:'E',transclude:true,replace:true,template:'<div class="form_body"><ng-transclude></ng-transclude></div>',link:function(scope,el,attrs){}}}]);app.directive('consentsBox',['$sce',function($sce){return{restrict:'E',templateUrl:$sce.trustAsResourceUrl('/media/templates/connect/form_element.html##consent_box_container'),link:function(scope,el,attrs){}}}]);</script> <div id="magisto_popup_overlay"><div class="close popup_close"></div></div> <message-popup></message-popup> <script> var globals = globals || {}; //debugger; globals.show_page_params = globals.show_page_params || {}; globals.alooma = { uid: '' , /* fv : { events: {play_marketing_video_press:1,press_free_trial:1,play_marketing_video_complete:1,hp_business_button_click:1,show_purchase_screen:1, press_purchase: function(d) {return 'press_purchase:'+ ( isBusinessPlan(d.type) ? 'business' : 'other');}, connect_try: function(d) {return 'connect_try:'+ (d.is_business ? 'business:' : '') + d.channel;}}, pages: {'/business-videos':1,'/video-marketing':1,'/marketing-videos':1,'/real-estate-videos':1,'/video/mine':1,'/business/purchase':1,'/account/settings':1,'/album/mine':1,'/account/upgrade':1,'/explore':1}, calc_events: { play_marketing_video_press: true, show_purchase_screen: true, show_landing_page: function(d) { return d.campaign == 'hp_business_button'}}, version: '1.0', working: false, get_event: function(event_name, data) { if (event_name == 'show_page') { var p = document.location.pathname; return this.pages[p] ? ('show_page:'+p) : null; } else { var ret = this.events[event_name] || null; return (typeof(ret) == 'function') ? ret(data) : (ret ? event_name : null); } }, do_calc: function(event_name, event_data) { var ret = this.calc_events[event_name] || false; if (ret) return (typeof(ret) == 'function') ? ret(event_data) : ret; if (event_name == 'show_page') { var dc = localStorage.getItem('do_calc_fv'); if (dc) { localStorage.removeItem('do_calc_fv'); return dc == 'yy' ? 'force' : true; } } return false; }, mark_for_calc: function(force) { try { localStorage.setItem('do_calc_fv', force ? 'yy' : 'y'); } catch(err) {} }, reset: function() { try { localStorage.setItem('fv', null); console.log('FV: reset'); } catch(err) {} }, store: function(event_name, data, d) { try { if (this.working) return; var key = this.get_event(event_name, data); if (key) { var fv; try { fv = JSON.parse(localStorage.getItem('fv')) || {}; } catch(err){ fv = {} } if (!(fv.v && fv.v == this.version)) fv = {} var ts = Math.round(d.getTime() / 1000); fv.vtid = data.device_id; //TODO: if changed ? fv.v = this.version; if (!fv.data) fv.data = {} fv.data[key] = ts; console.log('FV: store ' + key + ' = ' + ts); var sfv = JSON.stringify(fv); localStorage.setItem('fv', sfv); } } catch(err){ console.log('[FV] error storing ' + event_name + 'in tracking fv: ' + err); } try{ var dc = this.do_calc(event_name, data) if (dc) this.calc(event_name, (dc==='force')); } catch(err){ } }, calc: function(label, force) { try{ setTimeout(function(){globals.alooma.fv._calc(label, force)}); } catch(err){} }, _calc: function(label, force) { if (this.working) return; var fv = JSON.parse(localStorage.getItem('fv')) || {}; var d = new Date(); var n = Math.round(d.getTime() / 1000); var CALC_TIME_DIFF = 7; // in minutes var FIRE_TIME_DIFF = 25; // in hours // need at least 1 client side item in FV if (!fv.data || Object.keys(fv.data).length == 0) return; // calced lately already if (!force && fv.calc_ts && fv.calc_ts > (n-60*CALC_TIME_DIFF)) return; // TODO: if all events already fired in the last X hours // if (fired_ts && fv.fired_ts > (n-3600*FIRE_TIME_DIFF)) // return; this.working = true; console.log('FV: calc ' + JSON.stringify(fv)); var me = this; $.post(globals.prot_and_server + '/api/proxy_kpi', {vtid: fv.vtid, version: fv.v, fv: JSON.stringify(fv.data), now:n, label:label||''}, function(data){ try { if (data.status && data.status == 'OK' && data.events) { if (!fv.fired) fv.fired={}; //console.log('FV: resp ' + JSON.stringify(data)); for (var i=0; i<data.events.length; i++) { if (!fv.fired[data.events[i].name] || fv.fired[data.events[i].name] < n-3600*FIRE_TIME_DIFF) { console.log('FV: firing ' + data.events[i].name); globals.fb_pixel.track_custom(data.events[i].name); //globals.alooma.track('send_facebook_pixel', {type:data.events[i].name}); fv.fired[data.events[i].name] = n; } else { console.log('FV: already fired ' + data.events[i].name + ' ' + (n-fv.fired[data.events[i].name]) + ' sec ago'); } } fv.fired_ts = n; } fv.calc_ts = n; localStorage.setItem('fv', JSON.stringify(fv)); } catch(err){} me.working = false; }).fail(function(data) { try { try{ if (data && data.responseText) { var resp = JSON.parse(data.responseText); if (resp && resp.errcode == 2040) fv.data={} } } catch(err){} fv.calc_ts = n; localStorage.setItem('fv', JSON.stringify(fv)); } catch(err){} me.working = false; }); } }, */ _prepare: function(extra_data, d) { var date_str = ( d.getFullYear() + "-" + ("00" + (d.getMonth() + 1)).slice(-2) + "-" + ("00" + d.getDate()).slice(-2) ), ts_str = ( d.getFullYear() + "-" + ("00" + (d.getMonth() + 1)).slice(-2) + "-" + ("00" + d.getDate()).slice(-2) + " " + ("00" + d.getHours()).slice(-2) + ":" + ("00" + d.getMinutes()).slice(-2) + ":" + ("00" + d.getSeconds()).slice(-2) ); var device_id_arr = common.get_device_id_arr(); var web_origin = 'web'; if (globals.app && globals.app == 'chant') { web_origin = 'chant_web'; } if (globals.app && globals.app == 'shopify') { web_origin = 'shopify_web'; } var data = { log_type: 'web', origin: web_origin, client_date: date_str, client_timestamp: ts_str, device_id: device_id_arr[0], debug_mode: false, plan_type: "" || "free", has_opt_out_trial: false, has_opt_in_trial: false, path: document.location.pathname }; if (device_id_arr[1]) data.is_first = true; if (globals.alooma.uid) data.user_id = parseInt(globals.alooma.uid); if (extra_data) Object.assign(data, extra_data); return data; }, _track: function(event_name, data, cb, d) { if (typeof cb != 'function') cb = function(){}; if(event_name == 'press_button' && data.prev_path){ delete data.prev_path; } else if(event_name == 'show_page' && !!data && !!data.prev_path){ data.prev_path = stripVarsFromString(data.prev_path); } else if(event_name == 'show_page' && !data.prev_path){ if(window.location.host.indexOf('magisto.com') !== -1){ var prev_path = document.referrer.replace(/^[^:]+:\/\/[^/]+/, '').replace(/#.*/, '') data.prev_path = stripVarsFromString(prev_path); } } //setTimeout(function(){try {globals.alooma.fv.store(event_name, data, d); } catch (err) {}}); //console.log('IM HERE'); // fb_segment_tracking try { var e_type = null; if (event_name == 'connect_done') { e_type = data.type == 'signup' ? 'signup' : 'login'; } else if (event_name == 'show_page' && data.is_first) { e_type = 'firstPageView'; } else if (event_name == 'show_landing_page' && data.is_first_time_business) { e_type = 'firstBusinessPageView'; } else if (event_name == 'createmovie') { e_type = 'createmovie'; } else if (event_name == 'show_purchase_screen') { e_type = 'pricingpage'; } if (e_type) pixel_tracking(['fb_custom', 'segment', Object.assign({type: e_type}, globals.alooma.get_device_id_user_segments(12))]); } catch(err) {}; }, track: function(event_name, extra_data, cb) { try { if(!!extra_data && !extra_data["prev_path"]){ var origin = (document.location && document.location.origin ? document.location.origin : window.origin); var prev_path = document.referrer.replace(origin,''); if(!!prev_path){ extra_data["prev_path"] = prev_path; } } var d = new Date(), data = globals.alooma._prepare(extra_data, d); globals.alooma._track(event_name, data, cb, d); /*if(!!globals.is_debug) */ console.log('[al] ' + event_name + ': ' + JSON.stringify(data)); if (cb) setTimeout(cb, 400); // silent fallback } catch(err){ console.log('alooma error: ' + err); if (cb) cb(); } }, queue: function(event_name, extra_data) { try { var data = globals.alooma._prepare(extra_data, new Date()), q = []; try { q = JSON.parse(localStorage.getItem('al_queue')) || []; } catch(err){} q.push({event:event_name, data:data}) localStorage.setItem('al_queue' , JSON.stringify(q)); } catch(err){} }, track_queue: function() { try { var q = JSON.parse(localStorage.getItem('al_queue')) || null; if (q) { var d = new Date(); for (var i=0; i< q.length; i++) { try { globals.alooma._track(q[i].event, q[i].data, null, d); console.log('[al] ' + q[i].event + ': ' + JSON.stringify(q[i].data)); } catch(err){} } localStorage.removeItem('al_queue'); } } catch(err){ console.log('Error processing alooma queue: ' + err); } }, store_tracking_data: function(key, data) { try { localStorage.setItem(key, JSON.stringify(data)); } catch(err){} }, pop_tracking_data: function(key) { var data = null; try { var data = JSON.parse(localStorage.getItem(key)) || null; if (data !== null) localStorage.removeItem(key); } catch(err){} return data; }, get_device_id: function() { return common.get_device_id(); }, _tonum: function(str) { var hash = 0, i, chr; str = str + ''; if (str.length === 0) return hash; for (i = 0; i < str.length; i++) { chr = str.charCodeAt(i); hash = ((hash << 5) - hash) + chr; hash |= 0; // Convert to 32bit integer } hash = hash >>> 0; return hash; }, get_device_id_user_segments: function(num_segments) { ret = { device_segment: 1 + globals.alooma._tonum(common.get_device_id()) % num_segments}; if (globals.alooma.uid) ret.user_segment = 1 + globals.alooma._tonum(globals.alooma.uid) % num_segments; return ret }, popups_track: function(event_name, extra_params) { var ev; if (event_name == 'show') ev = 'show_popup'; else if (event_name == 'press') ev = 'press_popup'; else return; globals.alooma.track(ev, extra_params); }, get_internal_linking_params: function(via) { return 'via='+encodeURIComponent(via)+'&prev_path='+window.location.pathname; }, get_utm_data: function(params) { var params = params || {}; if (common.get_url_param('utm_campaign')) params.utm_campaign = common.get_url_param('utm_campaign'); if (common.get_url_param('utm_term')) params.utm_term = common.get_url_param('utm_term'); if (common.get_url_param('utm_content')) params.utm_content = common.get_url_param('utm_content'); if (common.get_url_param('utm_medium')) params.utm_medium = common.get_url_param('utm_medium'); if (common.get_url_param('utm_source')) params.utm_source = common.get_url_param('utm_source'); if (common.get_url_param('adgroup')) params.adgroup = common.get_url_param('adgroup'); if (common.get_url_param('matchtype')) params.matchtype = common.get_url_param('matchtype'); if (common.get_url_param('distribution')) params.distribution = common.get_url_param('distribution'); if (common.get_url_param('placement')) params.placement = common.get_url_param('placement'); if (common.get_url_param('partner')) params.partner = common.get_url_param('partner'); if (common.get_url_param('via')) params.via = common.get_url_param('via'); if (common.get_url_param('prev_path')) params.prev_path = common.get_url_param('prev_path'); if (common.get_url_param('campaign_id')) params.campaign_id = common.get_url_param('campaign_id'); if (common.get_url_param('adgroup_id')) params.adgroup_id = common.get_url_param('adgroup_id'); if (common.get_url_param('keyword_id')) params.keyword_id = common.get_url_param('keyword_id'); if (common.get_url_param('ad_id')) params.ad_id = common.get_url_param('ad_id'); if (common.get_url_param('fb_ad_id')) params.ad_id = common.get_url_param('fb_ad_id'); if (common.get_url_param('page_type')) params.type = common.get_url_param('page_type'); if (common.get_url_param('gclid')) params.gclid = common.get_url_param('gclid'); if (common.is_optin_flow()) params.with_optin = true; return params; } }; (function(){ setTimeout(function(){ globals.alooma.track_queue(); try{ globals.alooma.track('show_page',globals.alooma.get_utm_data(globals.show_page_params)); } catch(err){ console.log('Error auto-tracking pageview with alooma: ' + err); } }); })(); </script> <script> function set_fb_tracking(){ // disable facebook tracker return; } function set_bing_tracking(){ // disable bing tracker return; }; function set_ga_tracking(){ // disable ga tracker return; }; </script> <script type="text/javascript">function init_external_tracking(flush_events){if(typeof set_ga_tracking!=='undefined') set_ga_tracking();if(typeof set_fb_tracking!=='undefined') set_fb_tracking();if(typeof set_bing_tracking!=='undefined') set_bing_tracking();if(flush_events){pixel_tracking([]);}} function flush_page_events(){pixel_tracking([]);} init_external_tracking(false);globals.fb_pixel={_alooma:function(event_name,data){try{var a_data={} if(data) Object.assign(a_data,data);if('type'in a_data) a_data.type2=event_name;else a_data.type=event_name;globals.alooma.track('send_facebook_pixel',a_data);}catch(err){}},set_user_props:function(props,cb){try{FB.getLoginStatus(function(response){if(response&&response.authResponse){FB.AppEvents.setUserID(response.authResponse.userID);FB.AppEvents.updateUserProperties(props) console.log('[fb] [DEBUG] set_user_props: '+JSON.stringify(props));}});}catch(err){console.log('fb tracking error: '+err);}},track:function(event_name,extra_data,cb){if(typeof cb!='function') cb=function(){};try{var data={};if(extra_data) Object.assign(data,extra_data);if(typeof fbq!=='undefined'){fbq('track',event_name,data);console.log('[fb] '+event_name+': '+JSON.stringify(data));}else{console.log('[fb] [DEBUG] '+event_name+': '+JSON.stringify(data));} setTimeout(cb,800);globals.fb_pixel._alooma(event_name,data)}catch(err){console.log('fb tracking error: '+err);cb();}},track_custom:function(event_name,extra_data,cb){if(typeof cb!='function') cb=function(){};try{var data={};if(extra_data) Object.assign(data,extra_data);if(typeof fbq!=='undefined'){fbq('trackCustom',event_name,data);console.log('[fbc] '+event_name+': '+JSON.stringify(data));}else{console.log('[fbc] [DEBUG] '+event_name+': '+JSON.stringify(data));} setTimeout(cb,800);globals.fb_pixel._alooma(event_name,data)}catch(err){console.log('fb custom tracking error: '+err);cb();}},_track_once:function(event_name,extra_data,is_custom,cache_key){try{var c_id='fbpxl_'+(!!cache_key?cache_key:event_name);var last_time=localStorage.getItem(c_id);var d=new Date();var n=Math.round(d.getTime()/1000);var FIRE_TIME_DIFF=3600*24*30;if(last_time){last_time=parseInt(last_time);if(last_time&&last_time>n-FIRE_TIME_DIFF) return;if(last_time==1) return;} localStorage.setItem(c_id,n);if(is_custom) globals.fb_pixel.track_custom(event_name,extra_data);else globals.fb_pixel.track(event_name,extra_data);}catch(err){console.log('fb track_once error: '+err);}},track_once:function(event_name,extra_data,cache_key){globals.fb_pixel._track_once(event_name,extra_data,false,cache_key);},track_custom_once:function(event_name,extra_data,cache_key){globals.fb_pixel._track_once(event_name,extra_data,true,cache_key);}};globals.bing={event:function(label){try{if(window.uetq){window.uetq.push({'ec':'category','ea':'action','el':label});console.log('[bing] '+label);}else{console.log('[bing] [DEBUG] '+label);}}catch(err){console.log('bing error: '+err);}}};globals.ga={event:function(category,action,label,value,cb){try{if(typeof ga!=='undefined'){ga('send','event',category,action,label,(value||0),{'nonInteraction':1});console.log('[GA] E:'+category+' | '+action+' | '+label);}else{console.log('[GA] [DEBUG] E:'+category+' | '+action+' | '+label);}}catch(err){console.log('g.a ev error: '+err);} if(cb&&typeof cb=='function'){setTimeout(cb,800);}},pageview:function(page,cb){try{if(typeof ga!=='undefined'){ga('send','pageview',page);console.log('[GA] P:'+page);}else{console.log('[GA] [DEBUG] P:'+page);}}catch(err){console.log('g.a pv error: '+err)} if(cb&&typeof cb=='function'){setTimeout(cb,800);}},set:function(metric,data,cb){try{if(typeof ga!=='undefined'){ga('set',metric,data);console.log('[GA] S:'+metric,data);}else{console.log('[GA] [DEBUG] P:'+metric,data);}}catch(err){console.log('g.a pv error: '+err)} if(cb&&typeof cb=='function'){setTimeout(cb,800);}}};</script> <!-- Global site tag (gtag.js) - Google Ads: 754306960 --> <!-- /* ----------------- */ /* Google Site Tag */ /* ----------------- */ --> <script async src="https://www.googletagmanager.com/gtag/js?id=AW-754306960"></script> <script> try{ window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', 'AW-754306960'); } catch(err) {} </script> <!-- Google Tag Manager (noscript) --> <noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-T4P8MR3" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript> <!-- End Google Tag Manager (noscript) --> <!-- CrazyEgg code --> <script type="text/javascript" src="//script.crazyegg.com/pages/scripts/0014/1514.js" async="async"></script> <script type="text/javascript" src="//d1ekrxlws13em5.cloudfront.net/media/cached/js/552123290aac.js" ></script> <script type="text/javascript" src="//d1ekrxlws13em5.cloudfront.net/media/cached/js/fef468bd0402.js" ></script> <script type="text/javascript">!function(){var e=function(e){function t(t,i){return!!e.engines.filter(function(e){return e.canPlay(t,i)})[0]} e(function(i){var l=e.support;if(l.inlineVideo){var s,r=e.extend,a=/(-[0-9]+p)?(\.(mp4|webm|m3u8|ogv|flv|f4v)?)$/i,o=/(\.(mp4|webm|m3u8|ogv|flv|f4v))?$/i,u=/\.?{ext}/,n=/^(https?:)?\/\/[^\/]+\//,c="video/flash",p=!1;i.conf.hlsjs!==!1&&e.engines.forEach(function(e){"hlsjs"===e.engineName&&e.canPlay("application/x-mpegurl",i.conf)&&(p=!0)}),i.on("load",function(e,i,p){if(!i.live){var f=i.conf,y=p.vodQualities||f.vodQualities||{},v=!(!p.qualities&&!f.qualities||!p.defaultQuality&&!f.defaultQuality);if(v){var d=p.originalQualities=p.originalQualities||p.qualities||f.qualities,m=p.defaultQuality||f.defaultQuality,g=p.src.replace(a,"-{q}.{ext}");"string"==typeof d&&(d=d.split(","));var q=(("string"==typeof y.qualities?y.qualities.split(","):y.qualities)||d||[]).map(function(e){return e!==m?e:{label:e,src:g.replace(/-{q}/,"")}});y={template:g,qualities:q}} if(y&&y.qualities&&y.qualities.length){p.hlsQualities=!1;var h,Q={},j=p.sources.filter(function(e){return!/mpegurl/i.test(e.type)&&t(e.type,f)})[0],b=j&&o.exec(j.src)[0],x=p.sources.some(function(e){return/mpegurl/i.test(e.type)?(Q[-1]={type:e.type,src:e.src},!0):!1});if(p.sources.forEach(function(e){e.type===c&&(h=e.src)}),(l.video||h)&&(!h||(f.rtmp||p.rtmp)&&!/^(https?:)?\/\//.test(h))){var w,S,P=x?[{value:-1,label:"Auto"}]:[],O=h&&/^(mp4|flv):/.test(h)&&h.slice(0,4)||"";if(P=P.concat(y.qualities.map(function(e,t){return"string"==typeof e?(Q[t]={type:j&&j.type,src:j&&j.type!==c?y.template.replace("{q}",e).replace(u,b):y.template.replace(n,O).replace("{q}",e).replace(u,b)},{value:t,label:e}):(Q[t]={type:e.type||j&&j.type,src:e.type&&e.type!==c||j&&j.type!==c?e.src.replace(u,b):e.src.replace(n,O).replace(u,b)},{value:t,label:e.label})})),p.qualities=P,w=void 0===p.vodQualitySources&&void 0!==s&&Object.keys(P).indexOf(s+"")>-1,p.vodQualitySources=Q,S=/mpegurl/i.test(p.type)?-1:Object.keys(Q).filter(function(e){return p.src.indexOf(Q[e].src)>-1})[0],w&&s!==S){e.preventDefault(),i.loading=!1;var k=p.sources;r(p,{originalSources:k,sources:[{type:Q[s].type,src:Q[s].src}].concat(k),src:null,type:null}),i.load(p)}else p.quality=S}}}}).on("quality",function(e,t,i){var l=t.video.vodQualitySources&&t.video.vodQualitySources[i];if(l){var a=t.video.originalSources||t.video.sources,o=r({},t.video,{originalSources:a,sources:[{type:l.type,src:l.src}].concat(a),src:null,type:null}),u=o.time;p&&o.hlsjs!==!1&&u&&0>i&&(o.hlsjs=r(o.hlsjs||{},{startPosition:u})),t.load(o,function(e,t){t.finished=!1,!u||o.hlsjs&&o.hlsjs.startPosition?o.hlsjs&&(o.hlsjs.startPosition=0):t.seek(u,function(){t.video.type===c&&(t.playing=!1,t.paused=!0),t.resume()}),s=i})}})}})};"object"==typeof module&&module.exports?module.exports=e:"function"==typeof window.flowplayer&&e(window.flowplayer)}();function isiPhone() {return((navigator.platform.indexOf("iPhone")!=-1)||(navigator.platform.indexOf("iPod")!=-1));} function isAndroid() {return/android/i.test(navigator.userAgent);} if(typeof track_pageview==="undefined"){track_pageview=function(page){try{globals.ga.pageview(page);}catch(err){}};} if(!write_cookie){function write_cookie(name,val,hours,path,domain) {date=new Date(new Date().getTime()+(3600000*hours)).toGMTString();document.cookie=name+'='+val+'; expires='+date+'; path='+path+'; domain='+domain;}} if(!read_cookie){function read_cookie(name) {var arr=document.cookie.split(';');for(var i=0;i<arr.length;i++){var item=arr[i];while(item.charAt(0)==' ')item=item.substring(1,item.length);if(item.indexOf(name)==0)return item.substring(name.length+1,item.length);} return null;}} if(!check_cookie){function check_cookie(name) {var arr=document.cookie.split(';');for(var i=0;i<arr.length;i++){var item=arr[i];while(item.charAt(0)==' ')item=item.substring(1,item.length);if(item.indexOf(name)==0)return true;}}} function toRGBA(color){if(color==undefined){return'rgba(155,155,155,0.5)';} color=(color.charAt(0)=="#")?color.substring(1,7):color;r=Math.abs(parseInt(color.substring(0,2),16));g=Math.abs(parseInt(color.substring(2,4),16));b=Math.abs(parseInt(color.substring(4,6),16));return'rgba('+r+','+g+','+b+',0.5)';} function ellipsize(text,num){if(text.length>num){return text.substring(0,num)+'...';} return text;} function getQueryParam(query){query=query.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");var expr="[\\?&]"+query+"=([^&#]*)";var regex=new RegExp(expr);var results=regex.exec(window.location.href);if(results!==null){return decodeURIComponent(results[1].replace(/\+/g," "));}else{return false;}} if(typeof track_event==="undefined"){track_event=function(category,action,label){try{globals.ga.event(category,action,label);}catch(err){}};} var getJSON=function(url,callback,context){var request=new XMLHttpRequest();request.open('GET',url,true);request.onload=function(){if(request.status>=200&&request.status<400){var data=JSON.parse(request.responseText);if(!!data.success&&data.status=="OK"){return callback.call((context||window),data);} var data={success:false,error:"not the right format"};return callback.call((context||window),data);}else{var data={success:false,error:"couldn't get the JSON file"};return callback.call((context||window),data);}};request.onerror=function(){return{success:false,error:"couldn't get the JSON file"}};request.send();};function xwwwfurlenc(srcjson,parent){parent=parent||"";if(typeof srcjson!=="object") if(typeof console!=="undefined"){console.log("\"srcjson\" is not a JSON object");return null;} var u=encodeURIComponent;var urljson="";var keys=Object.keys(srcjson);for(var i=0;i<keys.length;i++){var k=parent?parent+"["+keys[i]+"]":keys[i];if(typeof srcjson[keys[i]]!=="object"){urljson+=u(k)+"="+u(srcjson[keys[i]]);}else{urljson+=keys[i]+"="+encodeURIComponent(JSON.stringify(srcjson[keys[i]]));} if(i<(keys.length-1))urljson+="&";} return urljson;} var sendJSON=function(url,data,callback){var request=new XMLHttpRequest();request.open('POST',url,true);request.setRequestHeader('Content-Type','application/x-www-form-urlencoded');request.onload=function(){if(request.status===200){if(!!callback){callback(request.response);}} else if(request.status!==200){console.log('Request failed. Returned status of '+request.status);}};var string=xwwwfurlenc(data);request.send(string);} function prepend(value,array){var newArray=array.slice();newArray.unshift(value);return newArray;} (function datasetModule(global,definition){var amd='amd',exports='exports';if(typeof define==='function'&&define[amd]){define(function definer(){return definition(global);});}else if(typeof module==='function'&&module[exports]){module[exports]=definition(global);}else{definition(global);}}(this,function datasetPolyfill(global){'use strict';var attribute,attributes,counter,dash,dataRegEx,document=global.document,hasEventListener,length,match,mutationSupport,test=document.createElement('_'),DOMAttrModified='DOMAttrModified';function clearDataset(event){delete event.target._datasetCache;} function toCamelCase(string){return string.replace(dash,function(m,letter){return letter.toUpperCase();});} function getDataset(){var dataset={};attributes=this.attributes;for(counter=0,length=attributes.length;counter<length;counter+=1){attribute=attributes[counter];match=attribute.name.match(dataRegEx);if(match){dataset[toCamelCase(match[1])]=attribute.value;}} return dataset;} function mutation(){if(hasEventListener){test.removeEventListener(DOMAttrModified,mutation,false);}else{test.detachEvent('on'+DOMAttrModified,mutation);} mutationSupport=true;} if(test.dataset!==undefined){return;} dash=/\-([a-z])/ig;dataRegEx=/^data\-(.+)/;hasEventListener=!!document.addEventListener;mutationSupport=false;if(hasEventListener){test.addEventListener(DOMAttrModified,mutation,false);}else{test.attachEvent('on'+DOMAttrModified,mutation);} test.setAttribute('foo','bar');Object.defineProperty(global.Element.prototype,'dataset',{get:mutationSupport?function get(){if(!this._datasetCache){this._datasetCache=getDataset.call(this);} return this._datasetCache;}:getDataset});if(mutationSupport&&hasEventListener){document.addEventListener(DOMAttrModified,clearDataset,false);}}));</script> <script type="text/javascript" src="//d1ekrxlws13em5.cloudfront.net/media/cached/js/187185625099.js" ></script> <script> </script> <script> common.lazy_load_popup('create-split-popup'); </script> </body> </html>

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