/* ciam_sdk.js Author: StackStudio Website: DISM / SDK Updated: 11/11/2019 Last Update: Andreu Rubio */ /* GLOBAL VARIABLES */ var debug = false; var config = {}; config.brand_slug = "ch"; config.default_language = "EN"; config.subscription_source = "CH_Website"; config.editable_parameters = "null"; config.environment = "production"; config.form_url = "null"; config.has_full_account_url = "https://datalayer.puig.com/ws/has-full-account"; if(("0"==true)||("0"==="true")) { debug = true; } var ciamManager = function() { // ********** Variables ********** var account = {}; var token = null; var anonymousUserInfo = []; var eventMethod = window.addEventListener ? "addEventListener" : "attachEvent"; var eventer = window[eventMethod]; var messageEvent = eventMethod == "attachEvent" ? "onmessage" : "message"; var screensetListener; // ********** Constructor ********** function init() { if(document.head.getAttribute("languageCode")) { config.default_language = document.head.dataset.countrycode.toUpperCase(); } } // ********** Messages ********** var msg = {}; msg.success = "Success"; msg.method_already_used = "Warning: Method can't be called on the same object more than once, no listener was set"; msg.invalid_form = "Invalid form element"; msg.invalid_input = "Invalid input"; msg.no_email = "ciam_email field is required"; msg.no_password = "ciam_password field is required"; msg.wrong_callback = "callback parameter should be a function"; msg.default_error = "Unexpected error."; msg.internal_error = "Internal error."; msg.bad_request = "Bad request."; msg.invalid_data_center = "Invalid data center."; msg.forbidden = "Forbidden."; msg.not_found = "Not found."; msg.timeout = "Timeout."; msg.anonymous_id_already_exists = "Anonymous ID already exists."; msg.inactive_form = "Warning: This site hasn't got a default form implemented. Please contact with the SDK development team."; msg.already_fullaccount = "This email already a Full Account"; // Constructor function call init(); // ********** Private Methods ********** function setupRegistrationToken(form, cb) { var cb_info = function(response){ if(!response.success) { if(token == null) { // Set listener to the button gigya.accounts.initRegistration({ callback: function(response){ if (response.errorCode == 0) { token = response.regToken; cb(form,token); }else{ console.log("Error receiving registrationToken"); } } }); }else{ cb(form,token); } }else{ if(typeof form.id != "undefined") { console.error("Error: the form: "+form.id+" cannot be initialized as a ciam form with the user's session already started"); }else{ console.error("Error: A ciam form was initialized with the user's session already started"); } } }; getAccountInfo(cb_info); } // Public methods function showLoginForm(_params){ if(typeof track != "undefined") track.loginRegistrationModalOpen(); return showForm("login",_params); } function showRegistrationForm(_params){ if(typeof track != "undefined") track.loginRegistrationModalOpen(); return showForm("register",_params); } function showSubscriptionForm(_params){ if(typeof track != "undefined") track.subscriptionModalOpen(); return showForm("subscribe",_params); } function showForgotPasswordForm(_params){ return showForm("forgotpassword",_params); } function showForm(_template,_params) { if((typeof config.form_url == "undefined")||(config.form_url == "")||(config.form_url == "null")||(config.form_url == null)) { showGigyaRegistrationForm(_params); return; } var params = {}; // if(typeof _params.redirectURL != "undefined") params.redirectURL = _params.redirectURL; params.lang = ((typeof _params != "undefined")&&(typeof _params.lang != "undefined")) ? _params.lang : config.default_language; params.lang = params.lang.toLowerCase(); var current_url = location.protocol + '//' + location.host + location.pathname; if(document.getElementById('ciam_sdk_iframe_container')) { document.getElementById('ciam_sdk_iframe_container').remove(); } // html_insert = ""; html_insert = "
"; document.body.insertAdjacentHTML("beforeend", html_insert); // Create IE + others compatible event handler window.removeEventListener(messageEvent, screensetListener, false); screensetListener = function(e) { // Check if origin is proper if( e.origin != config.form_url ){ return } var onAfterSubmitWithAnonymous = function(response){ if((typeof _params != "undefined")&&(typeof _params.onAfterSubmit != "undefined")&&(isFunction(_params.onAfterSubmit))) _params.onAfterSubmit(response); } if(e.data.method == "ciamCloseModal") { if(document.getElementById('ciam_sdk_iframe_container')) { document.getElementById('ciam_sdk_iframe_container').remove(); } } if(e.data.method == "ciamInternalError") { if(document.getElementById('ciam_sdk_iframe_container')) { console.error(e.data.response); } } if(e.data.method == "ciamError") { if((typeof _params != "undefined")&&(typeof _params.onError != "undefined")&&(isFunction(_params.onError))) { _params.onError(e.data.response); } } if(e.data.method == "ciamSuccess") { if((typeof _params != "undefined")&&(typeof _params.onSuccess != "undefined")&&(isFunction(_params.onSuccess))) { _params.onSuccess(e.data.response); } } if(e.data.method == "ciamRegistrationSuccess") { if(typeof track != "undefined") { track.registrationSuccess(); } if((typeof _params != "undefined")&&(typeof _params.onRegistrationSuccess != "undefined")&&(isFunction(_params.onRegistrationSuccess))) { _params.onRegistrationSuccess(e.data.response); } } if(e.data.method == "ciamLoginSuccess") { if(typeof track != "undefined") { track.loginSuccess(); } if((typeof _params != "undefined")&&(typeof _params.onLoginSuccess != "undefined")&&(isFunction(_params.onLoginSuccess))) { _params.onLoginSuccess(e.data.response); } } if(e.data.method == "ciamForgotPaswordSuccess") { if((typeof _params != "undefined")&&(typeof _params.onForgotPasswordSuccess != "undefined")&&(isFunction(_params.onForgotPasswordSuccess))) { _params.onForgotPasswordSuccess(e.data.response); } } if(e.data.method == "ciamRegistrationError") { if((typeof _params != "undefined")&&(typeof _params.onRegistrationError != "undefined")&&(isFunction(_params.onRegistrationError))) { _params.onRegistrationError(e.data.response); } } if(e.data.method == "ciamLoginError") { if((typeof _params != "undefined")&&(typeof _params.onLoginError != "undefined")&&(isFunction(_params.onLoginError))) { _params.onLoginError(e.data.response); } } if(e.data.method == "ciamForgotPaswordError") { if((typeof _params != "undefined")&&(typeof _params.onForgotPasswordError != "undefined")&&(isFunction(_params.onForgotPasswordError))) { _params.onForgotPasswordError(e.data.response); } } if(e.data.method == "ciamAfterSubmit") { onAfterSubmitWithAnonymous(e.data.response); } if(e.data.method == "ciamBeforeSubmit") { if((typeof _params != "undefined")&&(typeof _params.onBeforeSubmit != "undefined")&&(isFunction(_params.onBeforeSubmit))) { _params.onBeforeSubmit(e.data.response); } } if(e.data.method == "ciamBeforeScreenLoad") { document.getElementById('ciam_sdk_iframe').style.visibility = "visible"; if((typeof _params != "undefined")&&(typeof _params.onBeforeScreenLoad != "undefined")&&(isFunction(_params.onBeforeScreenLoad))) { _params.onBeforeScreenLoad(e.data.response); } } if(e.data.method == "ciamAfterScreenLoad") { if((typeof _params != "undefined")&&(typeof _params.onAfterScreenLoad != "undefined")&&(isFunction(_params.onAfterScreenLoad))) { _params.onAfterScreenLoad(e.data.response); } } if(e.data.method == "ciamHide") { if((typeof _params != "undefined")&&(typeof _params.onHide != "undefined")&&(isFunction(_params.onHide))) { _params.onHide(e.data.response); } } }; // Listen to message from child window eventer(messageEvent,screensetListener, false); } function showGigyaRegistrationForm(_params){ var params = {}; params.screenSet = 'Default-RegistrationLogin'; params.startScreen = 'gigya-register-screen'; var callback = function(response){ if(isFunction(_params.onAfterSubmit)) _params.onAfterSubmit(response); } if(typeof _params != "undefined"){ params.onAfterSubmit = callback; if(isFunction(_params.onError)) params.onError = _params.onError; if(isFunction(_params.onBeforeSubmit)) params.onBeforeSubmit = _params.onBeforeSubmit; if(isFunction(_params.onSubmit)) params.onSubmit = _params.onSubmit; if(isFunction(_params.onBeforeValidation)) params.onBeforeValidation = _params.onBeforeValidation; if(isFunction(_params.onBeforeScreenLoad)) params.onBeforeScreenLoad = _params.onBeforeScreenLoad; if(isFunction(_params.onAfterScreenLoad)) params.onAfterScreenLoad = _params.onAfterScreenLoad; if(isFunction(_params.onFieldChanged)) params.onFieldChanged = _params.onFieldChanged; if(isFunction(_params.onHide)) params.onHide = _params.onHide; if(isFunction(_params.onAfterScreenLoad)) params.onAfterScreenLoad = _params.onAfterScreenLoad; if(typeof _params.redirectURL != "undefined") params.redirectURL = _params.redirectURL; if(typeof _params.lang != "undefined") params.lang = _params.lang; } gigya.accounts.showScreenSet(params); } // Register custom method function register(params) { gigya.accounts.register(params); } // Login custom method function login(params) { gigya.accounts.login(params); } // Public Login method function publicLogin(_params) { var cb = _params.callback; var params = _params; var cbLogin = function(response) { var userInfo = null; if (response.errorCode == 0) { if(typeof track != "undefined") { setAnonymousInfo(track.getAnonymousInfo()); track.loginSuccess(); } userInfo = {UID: response.UID, profile: response.profile, data: response.data}; } var message = response.errorDetails; if(typeof response.validationErrors != "undefined") { if(message != "") { message += ". Errors: "; } response.validationErrors.forEach(function(error, index, array) { message += error.message; if(index+1 < array.length){ message += ", "; } }); } cb(httpResponse(response.errorCode, null, message, userInfo)); } params.callback = cbLogin; gigya.accounts.login(params); } // Public Register method function publicRegister(_params) { var cb = _params.callback; var params = _params; if(typeof params.data == "undefined") { params.data = {}; } params.data.subscriptionSource = config.subscription_source; var cbRegister = function(response) { var userInfo = null; if(response.errorCode == 0) { if(typeof track != "undefined") { setAnonymousInfo(track.getAnonymousInfo()); track.registrationSuccess(); if(response.data.subscribe) { track.subscriptionSuccess(); } } userInfo = {UID: response.UID, profile: response.profile, data: response.data}; } var message = response.errorDetails; if(typeof response.validationErrors != "undefined") { if(message != "") { message += ". Errors: "; } response.validationErrors.forEach(function(error, index, array) { message += error.message; if(index+1 < array.length){ message += ", "; } }); } cb(httpResponse(response.errorCode, null, message, userInfo)); } var cbRegToken = function(response) { if (response.errorCode == 0) { token = response.regToken; params.regToken = token; params.finalizeRegistration = true; params.callback = cbRegister; register(params); }else{ console.log("Error receiving registrationToken"); } } gigya.accounts.initRegistration({"callback": cbRegToken}); } function publicUpdate(_params) { var cb = _params.callback; var params = _params; var cbUpdate = function(response){ var message = response.errorMessage; if(typeof response.validationErrors != "undefined") { if(message != "") { message += ". Errors: "; } response.validationErrors.forEach(function(error, index, array) { message += error.message; if(index+1 < array.length){ message += ", "; } }); } cb(httpResponse(response.errorCode, null, message, null)); } var cb_accountInfo = function(response){ if (response.success) { var account = response.account; var stringEmails = account.loginIDs.emails.toString(); params.removeLoginEmails = stringEmails; setAccount(params); }else{ var message = response.errorDetails; if(typeof response.validationErrors != "undefined") { if(message != "") { message += ". Errors: "; } response.validationErrors.forEach(function(error, index, array) { message += error.message; if(index+1 < array.length){ message += ", "; } }); } cb(httpResponse(response.errorCode, null, message, null)); } } params.callback = cbUpdate; if(typeof params.profile.email != "undefined"){ getAccountInfo(cb_accountInfo); }else{ setAccount(params); } } function subscribe(_params) { var cb = _params.callback; var params = _params.data.user; params.data.subscriptionSource = config.subscription_source; if(typeof track != "undefined") { params.data.anonymousUserID = track.getAnonymousInfo(); } // SUBSCRIBE TRUE IF NOT EXIST if(typeof params.data.subscribe == "undefined") { params.data.subscribe = true; params.data.subscriptionStatus = "pending"; } if(typeof params.data.subscriptionStatus == "undefined") { params.data.subscriptionStatus = "pending"; } var cbSubscribe = function(response) { var userInfo = null; if(response.errorCode == 0) { if(typeof track != "undefined") { if(response.requestParams.data.subscribe) { track.subscriptionSuccess(); } } userInfo = getUserInfoFromResponse(response); } var message = getMessageFromResponse(response); cb(httpResponse(response.errorCode, null, message, userInfo)); } var cbRegToken = function(response) { if (response.errorCode == 0) { token = response.regToken; params.regToken = token; params.finalizeRegistration = true; params.callback = cbSubscribe; gigya.accounts.setAccountInfo(params); }else{ console.log("Error receiving registrationToken"); } } gigya.accounts.initRegistration({"isLite": true, "callback": cbRegToken}); } function createLiteAccount(_params) { var paramsAux = _params; var cb = _params.callback; var params = _params.data.user; params.data.subscriptionSource = config.subscription_source; if(typeof track != "undefined") { params.data.anonymousUserID = track.getAnonymousInfo(); } if(typeof params.data.subscribe != "undefined" && params.data.subscribe) { params.data.subscriptionStatus = "pending"; } var cbLiteAccount = function(response) { var userInfo = null; if(response.errorCode == 0) { if(typeof track != "undefined") { if(response.requestParams.data.subscribe) { track.subscriptionSuccess(); } } userInfo = getUserInfoFromResponse(response); } var message = getMessageFromResponse(response); cb(httpResponse(response.errorCode, null, message, userInfo)); } var cbRegToken = function(response) { if (response.errorCode == 0) { token = response.regToken; params.regToken = token; params.finalizeRegistration = true; params.callback = cbLiteAccount; gigya.accounts.setAccountInfo(params); }else{ console.log("Error receiving registrationToken"); } } paramsAux.callback = function(response) { if(response.success) { if(!response.data.hasFullAccount) { gigya.accounts.initRegistration({"isLite": true, "callback": cbRegToken}); }else{ cb(httpResponse(400, null, response.message, null)); } } } hasFullAccount(paramsAux); } function hasFullAccount(params) { params.data.brand = config.brand_slug; var data = JSON.stringify(params.data); var xhr = new XMLHttpRequest(); xhr.withCredentials = false; xhr.onreadystatechange = function() { var response = {}; if (xhr.readyState == XMLHttpRequest.DONE) { if(xhr.status == 200){ if(typeof xhr.response != "undefined") { response = JSON.parse(xhr.response); } response.success = true; }else{ response.success = false; response.message = msg.internal_error; } if(isFunction(params.callback))params.callback(response); } } xhr.open("POST", config.has_full_account_url); xhr.setRequestHeader("Content-Type", "application/json"); xhr.send(data); } // Reset password custom method function resetPassword(params) { gigya.accounts.resetPassword(params); } //Ciam exclusive use function setAccount(params) { params.muteWebhooks = true; gigya.accounts.setAccountInfo(params); } //Set Account Info custom method to developer function setAccountInfo(params) { var push_allowed = true; //Check if param is set properly if(!config.editable_parameters.includes('@@') && config.editable_parameters != "") { var allowed_parameters = config.editable_parameters.split(","); if(typeof params.data != "undefined") { var dev_parameters = Object.keys(params.data); for(var i=0;i 0){ var cb_anonymousId = function(response){ var anonymousUserID = []; if((typeof response.data != "undefined")&&(typeof response.data.anonymousUserID != "undefined")) { var anonymousUserID = response.data.anonymousUserID; } var anonymousUser_to_push = []; var error = false; if(response.errorCode == 0){ var pushable = true; if(anonymousUserID.length > 0){ _arrayAnonymous.forEach(function(array_element){ var found = false; anonymousUserID.forEach(function(gigya_element){ if((typeof array_element.id != "undefined") && (typeof array_element.source != "undefined")){ if(gigya_element.id == array_element.id){ found = true; } }else{ error = true; } }); if(!found){ anonymousUser_to_push.push({"id": array_element.id,"source": array_element.source }); } }); }else{ anonymousUser_to_push = _arrayAnonymous; } if(!error){ if(anonymousUser_to_push.length > 0){ anonymousUser_to_push.forEach(function(element){ anonymousUserID.push(element); }); var data = {}; data.anonymousUserID = anonymousUserID; var params = { data: data, muteWebhooks: true, } gigya.ids.setAccountInfo(params); }else{ var result = {"success": false, "message":msg.anonymous_id_already_exists}; } }else{ console.log(msg.internal_error); } }else{ if((typeof response.errorCode != "undefined")&&(response.errorCode != 403005)&&(typeof response.errorMessage != "undefined")) { debug(response.errorMessage,"staging"); } } } gigya.accounts.getAccountInfo({ callback: cb_anonymousId }); }else{ debug("anonymousUserInfo empty","staging"); } } function syncAnonymousUserInfo(_arrayAnonymous){ if(typeof _arrayAnonymous != 'undefined' && _arrayAnonymous != null) { anonymousUserInfo = _arrayAnonymous; }else{ console.log('Empty array'); } // if((typeof _id != "undefined" && _id != null) && (typeof _source != "undefined" && _source != null)){ // var anonymousUser = {id: _id, source: _source}; // anonymousUserInfo.push(anonymousUser); // console.log(anonymousUserInfo); // }else{ // console.log("At least 1 value is undefined"); // } } // Social login custom method function setSocialListener(params){ gigya.accounts.socialLogin(params); } function getAccountInfo(account_info_callback) { var cb = function(result) { var response = {"success":true,"message":msg.success,"account":{}}; if ( result.errorCode == 0 ) { // Identifier response.account.UID = result["UID"]; response.account.UIDSignature = result["UIDSignature"]; response.account.signatureTimestamp = result["signatureTimestamp"]; // Utils response.account.isVerified = result["isVerified"]; response.account.isRegistered = result["isRegistered"]; response.account.isActive = result["isActive"]; response.account.lastLogin = result["lastLoginTimestamp"]; response.account.lastUpdated = result["lastUpdatedTimestamp"]; response.account.registered = result["registeredTimestamp"]; response.account.socialProviders = result["socialProviders"]; response.account.loginIDs = result["loginIDs"]; // User data response.account.data = new Object(); response.account.profile = new Object(); response.account.subscriptions = new Object(); response.account.data = result["data"]; response.account.profile = result['profile']; response.account.subscriptions = result['subscriptions']; } else { response.success = false; if(typeof result.errorMessage != "undefined") { response.message = result.errorMessage; }else{ response.message = msg.default_error; } } if(!isFunction(account_info_callback)) { response.success = false; response.message = msg.invalid_input; }else{ account_info_callback(response); } } gigya.accounts.getAccountInfo({include:"loginIDs, emails, profile, data, subscriptions, preferences", extraProfileFields:"address,phones, languages", callback: cb }); } function loginForm(form, callback) { var response = {"success":true,"message":msg.success}; // Variable declaration var email = null; var password = null; try { if((typeof form != "object")||(form == null)) { response.success = false; response.message = " "+msg.invalid_form; }else{ if(typeof form.elements == "undefined") { response.success = false; response.message = " "+msg.invalid_form; }else{ // Check form format if((typeof form.elements["ciam_email"] == "undefined")||(form.elements["ciam_email"] == null)) { response.success = false; response.message += " "+msg.no_email; }else{ email = form.elements["ciam_email"]; } if((typeof form.elements["ciam_password"] == "undefined")||(form.elements["ciam_password"] == null)) { response.success = false; response.message += " "+msg.no_password; }else{ password = form.elements["ciam_password"]; } } // Check callback parameter if(!isFunction(callback)) { response.success = false; response.message += " "+msg.wrong_callback; } // Proceed if parameters are correct. if(response.success) { // Check if method has already been used. if(form.used == true) { response.message = " "+msg.method_already_used; }else { // Set listener to the button form.addEventListener("submit", function(event){ event.preventDefault(); var recaptcha_token = null; if( (typeof(form.elements["ciam_captcha_token"]) != "undefined") && (typeof (form.elements["ciam_captcha_token"].value) != "undefined") && (form.elements["ciam_captcha_token"].value != null) ) { recaptcha_token = form.elements["ciam_captcha_token"].value; } // Get parameter values from form var email = form.elements["ciam_email"].value; var password = form.elements["ciam_password"].value; var cb_login = function(result){ if (result.errorCode == 0) { if(typeof track != "undefined") { setAnonymousInfo(track.getAnonymousInfo()); track.loginSuccess(); } var responseResult = {UID: result.UID, profile: result.profile, data: result.data}; var response = {"success":true,"message":msg.success, "result": responseResult}; callback(response); }else{ // Throw error var message = result.errorDetails; var response = {"success":false,"message":message,"errorCode":result.errorCode}; if(typeof result.validationErrors != "undefined") { var errors = ""; result.validationErrors.forEach(function(error, index, array) { errors += error.message; if(index+1 < array.length){ errors += ", "; } }); response.errors = errors; } // Throw error callback(response); } } var params = { loginID: email, password: password, callback: cb_login } if(typeof recaptcha_token != "undefined" && recaptcha_token != null) { params.captchaToken = recaptcha_token; } login(params); }); form.used = true; } } } } catch(err) { response.success = false; response.message += " "+en.default_error; } return response; } function resetPasswordForm(form, callback) { var response = {"success":true,"message":msg.success}; // Variable declaration var email = null; var password = null; try { if((typeof form != "object")||(form == null)) { response.success = false; response.message += " "+msg.invalid_form; }else{ if(typeof form.elements == "undefined") { response.success = false; response.message += " "+msg.invalid_form; }else{ // Check form format if((typeof form.elements["ciam_email"] == "undefined")||(form.elements["ciam_email"] == null)) { response.success = false; response.message += " "+msg.no_email; }else{ email = form.elements["ciam_email"]; } } // Check callback parameter if(!isFunction(callback)) { response.success = false; response.message += " "+msg.wrong_callback; } // Proceed if parameters are correct. if(response.success) { // Check if method has already been used. if(form.used == true) { response.message = " "+msg.method_already_used; }else { // Set listener to the button form.addEventListener("submit", function(event){ event.preventDefault(); // Get parameter values from form var email = form.elements["ciam_email"].value; var cb_reset_password = function(result){ if (result.errorCode== 0) { var response = {"success":true,"message":msg.success}; callback(response); }else{ var message = result.errorDetails; var response = {"success":false,"message":message,"errorCode":result.errorCode}; if(typeof result.validationErrors != "undefined") { var errors = ""; result.validationErrors.forEach(function(error, index, array) { errors += error.message; if(index+1 < array.length){ errors += ", "; } }); response.errors = errors; } // Throw error callback(response); } } var params = { loginID: email, callback: cb_reset_password, lang: config.default_language } resetPassword(params); }); form.used = true; } } } } catch(err) { response.success = false; response.message += " "+en.default_error; } return response; } function registrationForm(form,callback) { var response = {"success":true,"message":msg.success}; // Variable declaration var email = null; var password = null; try{ if((typeof form != "object")||(form == null)) { response.success = false; response.message += " "+msg.invalid_form; }else{ if(typeof form.elements == "undefined") { response.success = false; response.message += " "+msg.invalid_form; }else{ // Check form format if((typeof form.elements["ciam_email"] == "undefined")||(form.elements["ciam_email"] == null)) { response.success = false; response.message += " "+msg.no_email; }else{ email = form.elements["ciam_email"]; } if((typeof form.elements["ciam_password"] == "undefined")||(form.elements["ciam_password"] == null)) { response.success = false; response.message += " "+msg.no_password; }else{ password = form.elements["ciam_password"]; } } // Check callback parameter if(!isFunction(callback)) { response.success = false; response.message += " "+msg.wrong_callback; } // Proceed if parameters are correct. if(response.success) { // Check if method has already been used. if(form.used == true) { response.message = " "+msg.method_already_used; }else { var regTokenCb = function(form,token){ form.addEventListener("submit", function(event){ event.preventDefault(); var data = {}; var profile = objectProfile(form); var subscriptions = {}; data.subscriptionSource = config.subscription_source; var recaptcha_token = null; if(form.querySelector('[name="ciam_captcha_token"]')) var recaptcha_token = form.querySelector('[name="ciam_captcha_token"]').value; if(form.querySelector('[name="ciam_password"]')) var password = form.querySelector('[name="ciam_password"]').value; if(form.querySelector('[name="ciam_terms"]')) data.terms = form.querySelector('[name="ciam_terms"]').checked; if(form.querySelector('[name="ciam_subscribe"]')) data.subscribe = form.querySelector('[name="ciam_subscribe"]').checked; if(form.querySelector('[name="ciam_ecommerce_titleCode"]')){ data.ecommerce = {}; data.ecommerce.profile = {}; data.ecommerce.profile.titleCode = form.querySelector('[name="ciam_ecommerce_titleCode"]').value; } if(typeof data.subscribe != "undefined" && data.subscribe) { data.subscriptionStatus = "pending"; } if(form.querySelector('[name="ciam_email"]')) { var email = form.querySelector('[name="ciam_email"]').value } if((form.querySelector('[name="ciam_subscribe"]') )&&(form.querySelector('[name="ciam_subscribe"]').checked)) { var preferences_flag = true; var c = 0; while(preferences_flag && c < 10) { if(form.querySelector('[name="ciam_preferences['+c+']"]')) { subscriptions[form.querySelector('[name="ciam_preferences['+c+']"]').value] = {}; subscriptions[form.querySelector('[name="ciam_preferences['+c+']"]').value].email = {}; subscriptions[form.querySelector('[name="ciam_preferences['+c+']"]').value].email.isSubscribed = form.querySelector('[name="ciam_preferences['+c+']"]').checked; }else{ preferences_flag = false; } c++; } } var cb_register = function(result){ if (result.errorCode== 0) { if(typeof track != "undefined") { setAnonymousInfo(track.getAnonymousInfo()); track.registrationSuccess(); if(result.data.subscribe) { track.subscriptionSuccess(); } } var responseResult = {UID: result.UID, profile: result.profile, data: result.data}; var response = {"success":true,"message":msg.success, "result": responseResult}; callback(response); }else{ var message = result.errorDetails; var response = {"success":false,"message":message,"errorCode":result.errorCode}; if(typeof result.validationErrors != "undefined") { var errors = ""; result.validationErrors.forEach(function(error, index, array) { errors += error.message; if(index+1 < array.length){ errors += ", "; } }); response.errors = errors; } // Throw error callback(response); } }; var params = { email: email, password: password, profile: profile, data:data, subscriptions: subscriptions, regToken: token, finalizeRegistration: true, lang: config.default_language, callback: cb_register } if(typeof recaptcha_token != "undefined" && recaptcha_token != null) { params.captchaToken = recaptcha_token; } register(params); }); form.used = true; } setupRegistrationToken(form,regTokenCb); } } } } catch(err) { response.success = false; response.message += " "+msg.default_error; } return response; } function profileForm(form,callback,_autofill,_no_session_started_callback) { var response = {"success":true,"message":msg.success}; // Variable declaration var email = null; var password = null; try{ if((typeof form != "object")||(form == null)) { response.success = false; response.message += " "+msg.invalid_form; }else{ if(typeof form.elements == "undefined") { response.success = false; response.message += " "+msg.invalid_form; } // Check callback parameter if(!isFunction(callback)) { response.success = false; response.message += " "+msg.wrong_callback; } // Proceed if parameters are correct. if(response.success) { // Check if method has already been used. if(form.used == true) { response.message = " "+msg.method_already_used; }else { form.addEventListener("submit", function(event){ event.preventDefault(); var data = {}; var profile = objectProfile(form); var subscriptions = {}; if((form.querySelector('[name="ciam_email"]'))&&(notEmptyValue(form.querySelector('[name="ciam_email"]').value))) profile.email = form.querySelector('[name="ciam_email"]').value; if((form.querySelector('[name="ciam_password"]'))&&(notEmptyValue(form.querySelector('[name="ciam_password"]').value))) var password = form.querySelector('[name="ciam_password"]').value; if((form.querySelector('[name="ciam_newPassword"]'))&&(notEmptyValue(form.querySelector('[name="ciam_newPassword"]').value))) var newPassword = form.querySelector('[name="ciam_newPassword"]').value; if(form.querySelector('[name="ciam_subscribe"]')) data.subscribe = form.querySelector('[name="ciam_subscribe"]').checked; if(form.querySelector('[name="ciam_ecommerce_titleCode"]')){ data.ecommerce = {}; data.ecommerce.profile = {}; data.ecommerce.profile.titleCode = form.querySelector('[name="ciam_ecommerce_titleCode"]').value; } if(typeof data.subscribe != "undefined" && data.subscribe) { data.subscriptionStatus = "pending"; } if((form.querySelector('[name="ciam_subscribe"]'))&&(form.querySelector('[name="ciam_subscribe"]').checked)) { var preferences_flag = true; var c = 0; while(preferences_flag && c < 10) { if(form.querySelector('[name="ciam_preferences['+c+']"]')) { subscriptions[form.querySelector('[name="ciam_preferences['+c+']"]').value] = {}; subscriptions[form.querySelector('[name="ciam_preferences['+c+']"]').value].email = {}; subscriptions[form.querySelector('[name="ciam_preferences['+c+']"]').value].email.isSubscribed = form.querySelector('[name="ciam_preferences['+c+']"]').checked; }else{ preferences_flag = false; } c++; } } var params = {}; if(typeof password != "undefined") params.password = password; if(typeof newPassword != "undefined") params.newPassword = newPassword; params.profile = profile; params.data = data; params.subscriptions = subscriptions; var cb_accountInfo = function(result_1){ if (result_1.success) { var account = result_1.account; //WE WILL REMOVE OLD EMAIL FROM EMAIL ARRAY if(typeof profile.email != "undefined") { var stringEmails = account.loginIDs.emails.toString(); params.removeLoginEmails = stringEmails; } var cb_setAccountInfo = function(result_2){ if (result_2.errorCode == 0) { var cb_accountInfo_last = function(result_3){ if (result_3.success) { var responseResult = {UID: result_3.account.UID, profile: result_3.account.profile, data: result_3.account.data}; var response = {"success":true,"message":msg.success, "result": responseResult}; callback(response); }else{ var response = {"success":false,"message":result_3.errorDetails,"errorCode":result_3.errorCode}; callback(response); } } getAccountInfo(cb_accountInfo_last); }else{ // Throw error var response = {"success":false,"message":result_2.errorDetails,"errorCode":result_2.errorCode}; callback(response); } } params.callback = cb_setAccountInfo; setAccount(params); }else{ var response = {"success":false,"message":result_1.errorDetails,"errorCode":result_1.errorCode}; callback(response); } } getAccountInfo(cb_accountInfo); }); form.used = true; } } } if(typeof _autofill != "undefined") { if(_autofill) { var get_user_info_cb = function(result_autofill) { if(result_autofill.success) { var form_elements = form.elements; // SET EMAIL if(typeof result_autofill.account.profile.email != "undefined") { form_elements["ciam_email"].value = result_autofill.account.profile.email; } // SET FIRST NAME if(typeof result_autofill.account.profile.firstName != "undefined") { form_elements["ciam_firstname"].value = result_autofill.account.profile.firstName; } // SET LAST NAME if(typeof result_autofill.account.profile.lastName != "undefined") { form_elements["ciam_lastname"].value = result_autofill.account.profile.lastName; } // SET GENDER if(typeof result_autofill.account.profile.gender != "undefined") { form_elements["ciam_gender"].value = result_autofill.account.profile.gender; } // SET COUNTRY if(typeof result_autofill.account.profile.country != "undefined") { form_elements["ciam_country"].value = result_autofill.account.profile.country; } // SET STATE if(typeof result_autofill.account.profile.state != "undefined") { form_elements["ciam_state"].value = result_autofill.account.profile.state; } // SET BIRTHDATE if(typeof result_autofill.account.profile.birthDay != "undefined" && typeof result_autofill.account.profile.birthMonth != "undefined" && typeof result_autofill.account.profile.birthYear != "undefined") { form_elements["ciam_birthdate"].value = ('0' + result_autofill.account.profile.birthDay).slice(-2) + "/"+('0' + result_autofill.account.profile.birthMonth).slice(-2)+"/"+('0' + result_autofill.account.profile.birthYear).slice(-2); } // SET SUBSCRIBE if(result_autofill.account.data.subscribe == true) { form_elements["ciam_subscribe"].checked = true; } // SET PHONES if((typeof result_autofill.account.profile.phones != "undefined")&&(!Array.isArray(result_autofill.account.profile.phones))&&(typeof result_autofill.account.profile.phones.number != "undefined")) { form_elements["ciam_phone"].value = result_autofill.account.profile.phones.number; }else if((typeof result_autofill.account.profile.phones != "undefined")&&(Array.isArray(result_autofill.account.profile.phones))&&(typeof result_autofill.account.profile.phones[0].number != "undefined")) { form_elements["ciam_phone"].value = result_autofill.account.profile.phones[0].number; } // SET SUBSCRIPTIONS if(typeof result_autofill.account.profile.languages != "undefined") { languages_aux = result_autofill.account.profile.languages.split(","); form_elements["ciam_language"].value = languages_aux[0]; } if(typeof result_autofill.account.subscriptions != "undefined") { var subscription_keys = Object.keys(result_autofill.account.subscriptions); for(var h = 0; h < subscription_keys.length ; h++) { var autofill_preferences_flag = true; var autofill_u = 0; //El bucle és amb un tope de 4 per evitar loop infinit si no en troba. while(autofill_preferences_flag && autofill_u < 10) { if(typeof form_elements["ciam_preferences["+autofill_u+"]"] != "undefined") { if(form_elements["ciam_preferences["+autofill_u+"]"].value == subscription_keys[h]) { form_elements["ciam_preferences["+autofill_u+"]"].checked = result_autofill.account.subscriptions[subscription_keys[h]].email.isSubscribed; } } autofill_u++; } } } }else{ console.log("Can't autofill fields: User is not logged in"); _no_session_started_callback(); } }; getAccountInfo(get_user_info_cb); } } } catch(err) { response.success = false; response.message += " "+msg.default_error; } return response; } function changePasswordForm(form, callback) { var response = {"success":true,"message":msg.success}; // Variable declaration var newPassword = null; var password = null; try{ if((typeof form != "object")||(form == null)) { response.success = false; response.message += " "+msg.invalid_form; }else{ if(typeof form.elements == "undefined") { response.success = false; response.message += " "+msg.invalid_form; }else{ // Check form format if((typeof form.elements["ciam_password"] == "undefined")||(form.elements["ciam_password"] == null)) { response.success = false; response.message += " "+msg.no_password; } if((typeof form.elements["ciam_newPassword"] == "undefined")||(form.elements["ciam_newPassword"] == null)) { response.success = false; response.message += " "+msg.no_password; } } // Check callback parameter if(!isFunction(callback)) { response.success = false; response.message += " "+msg.wrong_callback; } // Proceed if parameters are correct. if(response.success) { // Check if method has already been used. if(form.used == true) { response.message = " "+msg.method_already_used; }else { form.addEventListener("submit", function(event){ event.preventDefault(); if((form.querySelector('[name="ciam_newPassword"]'))&&(notEmptyValue(form.querySelector('[name="ciam_newPassword"]').value))) var ciam_newPassword = form.querySelector('[name="ciam_newPassword"]').value; if((form.querySelector('[name="ciam_password"]'))&&(notEmptyValue(form.querySelector('[name="ciam_password"]').value))) var ciam_password = form.querySelector('[name="ciam_password"]').value; var cb_changePassword = function(result){ if (result.errorCode == 0) { var response = {"success":true,"message":msg.success}; callback(response); }else{ // Throw error var response = {"success":false,"message":result.errorDetails,"errorCode":result.errorCode}; callback(response); } } var params = { password:ciam_password, newPassword:ciam_newPassword, callback: cb_changePassword } setAccount(params); }); form.used = true; } } } } catch(err) { response.success = false; response.message += " "+msg.default_error; } return response; } function changePasswordFromEmailForm(form, callback) { var response = {"success":true,"message":msg.success}; // Variable declaration var newPassword = null; try{ if((typeof form != "object")||(form == null)) { response.success = false; response.message += " "+msg.invalid_form; }else{ if(typeof form.elements == "undefined") { response.success = false; response.message += " "+msg.invalid_form; }else{ // Check form format if((typeof form.elements["ciam_newPassword"] == "undefined")||(form.elements["ciam_newPassword"] == null)) { response.success = false; response.message += " "+msg.no_password; } } var url_string = window.location.href var url = new URL(url_string); var passwordResetToken = url.searchParams.get("pwrt"); if(passwordResetToken == "") { response.success = false; response.message += " "+msg.invalid_form; } // Check callback parameter if(!isFunction(callback)) { response.success = false; response.message += " "+msg.wrong_callback; } // Proceed if parameters are correct. if(response.success) { // Check if method has already been used. if(form.used == true) { response.message = " "+msg.method_already_used; }else { form.addEventListener("submit", function(event){ event.preventDefault(); if((form.querySelector('[name="ciam_newPassword"]'))&&(notEmptyValue(form.querySelector('[name="ciam_newPassword"]').value))){ var ciam_newPassword = form.querySelector('[name="ciam_newPassword"]').value; } var cb_changePassword = function(result){ if (result.errorCode == 0) { var response = {"success":true,"message":msg.success}; callback(response); }else{ // Throw error var response = {"success":false,"message":result.errorDetails,"errorCode":result.errorCode}; callback(response); } } var params = { newPassword: ciam_newPassword, passwordResetToken: passwordResetToken, callback: cb_changePassword } gigya.accounts.resetPassword(params); }); form.used = true; } } } } catch(err) { response.success = false; response.message += " "+msg.default_error; } return response; } function subscriptionForm(form,callback) { var response = {"success":true,"message":msg.success}; // Variable declaration var email = null; try{ if((typeof form != "object")||(form == null)) { response.success = false; response.message += " "+msg.invalid_form; }else{ if(typeof form.elements == "undefined") { response.success = false; response.message += " "+msg.invalid_form; }else{ // Check form format if((typeof form.elements["ciam_email"] == "undefined")||(form.elements["ciam_email"] == null)) { response.success = false; response.message += " "+msg.no_email; }else{ email = form.elements["ciam_email"]; } } // Check callback parameter if(!isFunction(callback)) { response.success = false; response.message += " "+msg.wrong_callback; } // Proceed if parameters are correct. if(response.success) { // Check if method has already been used. if(form.used == true) { response.message = " "+msg.method_already_used; }else { form.addEventListener("submit", function(event){ event.preventDefault(); var data = {}; var profile = {}; var subscriptions = {}; data.subscriptionSource = config.subscription_source; profile = objectProfile(form); if(form.querySelector('[name="ciam_email"]')) profile.email = form.querySelector('[name="ciam_email"]').value; // Validació camps opcionals here! if(form.querySelector('[name="ciam_terms"]')) { data.terms = form.querySelector('[name="ciam_terms"]').checked; }else{ data.terms = true; } if(form.querySelector('[name="ciam_subscribe"]')) { data.subscribe = form.querySelector('[name="ciam_subscribe"]').checked; }else{ data.subscribe = true; } if(data.subscribe) { data.subscriptionStatus = "pending"; } var preferences_flag = true; var c = 0; while(preferences_flag && c < 10) { if(form.querySelector('[name="ciam_preferences['+c+']"]')) { subscriptions[form.querySelector('[name="ciam_preferences['+c+']"]').value] = {}; subscriptions[form.querySelector('[name="ciam_preferences['+c+']"]').value].email = {}; subscriptions[form.querySelector('[name="ciam_preferences['+c+']"]').value].email.isSubscribed = form.querySelector('[name="ciam_preferences['+c+']"]').checked; }else{ preferences_flag = false; } c++; } var user = { profile: profile, data: data, } if(Object.keys(subscriptions).length > 0) { user.subscriptions = subscriptions; } var params_data = { user: user, brand: config.brand_slug } var params = {}; params.data = params_data; params.callback = callback; subscribe(params); }); form.used = true; } } } } catch(err) { response.success = false; response.message += " "+msg.default_error; } return response; } function liteAccountForm(form,callback) { var response = {"success":true,"message":msg.success}; // Variable declaration var email = null; try{ if((typeof form != "object")||(form == null)) { response.success = false; response.message += " "+msg.invalid_form; }else{ if(typeof form.elements == "undefined") { response.success = false; response.message += " "+msg.invalid_form; }else{ // Check form format if((typeof form.elements["ciam_email"] == "undefined")||(form.elements["ciam_email"] == null)) { response.success = false; response.message += " "+msg.no_email; }else{ email = form.elements["ciam_email"]; } } // Check callback parameter if(!isFunction(callback)) { response.success = false; response.message += " "+msg.wrong_callback; } // Proceed if parameters are correct. if(response.success) { // Check if method has already been used. if(form.used == true) { response.message = " "+msg.method_already_used; }else { form.addEventListener("submit", function(event){ event.preventDefault(); var data = {}; var profile = {}; var subscriptions = {}; data.subscriptionSource = config.subscription_source; profile = objectProfile(form); if(form.querySelector('[name="ciam_email"]')) profile.email = form.querySelector('[name="ciam_email"]').value; // Validació camps opcionals here! if(form.querySelector('[name="ciam_terms"]')) { data.terms = form.querySelector('[name="ciam_terms"]').checked; }else{ data.terms = true; } if(form.querySelector('[name="ciam_subscribe"]')) { data.subscribe = form.querySelector('[name="ciam_subscribe"]').checked; } if(data.subscribe) { data.subscriptionStatus = "pending"; } var preferences_flag = true; var c = 0; while(preferences_flag && c < 10) { if(form.querySelector('[name="ciam_preferences['+c+']"]')) { subscriptions[form.querySelector('[name="ciam_preferences['+c+']"]').value] = {}; subscriptions[form.querySelector('[name="ciam_preferences['+c+']"]').value].email = {}; subscriptions[form.querySelector('[name="ciam_preferences['+c+']"]').value].email.isSubscribed = form.querySelector('[name="ciam_preferences['+c+']"]').checked; }else{ preferences_flag = false; } c++; } var user = { profile: profile, data: data } if(Object.keys(subscriptions).length > 0) { user.subscriptions = subscriptions; } var params_data = { user: user } var params = {}; params.data = params_data; params.callback = callback; createLiteAccount(params); }); form.used = true; } } } } catch(err) { response.success = false; response.message += " "+msg.default_error; } return response; } function socialForm(form, callback){ var response = {"success":true,"message":msg.success}; try { if((typeof form != "object")||(form == null)) { response.success = false; response.message += " "+msg.invalid_form; }else{ var elementFacebook = form.querySelector('.ciam_facebook'); var elementInstagram = form.querySelector('.ciam_instagram'); var elementGoogle = form.querySelector('.ciam_google'); if( (typeof elementFacebook == "undefined" || elementFacebook == null) && (typeof elementInstagram == "undefined" || elementInstagram == null) && (typeof elementGoogle == "undefined" || elementGoogle == null)) { response.success = false; response.message += " "+msg.invalid_form; }else{ if(elementFacebook){ elementFacebook.addEventListener("click", function(event){ event.preventDefault(); if(typeof track != "undefined")track.loginRegistrationModalOpen(); var cb_facebook = function(cb_facebook_result){ if (cb_facebook_result.errorCode == 0) { if(typeof track != "undefined")track.registrationSuccess(); var cb_getAccount = function(response) { var responseResult = {UID: response.account.UID, profile: response.account.profile, data: response.account.data}; if(typeof response.account.data == "undefined") { response.account.data = {}; } if(typeof response.account.data.subscriptionSource == "undefined") { var data = {}; data.subscriptionSource = config.subscription_source; data.terms = true; var cb_social = function(cb_social_result){ responseResult.data.subscriptionSource = config.subscription_source; responseResult.data.terms = true; if (cb_social_result.errorCode == 0) { var response = {"success":true,"message":msg.success, "result": responseResult}; callback(response); }else{ // Throw error var response = {"success":false,"message":cb_social_result.errorDetails,"errorCode":cb_social_result.errorCode}; callback(response); } } var params = { data:data, callback: cb_social } setAccount(params); }else{ var response = {"success":true,"message":msg.success, "result": responseResult}; callback(response); } } getAccountInfo(cb_getAccount); }else{ // Throw error var response = {"success":false,"message":cb_facebook_result.errorDetails,"errorCode":cb_facebook_result.errorCode}; callback(response); } } var params = { provider: 'facebook', callback: cb_facebook } setSocialListener(params); }); } if(elementInstagram){ elementInstagram.addEventListener("click", function(event){ event.preventDefault(); if(typeof track != "undefined")track.loginRegistrationModalOpen(); var cb_instagram = function(cb_instagram_result){ if (cb_instagram_result.errorCode == 0) { if(typeof track != "undefined")track.registrationSuccess(); var cb_getAccount = function(response) { var responseResult = {UID: response.account.UID, profile: response.account.profile, data: response.account.data}; if(typeof response.account.data == "undefined") { response.account.data = {}; } if(typeof response.account.data.subscriptionSource == "undefined") { var data = {}; data.subscriptionSource = config.subscription_source; data.terms = true; var cb_social = function(cb_social_result){ if (cb_social_result.errorCode == 0) { responseResult.data.subscriptionSource = config.subscription_source; responseResult.data.terms = true; var response = {"success":true,"message":msg.success, "result": responseResult}; callback(response); }else{ // Throw error var response = {"success":false,"message":cb_social_result.errorDetails,"errorCode":cb_social_result.errorCode}; callback(response); } } var params = { data:data, callback: cb_social } setAccount(params); }else{ var response = {"success":true,"message":msg.success, "result": responseResult}; callback(response); } } getAccountInfo(cb_getAccount); }else{ // Throw error var response = {"success":false,"message":cb_instagram_result.errorDetails,"errorCode":cb_instagram_result.errorCode,"gigyaResponse":cb_instagram_result}; callback(response); } } var params = { provider: 'instagram', callback: cb_instagram } setSocialListener(params); }); } if(elementGoogle){ elementGoogle.addEventListener("click", function(event){ event.preventDefault(); if(typeof track != "undefined")track.loginRegistrationModalOpen(); var cb_google = function(cb_google_result){ if (cb_google_result.errorCode == 0) { if(typeof track != "undefined")track.registrationSuccess(); var cb_getAccount = function(response) { var responseResult = {UID: response.account.UID, profile: response.account.profile, data: response.account.data}; if(typeof response.account.data == "undefined") { response.account.data = {}; } if(typeof response.account.data.subscriptionSource == "undefined") { var data = {}; data.subscriptionSource = config.subscription_source; data.terms = true; var cb_social = function(cb_social_result){ responseResult.data.subscriptionSource = config.subscription_source; responseResult.data.terms = true; if (cb_social_result.errorCode == 0) { var response = {"success":true,"message":msg.success, "result": responseResult}; callback(response); }else{ // Throw error var response = {"success":false,"message":cb_social_result.errorDetails,"errorCode":cb_social_result.errorCode}; callback(response); } } var params = { data:data, callback: cb_social } setAccount(params); }else{ var response = {"success":true,"message":msg.success, "result": responseResult}; callback(response); } } getAccountInfo(cb_getAccount); }else{ // Throw error var response = {"success":false,"message":cb_google_result.errorDetails,"errorCode":cb_google_result.errorCode}; callback(response); } } var params = { provider: 'google', callback: cb_google } setSocialListener(params); }); } } } } catch(err) { response.success = false; response.message += " "+msg.default_error; } return response; } function redirect(url) { if((typeof url == "undefined")||(url == null)||(url == "")) { url = window.location.href; } var params = { redirectURL: url }; var isSafari = /constructor/i.test(window.HTMLElement) || (function (p) { return p.toString() === "[object SafariRemoteNotification]"; })(!window['safari'] || (typeof safari !== 'undefined' && safari.pushNotification)); if(!isSafari) { window.location.replace(url); }else{ gigya.setSSOToken(params); } } function logout(callback) { var cb_logout = function(result){ if (result.errorCode== 0) { var response = {"success":true,"message":msg.success}; if(isFunction(callback)) { callback(response); } }else{ // Throw error var response = {"success":false,"message":result.errorDetails,"errorCode":result.errorCode}; if(isFunction(callback)) { callback(response); } } } gigya.accounts.logout({callback: cb_logout}); } function setSubscriptionSource(subscriptionSource) { if(typeof subscriptionSource != "undefined") { if(config.subscription_source == "multiple" && subscriptionSource != "") { config.subscription_source = subscriptionSource; } } } function setLanguage(lang) { if(lang != null){ config.default_language = lang; } } // ********** Utilities ********** // isFunction => returns true if the variable passed is a function. function isFunction(functionToCheck) { return functionToCheck && {}.toString.call(functionToCheck) === '[object Function]'; } function debug(_log, _environment) { if(typeof _environment == "undefined") { _environment = "local"; } if(_environment != "production") { console.log(_log); } } //Split Date String in separated values [Day, Month, Year] function getValueFromDate(date_value, type){ var value = null; var date_split = date_value.split(/\/|-/); switch(type){ case 'day': value = date_split[0]; break; case 'month': value = date_split[1]; break; case 'year': value = date_split[2]; break; } return parseInt(value); } function getMessageFromResponse(response) { var message = response.errorDetails; if(typeof response.validationErrors != "undefined") { if(message != "") { message += ". Errors: "; } response.validationErrors.forEach(function(error, index, array) { message += error.message; if(index+1 < array.length){ message += ", "; } }); } return message; } function getUserInfoFromResponse(response) { var userInfo = {}; if(typeof response.UID != "undefined") { userInfo.UID = response.UID; } if(typeof response.requestParams.profile != "undefined") { userInfo.profile = response.requestParams.profile; } if(typeof response.requestParams.data != "undefined") { userInfo.data = response.requestParams.data; } if(typeof response.requestParams.subscriptions != "undefined") { userInfo.subscriptions = response.requestParams.subscriptions; } return userInfo; } function notEmptyValue(_value) { if((typeof _value != "undefined")&&(_value != null)) { if(typeof _value === 'string') { if(_value.trim()!="") { return true; }else{ return false; } } }else{ return false; } return true; } function getSelectedOption(select) { var result = []; var options = select.getElementsByTagName('option'); for (var i = 0; i < options.length; i++) { if (options[i].selected) return (options[i].value); }; return result; } function getConfig() { config.anonymousUserInfo = anonymousUserInfo; return config; } function objectProfile(_form) { var profile = {}; // ********** First name ********** if((_form.querySelector('[name="ciam_firstname"]'))&&(notEmptyValue(_form.querySelector('[name="ciam_firstname"]').value))) { profile.firstName = _form.querySelector('[name="ciam_firstname"]').value; } // ********** Last name ********** if((_form.querySelector('[name="ciam_lastname"]'))&&(notEmptyValue(_form.querySelector('[name="ciam_lastname"]').value))) { profile.lastName = _form.querySelector('[name="ciam_lastname"]').value; } // ********** Gender ********** if(_form.querySelector('[name="ciam_gender"]')) { profile.gender = _form.querySelector('[name="ciam_gender"]').value; } // ********** Address ********** if((_form.querySelector('[name="ciam_address"]'))&&(notEmptyValue(_form.querySelector('[name="ciam_address"]').value))) { profile.address = _form.querySelector('[name="ciam_address"]').value; } // ********** Country ********** if(_form.querySelector('[name="ciam_country"]')) { profile.country = _form.querySelector('[name="ciam_country"]').value; } // ********** State ********** if(_form.querySelector('[name="ciam_state"]')) { profile.state = _form.querySelector('[name="ciam_state"]').value; } // ********** City ********** if((_form.querySelector('[name="ciam_city"]'))&&(notEmptyValue(_form.querySelector('[name="ciam_city"]').value))) { profile.city = _form.querySelector('[name="ciam_city"]').value; } // ********** Zip ********** if((_form.querySelector('[name="ciam_zip"]'))&&(notEmptyValue(_form.querySelector('[name="ciam_zip"]').value))) { profile.zip = _form.querySelector('[name="ciam_zip"]').value; } // ********** Birthdate ********** if((_form.querySelector('[name="ciam_birthdate"]'))&&(notEmptyValue(_form.querySelector('[name="ciam_birthdate"]').value))) { var format = _form.querySelector('[name="ciam_birthdate"]').dataset.dateformat; var value = _form.querySelector('[name="ciam_birthdate"]').value; var formatedDate = getDate(value, format); profile.birthDay = getValueFromDate(formatedDate, 'day'); profile.birthMonth = getValueFromDate(formatedDate, 'month'); profile.birthYear = getValueFromDate(formatedDate, 'year'); } // ********** Phone ********** if((_form.querySelector('[name="ciam_phone"]'))&&(notEmptyValue(_form.querySelector('[name="ciam_phone"]').value))) { profile.phones = {}; profile.phones.number = _form.querySelector('[name="ciam_phone"]').value; } // ********** State ********** if((_form.querySelector('[name="ciam_state"]'))&&(notEmptyValue(_form.querySelector('[name="ciam_state"]').value))) { profile.state = _form.querySelector('[name="ciam_state"]').value; } // ********** State ********** if((_form.querySelector('[name="ciam_language"]'))&&(notEmptyValue(_form.querySelector('[name="ciam_language"]').value))) { profile.languages = _form.querySelector('[name="ciam_language"]').value; } return profile; } function httpResponse(_code, _success, _message, _data) { //Get first 3 characters of Gigya Code Error var code = 500; var success = null; var message = ""; if(_code != null) { code = parseInt(_code.toString().substring(0,3)); } if(_success != null) { success = _success; } switch(code) { case 0: message = msg.success; code = 200; if(success == null)success = true; break; case 200: message = msg.success + " "+_message; if(success == null)success = true; break; case 301: message = msg.invalid_data_center + " "+_message; if(success == null)success = false; break; case 400: message = msg.bad_request + " "+_message; if(success == null)success = false; break; case 403: message = msg.forbidden + " "+_message; if(success == null)success = false; break; case 404: message = msg.not_found + " "+_message; if(success == null)success = false; break; case 500: message = msg.internal_error + " "+_message; if(success == null)success = false; break; case 504: message = msg.timeout + " "+_message; if(success == null)success = false; break; default: message = msg.internal_error + " "+_message; code = 500; if(success == null)success = false; break; } var response = {"code": code, "success": success, "message": message}; if(_data != null) response.data = _data; return response; } function getDate(_date, _format) { var format = _format; if(format == null) { format = "dd/mm/yyyy"; } var _delimiter = format.match(/\W/g)[0]; var formatLowerCase = format.toLowerCase(); var formatItems = formatLowerCase.split(_delimiter); var dateItems = _date.split(_delimiter); var monthIndex = formatItems.indexOf("mm"); var dayIndex = formatItems.indexOf("dd"); var yearIndex = formatItems.indexOf("yyyy"); if(yearIndex == -1) { yearIndex = formatItems.indexOf("aaaa"); } var month = parseInt(dateItems[monthIndex]); var formatedDate = dateItems[dayIndex]+"/"+month+"/"+dateItems[yearIndex]; return formatedDate; } // ********** Public Method Declaration ********** return { register: function(params){ return publicRegister(params); }, login: function(params){ return publicLogin(params); }, update: function(params){ return publicUpdate(params); }, logout:function(callback){ return logout(callback); }, loginForm:function(form, callback){ return loginForm(form, callback); }, profileForm:function(form, callback, _autofill, _no_session_started_callback){ if(typeof _autofill != "undefined") { return profileForm(form, callback, _autofill,_no_session_started_callback); }else{ return profileForm(form, callback, false, null); } }, resetPasswordForm:function(form, callback){ return resetPasswordForm(form, callback); }, changePasswordForm:function(form, callback){ return changePasswordForm(form, callback); }, changePasswordFromEmailForm:function(form, callback){ return changePasswordFromEmailForm(form, callback); }, registrationForm:function(form, callback){ return registrationForm(form, callback); }, socialForm:function(form, callback){ return socialForm(form, callback); }, getAccountInfo:function(account_info_callback){ return getAccountInfo(account_info_callback); }, setAccountInfo:function(params){ return setAccountInfo(params); }, setSubscriptionSource:function(subscriptionSource){ return setSubscriptionSource(subscriptionSource); }, setAnonymousInfo:function(arrayAnonymous){ return setAnonymousInfo(arrayAnonymous) }, redirect:function(url){ return redirect(url); }, subscriptionForm:function(form, callback){ return subscriptionForm(form, callback); }, liteAccountForm:function(form, callback){ return liteAccountForm(form, callback); }, resetPassword: function(params){ return resetPassword(params); }, subscribe: function(params){ return subscribe(params); }, createLiteAccount: function(params){ return createLiteAccount(params); }, hasFullAccount: function(params){ return hasFullAccount(params); }, showLoginForm:function(params){ return showLoginForm(params); }, showRegistrationForm:function(params){ return showRegistrationForm(params); }, showSubscriptionForm:function(params){ return showSubscriptionForm(params); }, showForgotPasswordForm:function(params){ return showForgotPasswordForm(params); }, syncAnonymousUserInfo:function(id, source){ return syncAnonymousUserInfo(id, source); }, setLanguage:function(lang){ return setLanguage(lang); }, getConfig:function(){ return getConfig(); } } }; ciam = ciamManager();