janrain.capture.ui.handleCaptureResponse({"stat":"ok","result":{"status":"success","statusMessage":"success","transactionId":"loading","action":"load"}},function () { janrain.capture.ui.render({"computedFields": {"googlePlusURL": {"then": {"compute": "param", "param": "profileURL"}, "schemaId": "googlePlusURL", "when": ["socialRegistration", "thinSocialRegistration", "addSignin", "profileUpdate"], "compute": "conditionalValue", "if": {"to": "Google+", "compare": "providerName", "withOperator": "==", "evaluateAs": {"compare": "param"}}}, "facebookURL": {"then": {"compute": "param", "param": "profileURL"}, "schemaId": "facebookURL", "when": ["socialRegistration", "thinSocialRegistration", "addSignin", "profileUpdate"], "compute": "conditionalValue", "if": {"to": "Facebook", "compare": "providerName", "withOperator": "==", "evaluateAs": {"compare": "param"}}}, "twitterHandle": {"then": {"compute": "param", "param": "profilePreferredUsername"}, "schemaId": "twitterHandle", "when": ["socialRegistration", "thinSocialRegistration", "addSignin", "profileUpdate"], "compute": "conditionalValue", "if": {"to": "Twitter", "compare": "providerName", "withOperator": "==", "evaluateAs": {"compare": "param"}}}, "lastLogin": {"when": ["socialSignIn", "socialRegistration", "thinSocialRegistration", "traditionalRegistration", "traditionalSignin"], "schemaId": "lastLogin", "compute": "dateTime.now"}, "linkedInID": {"then": {"compute": "param", "param": "profileURL"}, "schemaId": "linkedInID", "when": ["socialRegistration", "thinSocialRegistration", "addSignin", "profileUpdate"], "compute": "conditionalValue", "if": {"to": "LinkedIn", "compare": "providerName", "withOperator": "==", "evaluateAs": {"compare": "param"}}}}, "name": "registration flow", "authProfileData": ["name", "verifiedEmail", "identifier"], "userData": ["email", "displayName"], "fields": {"emailAddressData": {"schemaId": "email", "justString": true, "type": "string", "element": "data"}, "socialRegistration_lastName": {"validation": {"required": true, "messages": {"required": "Last name is required."}}, "type": "text", "schemaId": "familyName", "tip": "", "value": "", "label": "Last name", "engageData": "profile.name.familyName", "element": "input", "placeholder": "Last name"}, "profilePreferredUsername": {"shouldUpdate": false, "engageData": "profile.preferredUsername", "type": "hidden", "element": "input"}, "welcomeName": {"type": "engageCookie", "cookieName": "welcome_info_name", "element": "data"}, "userInformationForm": {"action": "widget/traditional_signin.jsonp", "fields": ["traditionalSignIn_emailAddress", "traditionalSignIn_password"], "hideOnSubmit": true, "messages": {"errors": {"invalidPassword": "The username and password entered don't match. Please try again.", "invalidCredentials": "The username and password entered don't match. Please try again."}}, "element": "form"}, "traditionalRegistration_emailAddress": {"validation": {"format": "email", "minLength": 3, "required": true, "messages": {"minLength": "Must be at least 3 characters.", "maxLength": "Email address cannot be more than 128 characters.", "unique": "This email address is already being used.", "required": "Email address is required.", "format": "This email address is not formatted correctly."}, "maxLength": 128, "unique": true}, "type": "email", "schemaId": "email", "tip": "", "element": "input", "engageData": "profile.email", "label": "Email Address", "placeholder": "Email Address"}, "traditionalSignIn_signInButton": {"elementContent": "<span class=\"janrain-icon-16 janrain-icon-key\"></span> Sign In", "elementClasses": ["capture_secondary", "capture_btn_half"], "type": "submit", "value": "Sign In", "element": "button"}, "traditionalRegistration_firstName": {"validation": {"required": true, "messages": {"required": "First name is required."}}, "type": "text", "schemaId": "givenName", "tip": "", "value": "", "element": "input", "label": "First name", "placeholder": "First name"}, "profileIdentifier": {"shouldUpdate": false, "engageData": "profile.identifier", "type": "hidden", "element": "input"}, "resendVerificationForm": {"hideOnSubmit": false, "fields": ["traditionalSignIn_emailAddress"], "messages": {"errors": {"invalidCredentials": "We don't recognize that email address. Try again."}}, "next": {"then": {"error": {"message": "Your email is already verified. You may sign in.", "render": {"screen": "verifyEmail"}}}, "if": {"to": null, "compare": "emailVerified", "withOperator": "!="}, "type": "server", "else": {"render": {"screen": "resendVerificationSuccess"}, "sendMail": {"mail": "resendVerification"}}}, "action": "widget/recover_password.jsonp", "element": "form"}, "resetPasswordForm": {"checkIdentifier": true, "hideOnSubmit": true, "fields": ["traditionalSignIn_emailAddress"], "messages": {"errors": {"invalidIdentifier": "No account with that email address exists. Please try another email address or contact <a href=\"mailto:accounts@oreilly.com\">accounts@oreilly.com</a>."}}, "element": "form", "action": "widget/recover_password.jsonp", "next": {"then": {"error": {"message": "This email is associated with a social account you signed in with before. Try using your social account to sign in, or contact accounts@oreilly.com for help."}}, "if": {"to": null, "compare": "password", "withOperator": "=="}, "type": "server", "else": {"render": {"screen": "resetPasswordRequestCodeSuccess"}, "sendMail": {"mail": "passwordRecover"}}}}, "traditionalSignIn_createButton": {"modify": {"attributes": {"next": "{\"dontSubmit\":true, \"screen\":\"traditionalRegistration\"}"}, "event": "click", "element": "capture_signIn_userInformationForm"}, "value": "Create Account", "element": "button", "elementContent": "<span class=\"janrain-icon-16 janrain-icon-plus\"></span> Create Account", "elementClasses": ["capture_secondary", "capture_btn_half"], "type": "submit"}, "traditionalSignIn_emailAddress": {"placeholder": "email address", "schemaId": "email", "label": "", "element": "input", "validation": {"required": true, "messages": {"required": "Email address is required.", "format": "This email address is not formatted correctly."}, "format": "email"}, "type": "email"}, "traditionalSignIn_password": {"placeholder": "password", "schemaId": "password", "label": "", "element": "input", "validation": {"required": true, "messages": {"required": "Password is required."}}, "type": "password"}, "mergeAccounts": {"schemaId": {"existing_provider_emailAddress": "profiles.profile.emails", "existing_photo": "photos", "existing_provider_displayName": "profiles.profile.displayName", "existing_emailAddress": "email", "existing_provider_photo": "profiles.profile.photos", "existing_provider": "profiles.identifier", "existing_displayName": "displayName", "existing_siteName": "profiles.domain", "existing_createdDate": "created"}, "element": "capture", "engageData": {"current_provider": "profile.providerName", "current_emailAddress": "profile.verifiedEmail", "current_displayName": "profile.displayName", "current_photo": "profile.photo"}, "traditionalMergeScreen": "traditionalAuthenticateMerge", "type": "mergeAccounts", "customText": {"connectRadio": "Merge with your existing account.", "createButton": "Create", "createRadio": "Create a new account using {| current_provider |}.", "connectButton": "Connect", "connectLegacyRadio": "Connect this account with your existing account. <span class=\"capture_smallText\">You will need to sign in to your existing account to claim it.", "moreInfoHover": "You're seeing this screen because on {| existing_createdDate |} you registered at {| existing_siteName |} with your <span class=\"capture_capitalize\">{| existing_provider |}</span> account ({| existing_displayName |})", "moreInfo": "More Info?", "foundExistingAccount": "We found an existing account for <b>{| current_emailAddress |}</b>"}}, "forgotPasswordForm": {"checkIdentifier": true, "hideOnSubmit": true, "fields": ["traditionalSignIn_emailAddress"], "messages": {"errors": {"invalidIdentifier": "No account with that email address exists. Please try another email address or contact <a href=\"mailto:accounts@oreilly.com\">accounts@oreilly.com</a>."}}, "element": "form", "action": "widget/recover_password.jsonp", "next": {"then": {"error": {"message": "This email is associated with a social account you signed in with before. Try using your social account to sign in, or contact accounts@oreilly.com for help."}}, "if": {"to": null, "compare": "password", "withOperator": "=="}, "type": "server", "else": {"render": {"screen": "forgotPasswordSuccess"}, "sendMail": {"mail": "passwordRecover"}}}}, "createAccountButton": {"type": "submit", "value": "Create Account", "element": "input"}, "newpasswordConfirm": {"schemaId": "password", "tip": "Re-type your password", "label": "Password Confirm", "element": "input", "validation": {"messages": {"match": "Passwords do not match."}, "match": "newpassword"}, "type": "password"}, "tradAuthenticateMergeForm": {"action": "widget/traditional_signin.jsonp", "fields": ["traditionalSignIn_emailAddress", "mergePassword"], "hideOnSubmit": true, "messages": {"errors": {"invalidPassword": "That username and password don't match. Try again.", "invalidCredentials": "Username and password don't match. Try again."}}, "element": "form"}, "newpassword": {"schemaId": "password", "tip": "Desired Password", "label": "New Password", "value": "", "element": "input", "validation": {"minLength": 6, "required": true, "messages": {"minLength": "Password must be at least 6 characters", "required": "Password is required."}}, "type": "password"}, "traditionalRegistration_passwordConfirm": {"type": "password", "schemaId": "password", "tip": "Re-type your password", "label": "Password Confirm", "element": "input", "validation": {"messages": {"match": "Passwords do not match."}, "match": "traditionalRegistration_password"}, "placeholder": "Password confirm"}, "mergePassword": {"placeholder": "password", "schemaId": "password", "label": "", "element": "input", "validation": {"required": true, "messages": {"required": "Password is required."}}, "type": "password"}, "registrationForm": {"action": "widget/traditional_register.jsonp", "fields": ["traditionalRegistration_firstName", "traditionalRegistration_lastName", "traditionalRegistration_emailAddress", "traditionalRegistration_password", "traditionalRegistration_passwordConfirm", "traditionalRegistration_displayName"], "next": {"then": {"render": {"screen": "registrationNewVerification"}, "sendMail": {"mail": "newVerification"}}, "type": "server", "if": {"to": null, "compare": "emailVerified", "withOperator": "=="}}, "hideOnSubmit": false, "element": "form"}, "socialRegistrationForm": {"action": "widget/social_register.jsonp", "fields": ["socialRegistration_firstName", "socialRegistration_lastName", "socialRegistration_emailAddress", "socialRegistration_displayName", "providerName", "profileURL", "profilePreferredUsername", "profileIdentifier"], "next": {"then": {"render": {"screen": "registrationNewVerification"}, "sendMail": {"mail": "newVerification"}}, "type": "server", "if": {"to": null, "compare": "emailVerified", "withOperator": "=="}}, "hideOnSubmit": true, "element": "form"}, "socialRegistration_firstName": {"validation": {"required": true, "messages": {"required": "First name is required."}}, "type": "text", "schemaId": "givenName", "tip": "", "value": "", "label": "First name", "engageData": "profile.name.givenName", "element": "input", "placeholder": "First name"}, "traditionalRegistration_lastName": {"validation": {"required": true, "messages": {"required": "Last name is required."}}, "type": "text", "schemaId": "familyName", "tip": "", "value": "", "element": "input", "label": "Last name", "placeholder": "Last name"}, "traditionalRegistration_password": {"type": "password", "schemaId": "password", "tip": "Password must be at least 6 characters", "label": "Password", "element": "input", "validation": {"minLength": 6, "required": true, "messages": {"minLength": "Password must be at least 6 characters", "required": "Password is required."}}, "placeholder": "Password"}, "providerName": {"shouldUpdate": false, "engageData": "profile.providerName", "type": "hidden", "element": "input"}, "socialRegistration_emailAddress": {"validation": {"format": "email", "minLength": 3, "required": true, "messages": {"minLength": "Must be at least 3 characters.", "maxLength": "Email address cannot be more than 128 characters.", "unique": "That email address is already in use.", "required": "Email address is required.", "format": "This email address is not formatted correctly."}, "maxLength": 128, "unique": true}, "type": "email", "schemaId": "email", "tip": "", "value": "", "label": "Email Address", "engageData": "profile.email", "element": "input", "placeholder": "Email Address"}, "forgotPassword_sendButton": {"type": "submit", "name": "capture_reset_password", "value": "Send", "element": "input"}, "profileURL": {"shouldUpdate": false, "engageData": "profile.url", "type": "hidden", "element": "input"}, "newPasswordForm": {"action": "widget/profile.jsonp", "fields": ["newpassword", "newpasswordConfirm"], "next": {"type": "server", "render": {"screen": "resetPasswordSuccess"}}, "element": "form"}, "traditionalRegistration_displayName": {"placeholder": "Display name", "schemaId": "displayName", "label": "Display Name", "element": "input", "engageData": "profile.displayName", "validation": {"unique": true, "messages": {"unique": "This display name is already taken.", "required": "Display name is required."}, "required": true}, "type": "text"}, "socialRegistration_displayName": {"placeholder": "Display name", "schemaId": "displayName", "label": "Display Name", "element": "input", "engageData": "profile.displayName", "validation": {"unique": true, "messages": {"unique": "This display name is already taken.", "required": "Display name is required."}, "required": true}, "type": "text"}, "socialRegistration_signInButton": {"type": "submit", "value": "Sign In", "element": "input"}, "displayNameStorageData": {"type": "localStorage", "data": "displayName", "element": "data"}}, "translations": {"en-US": {}}, "defaultScreen": "signIn", "screens": {"loadTestThinSignIn": {"source": "client", "layout": "signin", "modal": true}, "resetPasswordRequestCodeSuccess": {"source": "client", "modalLoadOnLoad": true, "layout": "resetPasswordRequestCodeSuccess", "modal": true}, "registrationNewVerification": {"displayData": ["email"], "modalLoadOnLoad": true, "layout": "registrationNewVerification", "modal": true, "source": "client"}, "traditionalAuthenticateMerge": {"source": "client", "layout": "traditionalAuthenticateMerge", "modal": true, "type": "traditionalMergeAccounts"}, "traditionalRegistration": {"source": "client", "layout": "traditionalRegistration", "modal": true, "validateOnRender": true}, "resendVerificationSuccess": {"source": "client", "modalLoadOnLoad": true, "layout": "resendVerificationSuccess", "modal": true}, "resetPasswordRequestCode": {"layout": "resetPasswordRequestCode", "dataType": "changePasswordLink", "messages": {"errors": {"invalidForgotPasswordCode": "That code is invalid"}}, "next": {"type": "server", "render": {"screen": "resetPassword"}}, "source": "client", "modal": true, "modalLoadOnLoad": true}, "mergeAccounts": {"source": "client", "modalLoadOnLoad": true, "layout": "mergeAccounts", "modal": true, "type": "mergeAccounts"}, "signIn": {"source": "client", "layout": "signIn", "screenConditionals": {"then": {"render": {"screen": "returnSocial"}}, "if": {"to": "socialSignin", "compare": "cookie:janrainLastAuthMethod", "withOperator": "==="}, "else": {"then": {"render": {"screen": "returnTraditional"}}, "if": {"to": "traditionalSignin", "compare": "cookie:janrainLastAuthMethod", "withOperator": "==="}}}, "modal": true}, "forgotPassword": {"source": "client", "layout": "forgotPassword", "modal": true}, "forgotPasswordSuccess": {"source": "client", "layout": "forgotPasswordSuccess", "modal": true}, "returnSocial": {"source": "client", "layout": "returnSocial", "modal": true}, "verifyEmailSuccess": {"source": "client", "modalLoadOnLoad": true, "layout": "verifyEmailSuccess", "modal": true}, "returnTraditional": {"source": "client", "layout": "returnTraditional", "modal": true}, "resetPasswordSuccess": {"source": "client", "modalLoadOnLoad": true, "layout": "resetPasswordSuccess", "modal": true}, "socialRegistration": {"source": "client", "layout": "socialRegistration", "modal": true, "validateOnRender": true}, "verifyEmail": {"layout": "verifyEmail", "dataType": "verifyEmail", "next": {"type": "server", "render": {"screen": "verifyEmailSuccess"}}, "source": "client", "modal": true, "modalLoadOnLoad": true}, "resetPassword": {"source": "client", "modalLoadOnLoad": true, "layout": "resetPassword", "modal": true}}, "version": "20160307190742394398", "controls": {"resendVerificationEmail": {"then": {"sendMail": {"mail": "resendVerification"}}, "type": "server", "if": {"to": null, "compare": "emailVerified", "withOperator": "=="}}}, "schema_info": {"paths": {"password": "password", "photo_url_sub": "value", "account_emails": "profile.emails", "created": "created", "email_verified": "emailVerified", "photo_plural": "photos", "public_display": "display", "public_profile_key": "displayName", "identifier": "profiles.identifier", "email": "email", "accounts_plural": "profiles", "name": "displayName"}}, "engageMapping": {"profile": {"origin": "merged_poco", "when": ["thinSocialRegistration", "socialRegistration", "addSignin", "engageUpdate"], "plural": "profiles"}, "domain": {"origin": "profile.identifier", "process": "domainFromIdentifier", "when": ["thinSocialRegistration", "socialRegistration", "addSignin"], "plural": "profiles"}, "accessCredentials": {"origin": "accessCredentials", "when": ["thinSocialRegistration", "socialRegistration", "addSignin", "engageUpdate"], "plural": "profiles"}, "photos": {"origin": "merged_poco.photos", "process": "normalizeProfilePhoto", "when": ["thinSocialRegistration", "socialRegistration"]}, "followers": {"origin": "followers", "when": ["thinSocialRegistration", "socialRegistration", "addSignin"], "plural": "profiles"}, "following": {"origin": "following", "when": ["thinSocialRegistration", "socialRegistration", "addSignin"], "plural": "profiles"}, "identifier": {"origin": "profile.identifier", "when": ["thinSocialRegistration", "socialRegistration", "addSignin"], "plural": "profiles"}, "friends": {"origin": "friends", "when": ["thinSocialRegistration", "socialRegistration", "addSignin"], "plural": "profiles"}}}); });