Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save iamtracy/32b0f1dd49a9be50bf025e853deb25a6 to your computer and use it in GitHub Desktop.
Save iamtracy/32b0f1dd49a9be50bf025e853deb25a6 to your computer and use it in GitHub Desktop.
//Polyfills and Dependencies
(function() {
//https://osric.com/chris/accidental-developer/2009/08/javascript-insertafter/
Object.prototype.insertAfter = function(newNode) {
this.parentNode.insertBefore(newNode, this.nextSibling);
}
// Production steps of ECMA-262, Edition 5, 15.4.4.19
// Reference: http://es5.github.io/#x15.4.4.19
if (!Array.prototype.map) {
Array.prototype.map = function(callback /*, thisArg*/ ) {
var T, A, k;
if (this == null) {
throw new TypeError('this is null or not defined');
}
var O = Object(this);
var len = O.length >>> 0;
if (typeof callback !== 'function') {
throw new TypeError(callback + ' is not a function');
}
if (arguments.length > 1) {
T = arguments[1];
}
A = new Array(len);
k = 0;
while (k < len) {
var kValue, mappedValue;
if (k in O) {
kValue = O[k];
mappedValue = callback.call(T, kValue, k, O);
A[k] = mappedValue;
}
k++;
}
return A;
};
}
if (!Array.prototype.filter) {
Array.prototype.filter = function(fun /*, thisArg*/ ) {
'use strict';
if (this === void 0 || this === null) {
throw new TypeError();
}
var t = Object(this);
var len = t.length >>> 0;
if (typeof fun !== 'function') {
throw new TypeError();
}
var res = [];
var thisArg = arguments.length >= 2 ? arguments[1] : void 0;
for (var i = 0; i < len; i++) {
if (i in t) {
var val = t[i];
if (fun.call(thisArg, val, i, t)) {
res.push(val);
}
}
}
return res;
};
}
})();
var g_oCheckBoxUDF;
var g_oCountryUDF;
var g_aCountriesList;
var g_oSubmit;
var g_oHttp;
var g_cSelectedCountryValue;
document.addEventListener('DOMContentLoaded', function() {
g_oHttp = new InxpoAJAXObject();
g_oOptin.init(g_oConfig.countryUDF, g_oConfig.checkBoxUDF, g_oConfig.hiddenUDF);
g_fnCustomValidationFcn = function() {
return false;
};
g_oSubmit = document.getElementsByName('submit')[0];
// g_oSubmit.addEventListener('click', customValidation);
//g_oSubmit.addEventListener('click', customBlock);
});
var g_oOptin = {
init: function(cCountryUDF, cCheckboxUDF, cHiddenUDF) {
g_oCountryUDF = document.getElementsByName(cCountryUDF)[0];
g_oCountryUDF.disabled = true;
g_oCheckBoxUDF = document.getElementsByName(cCheckboxUDF)[0];
g_oCountryUDF.addEventListener('change', this.messageBehavior);
g_oCheckBoxUDF.addEventListener('change', this.checkboxBehavior);
this.getStates();
this.createMessageElem(g_oCheckBoxUDF);
this.injectFormInput(cHiddenUDF);
},
getStates: function() {
// RegistrationQuickSetupKey should be a variable, on form
var iRegistrationQuickSetupKey = document.querySelectorAll("input[name='RegistrationQuickSetupKey']")[0].value
var cUrl = "Server.nxp?LASCmd=AI:4;F:LBSEXPORT!JSON&SQLID=20986&ShowKey=" +
GetURLParamValue('ShowKey') +
"&LangLocaleID=1033&RegistrationQuickSetupKey="+iRegistrationQuickSetupKey;
g_oHttp.SendRequest("GET", cUrl, null);
g_oHttp.OnComplete = function(cData) {
g_aCountriesList = EvalResponse(cData)
.ResultSet
.map(function(aUDF) {
return aUDF.filter(function(oUDF) {
return oUDF.FieldKey === parseInt(StringReplace(g_oConfig.countryUDF, "UDF"));
});
})
.filter(function(aUDF) {
return aUDF.length > 0;
});
g_oCountryUDF.disabled = false;
};
},
state: function() {
return {
iSelectedCountryIndex: g_oCountryUDF.selectedIndex - 1,
cSelectedCountryValue: g_oCountryUDF.value,
aCountriesList: g_aCountriesList,
bOptinCheckboxChecked: g_oCheckBoxUDF.checked,
languageId: document.querySelector('[name="LangLocaleID"]').value.toLowerCase()
}
},
getMessage: function(bChecked) {
var cMessage;
var cLangValue = this.getLang();
var cSelectedCountryValue = this.state().cSelectedCountryValue;
/*ChineseSimp
*******************/
if (cLangValue == 'chineseSimp') {
cMessage = this.topicPermissions['chineseSimp'];
}
/*ChineseTrad
*******************/
if (cLangValue == 'chineseTrad') {
cMessage = this.topicPermissions['chineseTrad'];
}
/*Czech
*******************/
if (cLangValue == 'czech') {
cMessage = this.topicPermissions['czech'];
}
/*Dutch
*******************/
if (cLangValue == 'dutch') {
cMessage = this.topicPermissions['dutch'];
}
/*English
*******************/
if (cLangValue == 'english') {
if (cSelectedCountryValue == "Canada") {
cMessage = this.topicPermissions['eCanada'];
} else {
cMessage = this.topicPermissions['english']
}
}
/*French
*******************/
if (cLangValue == 'french') {
if (cSelectedCountryValue == "Canada") {
cMessage = this.topicPermissions['frenchCanadian'];
} else {
cMessage = this.topicPermissions['french'];
}
}
// console.log(cSelectedCountryValue);
/*FrenchCanadian
*******************/
if (cLangValue == 'frenchCanadian' && cSelectedCountryValue == 'Canada') {
// console.log('frenchCanadian runs');
cMessage = this.topicPermissions['frenchCanadian'];
} else if (cLangValue == 'frenchCanadian' && cSelectedCountryValue != 'Canada') {
// console.log('french runs');
cMessage = this.topicPermissions['french'];
}
/*German
*******************/
if (cLangValue == 'german') {
cMessage = this.topicPermissions['german'];
}
/*Greek
*******************/
if (cLangValue == 'greek') {
cMessage = this.topicPermissions['greek'];
}
/*Hebrew
*******************/
if (cLangValue == 'hebrew') {
cMessage = this.topicPermissions['hebrew'];
}
/*Italian
*******************/
if (cLangValue == 'italian') {
cMessage = this.topicPermissions['italian'];
}
/*Japanese
*******************/
if (cLangValue == 'japanese') {
cMessage = this.topicPermissions['japanese'];
}
/*Korean
*******************/
if (cLangValue == 'korean') {
cMessage = this.topicPermissions['korean'];
}
/*Polish
*******************/
if (cLangValue == 'polish') {
cMessage = this.topicPermissions['polish'];
}
/*Portuguese Brazilian
*******************/
if (cLangValue == 'portugueseBrazilian') {
cMessage = this.topicPermissions['portugueseBrazilian'];
}
/*Russian
*******************/
if (cLangValue == 'russian') {
cMessage = this.topicPermissions['russian'];
}
/*Spanish
*******************/
if (cLangValue == 'spanish') {
cMessage = this.topicPermissions['spanish'];
}
/*Turkish
*******************/
if (cLangValue == 'turkish') {
cMessage = this.topicPermissions['turkish'];
}
/*Ukrainian
*******************/
if (cLangValue == 'ukrainian') {
cMessage = this.topicPermissions['ukrainian'];
}
// console.log(cLangValue);
return {
message: cMessage,
topicPermissions: this.aProducts()
};
},
setMessage: function(bChecked) {
var oMessageDiv = document.getElementById('message');
var oMessage = this.getMessage(bChecked);
var bCheckBoxPresent = g_oCheckBoxUDF.getAttribute("style").indexOf('display: inline-block') > -1;
oMessageDiv.innerHTML = oMessage.message;
oMessageDiv.style.marginLeft = (bCheckBoxPresent ? '23px' : '0');
var oProduct = document.getElementById('productList');
if (oProduct && g_oConfig.includeTopicList) {
oProduct.innerHTML = this.setPreText() + ' ' + oMessage.topicPermissions; //plus the last obj
} else if (oProduct) {
oProduct.innerHTML = this.setDynamicMessageSegment();
}
},
setPreText: function() {
var cDynamicMessage;
var cLanguage = this.getLang();
switch (cLanguage) {
case 'frenchCanadian':
(g_oConfig.includeTopicList ? cDynamicMessage = 'sur' : '');
break;
default:
cDynamicMessage = '';
break;
}
// console.log(cDynamicMessage);
return cDynamicMessage;
},
setDynamicMessageSegment: function() {
var cDynamicMessage;
switch (this.getLang()) {
case 'english':
cDynamicMessage = ' products, services, and events, including the latest solutions, tips, and exclusive offers.';
break;
case 'frenchCanadian':
cDynamicMessage = ' à propos des produits, services et événements, y compris les dernières nouveautés en matière de solutions, conseils et offres exclusives.';
break;
case 'french':
cDynamicMessage = ' produits et services';
break;
default:
'';
break;
}
// console.log(cDynamicMessage);
return cDynamicMessage;
},
optinBehavior: function(bChecked, displayProp, checkBoxDisplay) {
g_oCheckBoxUDF.checked = bChecked;
g_oCheckBoxUDF.parentNode.style.display = displayProp;
g_oCheckBoxUDF.style.display = checkBoxDisplay;
this.setMessage(bChecked);
this.setHiddenUDFVal(bChecked);
},
checkboxBehavior: function() {
var bChecked = g_oOptin.state().bOptinCheckboxChecked;
if (bChecked) g_oOptin.optinBehavior(bChecked);
else g_oOptin.optinBehavior(false);
},
isPresent: function(aGroup) {
g_cSelectedCountryValue = this.state().aCountriesList[0][this.state().iSelectedCountryIndex].Column6;
return aGroup.indexOf(g_cSelectedCountryValue) > -1;
},
getGroup: function() {
if (this.isPresent(this.aOptArray.OptInEmailOptInPhoneArray)) return 'a';
if (this.isPresent(this.aOptArray.OptOutEmailOptOutPhoneArray)) return 'b';
if (this.isPresent(this.aOptArray.DoubleOptInEmailPhoneArray)) return 'c';
if (this.isPresent(this.aOptArray.NoticeEmailNoticePhoneArray)) return 'd';
},
messageBehavior: function() {
var cCountry = g_oOptin.state().aCountriesList[0][g_oOptin.state().iSelectedCountryIndex].Column6;
// console.log(cCountry);
if (cCountry == 'Russia') {
customBlock(true);
} else {
customBlock(false);
switch (g_oOptin.getGroup()) {
case 'a':
g_oOptin.optinBehavior(false, 'block', 'inline-block');
break;
case 'b':
g_oOptin.optinBehavior(true, 'block', 'inline-block');
break;
case 'c':
g_oOptin.optinBehavior(false, 'block', 'inline-block');
break;
case 'd':
g_oOptin.optinBehavior(true, 'block', 'none');
break;
default:
g_oOptin.optinBehavior('default');
break;
};
}
}.bind(this),
aProducts: function() {
var aProducts = g_oConfig.topicPermissions;
var cProducts = '';
aProducts.map(function(product, iIndex) {
cProducts += product.brandLabel + (aProducts.length > 2 && iIndex < (aProducts.length - 1) ? ', ' : ' ');
});
return cProducts;
},
createMessageElem: function(oCheckBoxUDF) {
var oMessage = document.createElement('span');
var oCheckBoxParent = oCheckBoxUDF.parentNode;
oCheckBoxParent.style.display = 'none';
oCheckBoxParent.style.float = 'left';
oCheckBoxUDF.style.marginTop = '4px';
oCheckBoxUDF.style.marginRight = '10px';
oCheckBoxUDF.style.marginBottom = '4px';
oMessage.style.display = 'block';
oMessage.style.marginTop = '5px';
oMessage.style.maxWidth = '320px';
oMessage.id = 'message';
oMessage.className = "branding-text";
oCheckBoxParent.insertAfter(oMessage, oCheckBoxUDF);
},
injectFormInput: function(cHiddenUDF) {
var oForm = document.forms[0];
var oLastChild = oForm.lastChild;
var input = document.createElement('input');
input.name = cHiddenUDF;
input.type = 'hidden';
oForm.insertBefore(input, oLastChild);
},
getLang: function() {
var cLanguage;
switch (this.state().languageId) {
case '2052':
cLanguage = 'chineseSimp';
break;
case '1028':
cLanguage = 'chineseTrad';
break;
case '1029':
cLanguage = 'czech';
break;
case '1043':
cLanguage = 'dutch';
break;
case '1033':
cLanguage = 'english';
break;
case '1036':
cLanguage = 'french';
break;
case '3084':
cLanguage = 'frenchCanadian';
break;
case '1031':
cLanguage = 'german';
break;
case '1032':
cLanguage = 'greek';
break;
case '1037':
cLanguage = 'hebrew';
break;
case '1040':
cLanguage = 'italian';
break;
case '1041':
cLanguage = 'japanese';
break;
case '1042':
cLanguage = 'korean';
break;
case '1045':
cLanguage = 'polish';
break;
case '1046':
cLanguage = 'portugueseBrazilian';
break;
case '1049':
cLanguage = 'russian';
break;
case '1034':
cLanguage = 'spanish';
break;
case '1055':
cLanguage = 'turkish';
break;
case '1058':
cLanguage = 'ukrainian';
break;
default:
cLanguage = 'english';
}
return cLanguage;
},
setHiddenUDFVal: function(bChecked) {
var oHiddenField = document.getElementsByName(g_oConfig.hiddenUDF)[0];
var cContactStatus = (bChecked ? 'OKC' : 'DNC');
var cProductString = '';
g_oConfig.topicPermissions.map(function(oProduct) {
cProductString += oProduct.abbreviation + '=' + cContactStatus + ';';
});
oHiddenField.value = cProductString;
},
aOptArray: {
//display checkbox unchecked
OptInEmailOptInPhoneArray: ["Angola", "Argentina", "Armenia", "Australia", "Azerbaijan", "Belgium", "Benin", "Brazil", "Burundi",
"Burkina Faso", "Canada", "CapeVerde", "Chad", "Czech Republic", "Colombia", "Cyprus", "Denmark", "Equatorial Guinea", "Eritrea", "Estonia",
"Gambia", "Georgia", "Ghana", "Guinea", "Guinea-Bissau", "Hungary", "Iceland", "Indonesia", "Iran", "Italy", "Ivory Coast", "Kazakhstan",
"Korea", "Kuwait", "Liberia", "Libya", "Liechtenstein", "Lithuania", "Luxembourg", "Madagascar", "Malawi", "Mali", "Malaysia", "Mauritania",
"Mauritius", "Monaco", "Morocco", "Mozambique", "Namibia", "New Zealand", "Norway", "Pakistan", "Peru", "Philippines", "Poland", "Portugal",
"São Tomé and Príncipe", "Senegal", "Serbia", "Seychelles", "Singapore", "Slovakia", "Slovenia", "Sudan", "Syria", "Thailand",
"Togo", "Tunisia", "Turkey", "Turkmenistan", "Ukraine", "United Arab Emirates", "Uruguay", "Venezuela", "Vietnam", "Zambia"
],
//display checkbox checked
OptOutEmailOptOutPhoneArray: ["Albania", "Algeria", "Bahamas", "Barbados", "Bermuda", "Bangladesh", "Bosnia and Herzegovina", "Bulgaria", "Brunei", "Cayman Islands",
"Chile", "China", "Costa Rica", "Croatia", "Egypt", "Ethiopia", "Faroe Islands", "Fiji", "Finland", "France", "Guatemala", "Hong Kong SAR", "India", "Iraq", "Ireland",
"Jordan", "Kyrgyzstan", "Latvia", "Lebanon", "Lesotho", "Macedonia FYRO", "Malta", "Mexico", "Moldova", "Mongolia", "Montenegro", "Nepal", "Netherlands", "Nicaragua", "Nigeria",
"Palestinian Authority", "Panama", "Romania", "South Africa", "Spain", "Swaziland", "Sweden", "Switzerland", "Taiwan", "United Kingdom"
],
//display checkbox unchecked
DoubleOptInEmailPhoneArray: ["Austria", "Germany", "Greece", "Japan", "Russia"],
//display message only
NoticeEmailNoticePhoneArray: ["Bahrain", "Bolivia", "Botswana", "Cameroon", "Central African Republic", "Congo", "Congo (DRC)", "Côte d'Ivoire", "Dominican Republic",
"Ecuador", "El Salvador", "Gabon", "Honduras", "Jamaica", "Kenya", "Macao SAR", "Niger", "Oman", "Paraguay", "Qatar", "Rwanda", "Saudi Arabia", "Tanzania", "Trinidad and Tobago",
"Uganda", "Yemen", "United States", "Zimbabwe"
]
},
//CheckBoxPrivacyMSWide is the correct translation
topicPermissions: {
chineseSimp: 'Microsoft 可以通过你的联系信息来提供有关 Microsoft 产品和服务的更新和特别优惠信息。你可以随时取消订阅。要了解更多信息,请阅读<a href=\'http://go.microsoft.com/fwlink/?LinkId=521839\' target=\'_blank\'>隐私声明</a>。',
chineseTrad: 'Microsoft 可以通过你的联系信息来提供有关 Microsoft 产品和服务的更新和特别优惠信息。你可以随时取消订阅。要了解更多信息,请阅读<a href=\'http://go.microsoft.com/fwlink/?LinkId=521839\' target=\'_blank\'>隐私声明</a>。',
czech: 'Společnost Microsoft může vaše kontaktní informace použít k poskytování aktualizací a speciálních nabídek svých produktů a služeb. Odběr můžete kdykoli zrušit. Podrobnější informace si můžete přečíst v <a href=\'http://go.microsoft.com/fwlink/?LinkId=521839\' target=\'_blank\'>prohlášení o zásadách ochrany osobních údajů</a>.',
dutch: 'Microsoft heeft toestemming om uw contactgegevens te gebruiken voor updates en speciale acties van Microsoft-producten en -services. U kunt uw abonnement op elk moment opzeggen. Meer informatie leest u in onze <a href=\'http://go.microsoft.com/fwlink/?LinkId=521839\' target=\'_blank\'>Privacyverklaring</a>.',
english: 'Microsoft may use your contact information to provide updates ' +
'and special offers about <span id="productList"></span> ' +
' You can unsubscribe at any time. To learn more you can read the' +
' <a href="https://privacy.microsoft.com/en-us/PrivacyStatement" target="_blank">Privacy Statement</a>.',
french: 'Microsoft pourra utiliser vos informations de contact pour vous faire parvenir des actualités et des offres spéciales concernant des <span id="productList"></span> Vous pouvez vous désinscrire à tout moment. Pour en savoir plus, veuillez consulter notre <a href=\'http://go.microsoft.com/fwlink/?LinkId=521839\' target=\'_blank\'>Déclaration de confidentialité</a>.',
frenchCanadian: '<span class="branding-text">J\'aimerais que Microsoft et son groupe d’entreprises me contacte par courriel et téléphone <span id="productList"></span> </span>' +
'<span class="branding-text" style="margin-top: .3rem; display: block;">Pour retirer votre consentement ou gérer vos préférences de communication, accédez au <a href="https://login.live.com/login.srf?wa=wsignin1.0&rpsnv=13&ct=1492794935&rver=6.7.6643.0&wp=MCMBI&wreply=https:%2F%2Fprofile.microsoft.com%2FPromotionalCommunicationsManager%2Fsecurepages%2Fpcm.aspx&lc=1033&id=74335" target="_blank">gestionnaire de communications promotionnelles</a>.' +
' <a href="https://privacy.microsoft.com/en-us/PrivacyStatement" target="_blank">Déclaration de confidentialité</a>.</span>',
eCanada: '<p>I would like to hear from Microsoft and its family of companies via email and phone about ' +
'<span id="productList"></span></p> ' +
'<p class="branding-text" style="margin-top: .6rem;">To withdraw consent or manage your contact preferences, visit the' +
' <a href="http://go.microsoft.com/fwlink/?LinkId=243191" target="_blank">' +
'Promotional Communications Manager</a>. <a href="https://go.microsoft.com/fwlink/?LinkId=521839" target="_blank">Privacy Statement</a>.</p>',
german: 'Microsoft darf meine angegebenen Kontaktinformationen verwenden, um mir Informationen zu Microsoft-Produkten und -Diensten zu senden. Diese Einwilligung können Sie jederzeit widerrufen. Lesen Sie unsere <a href=\'http://go.microsoft.com/fwlink/?LinkId=521839\' target=\'_blank\'>Datenschutzerklärung</a>, um mehr zu erfahren.',
greek: 'Η Microsoft μπορεί να χρησιμοποιήσει τα στοιχεία επικοινωνίας σας για να σας παρέχει ενημερώσεις και ειδικές προσφορές σχετικά με προϊόντα και υπηρεσίες της Microsoft. Μπορείτε να καταργήσετε την εγγραφή σας οποιαδήποτε στιγμή. Για να μάθετε περισσότερα, μπορείτε να διαβάσετε τη <a href=\'http://go.microsoft.com/fwlink/?LinkId=521839\' target=\'_blank\'>Δήλωση προστασίας προσωπικών δεδομένων</a>.',
hebrew: 'Microsoft עשויה להשתמש בפרטי הקשר שלך כדי לספק עדכונים והצעות מיוחדות אודות המוצרים והשירותים של Microsoft. באפשרותך לבטל את ההרשמה שלך בכל עת. לקבלת מידע נוסף, באפשרותך לקרוא את <a href=\'http://go.microsoft.com/fwlink/?LinkId=521839\' target=\'_blank\'>הצהרת הפרטיות</a>.',
italian: 'Microsoft potrebbe utilizzare le informazioni di contatto per fornire aggiornamenti e offerte speciali riguardanti i prodotti e i servizi Microsoft. Puoi annullare la sottoscrizione in qualsiasi momento. Ulteriori informazioni sono disponibili nell&#39;<a href=\'http://go.microsoft.com/fwlink/?LinkId=521839\' target=\'_blank\'>Informativa sulla privacy</a>.',
japanese: 'マイクロソフト製品およびサービスに関する更新や特典情報を、マイクロソフトがお客様の連絡先情報を使用して連絡する場合があります。連絡の停止はいつでも可能です。詳細については、<a href=\'https://go.microsoft.com/fwlink/?LinkId=521839\' target=\'_blank\'>プライバシーに関する声明</a>をお読みください。',
korean: 'Microsoft는 Microsoft 제품과 서비스에 대한 업데이트 및 특별한 구매 혜택에 대해 알려드리기 위해 등록하신 연락처로 연락드릴 수 있습니다. 언제든지 정보 수신 동의를 철회하실 수 있습니다. 자세한 내용은 <a href=\'http://go.microsoft.com/fwlink/?LinkId=521839\' target=\'_blank\'>개인 정보 취급 방침</a>을 확인하세요.',
polish: 'Microsoft może wykorzystywać Twoje dane kontaktowe, aby wysyłać aktualne informacje oraz oferty specjalne na produkty i usługi Microsoft. W każdej chwili możesz anulować subskrypcję. Aby dowiedzieć się więcej, przeczytaj <a href=\'http://go.microsoft.com/fwlink/?LinkId=521839\' target=\'_blank\'>Zasady zachowania poufności informacji</a>.',
portugueseBrazilian: 'A Microsoft pode usar suas informações de contato para fornecer atualizações e ofertas especiais sobre produtos e serviços da Microsoft. Você pode cancelar a qualquer momento. Para saber mais, você pode ler a <a href=\'http://go.microsoft.com/fwlink/?LinkId=521839\' target=\'_blank\'>Política de Privacidade</a>.',
russian: 'Корпорация Microsoft может использовать ваши контактные данные для предоставления обновлений и специальных предложений по продуктам и услугам Microsoft. Отменить подписку можно в любое время. Дополнительные сведения см. в <a href=\'http://go.microsoft.com/fwlink/?LinkId=521839\' target=\'_blank\'>заявлении о конфиденциальности</a>.',
spanish: 'Microsoft puede usar su información de contacto para proporcionar actualizaciones y ofertas especiales sobre productos y servicios de Microsoft. Puede cancelar la suscripción en cualquier momento. Para obtener más información, consulte la <a href=\'http://go.microsoft.com/fwlink/?LinkId=521839\' target=\'_blank\'>declaración de privacidad</a>.',
turkish: 'Microsoft, iletişim bilgilerinizi kullanarak Microsoft ürünleri ve hizmetleri hakkında güncellemeler ve özel teklifler iletebilir. İstediğiniz zaman aboneliğinizi iptal edebilirsiniz. Daha fazla bilgi edinmek için <a href=\'http://go.microsoft.com/fwlink/?LinkId=521839\' target=\'_blank\'>Gizlilik Bildirimi</a>\'ni okuyabilirsiniz.',
ukrainian: 'Корпорація Майкрософт може використовувати вашу контактну інформацію, щоб надавати оновлення та спеціальні пропозиції щодо продуктів і послуг Майкрософт. Ви можете в будь-який час скасувати підписку. Дізнатися більше можна в <a href=\'http://go.microsoft.com/fwlink/?LinkId=521839\' target=\'_blank\'>декларації про конфіденційність</a>.'
}
};
function customBlock(bSelect) {
var oMessage = document.getElementById('message');
var oNewNode = document.createElement('div');
if (g_cSelectedCountryValue == "Russia" || bSelect) {
// g_oCountryUDF.disabled = true;
// g_oCountryUDF.style.cursor = 'not-allowed';
// g_oSubmit.disabled = true;
g_oSubmit.style.cursor = 'not-allowed';
g_oSubmit.style.opacity = '.3';
oMessage.style.display = 'none';
var rusMes = document.getElementsByClassName('russian-message')[0];
if (!rusMes) {
// console.log('russian-message')
oNewNode.className = 'russian-message';
oNewNode.innerHTML = 'Эта услуга в настоящее время недоступна в России. Пожалуйста, вернитесь позже.';
g_oSubmit.insertAfter(oNewNode, this);
} else {
rusMes.style.display = 'block';
}
g_oOptin.optinBehavior(false, 'none', 'none');
g_fnCustomValidationFcn = function() {
return false;
};
} else {
g_oCountryUDF.disabled = false;
g_oCountryUDF.style.cursor = 'pointer';
g_oSubmit.disabled = false;
g_oSubmit.style.cursor = 'pointer';
g_oSubmit.style.opacity = '1';
oMessage.style.display = 'block';
var rusMes = document.getElementsByClassName('russian-message')[0];
if (rusMes) {
rusMes.style.display = 'none';
}
g_fnCustomValidationFcn = function() {
return true;
};
}
}
var customValidation = function(oEvent) {
var bFormIsValid = getFormIsValid();
if (g_cSelectedCountryValue == "Russia" && bFormIsValid) {
var oResult;
var oRetryResult;
var iAttempts = 0;
var iMaxAttempts = 5;
// var cURL = "https://output.jsbin.com/xuyis/1.json";
var cURL = 'https://datacomplianceservicedev.azurewebsites.net/api/contact/savecontact';
g_oSubmit.value = 'Loading..';
// console.log(g_oHttp);
g_oHttp.AddHeader('Content-Type', 'application/json');
// console.log(g_oHttp);
g_oHttp.SendRequest("POST", cURL, null);
g_oHttp.OnComplete = function(cData) {
iAttempts++;
oResult = EvalResponse(cData);
// console.log(oResult);
if (!oResult.pro) {
submit(oResult);
} else {
retry();
}
};
g_oHttp.OnError = function(oError) {
// console.log(oError);
};
} else if (!bFormIsValid) {
g_fnCustomValidationFcn = function() {
return false;
};
} else {
g_fnCustomValidationFcn = function() {
return true;
};
}
function getFormIsValid() {
var oOriginalAlert = window.alert;
window.alert = function() {};
var bFormIsValid = InputForm_Validate(document.forms[0], oEvent);
window.alert = oOriginalAlert;
return bFormIsValid;
}
function retry() {
if (iAttempts <= iMaxAttempts) {
g_oHttp.SendRequest("GET", cURL, null);
g_oHttp.OnComplete = function(cData) {
oRetryResult = EvalResponse(cData);
if (!oRetryResult.pro) {
submit(oRetryResult);
} else {
if (iAttempts === iMaxAttempts) blockedUI(false);
else retry();
}
};
}
iAttempts++;
}
function submit(oResult) {
g_fnCustomValidationFcn = function() {
return true;
};
var oHashUDF = document.getElementsByName(g_oConfig.hashUDF)[0];
var oTimeStampUDF = document.getElementsByName(g_oConfig.timeStampUDF)[0];
oTimeStampUDF.value = new Date();
oHashUDF.value = oResult.create_of;
g_oSubmit.click();
}
function blockedUI(bIsRetry) {
var oMessageDiv = document.getElementById('message');
g_oCountryUDF.disabled = true;
g_oSubmit.value = 'Disabled';
g_oSubmit.style.cursor = 'not-allowed';
g_oCountryUDF.style.cursor = 'not-allowed';
oMessageDiv.style.position = 'absolute';
oMessageDiv.style.top = '-36px';
oMessageDiv.style.left = '0';
oMessageDiv.style.margin = '0';
oMessageDiv.style.height = '100%';
oMessageDiv.style.display = 'flex';
oMessageDiv.style.justifyContent = 'center';
oMessageDiv.style.alignItems = 'center';
oMessageDiv.style.background = 'rgba(255,255,255,.9)';
oMessageDiv.style.width = '100%';
oMessageDiv.style.color = '#e00';
oMessageDiv.style.fontSize = '1.3rem';
oMessageDiv.style.padding = '1rem';
oMessageDiv.style.maxWidth = '600px';
oMessageDiv.innerHTML = (bIsRetry ? 'Reaching Out to Server' : 'Sorry, you are not eligable for registration');
g_oCheckBoxUDF.style.display = 'none';
}
};
// //will be placed into a html/text block -> quick reg
// var g_oConfig = {
// // Country Dropdown UDF
// countryUDF: 'UDF1039',
// // Optin Checkbox UDF
// checkBoxUDF: 'UDF1040',
// // Hidden UDF for Contact Optin Text
// hiddenUDF: 'UDF1060',
// //Include list of products in the message block
// includeTopicList: true,
// // abbreviation will be submitted to DataPortal as a UDF. Ex: MSFT=OKC if the checkbox is checked, MSFT=DNC otherwise
// // brandLabel will appear dynamically in the message body, below the submit button
// topicPermissions: [
// { abbreviation: 'AAIOT', brandLabel: 'Advanced Analytics and IoT' },
// { abbreviation: 'Azure', brandLabel: 'Microsoft Azure' },
// { abbreviation: 'CRM', brandLabel: 'Microsoft Dynamics' },
// { abbreviation: 'EMS', brandLabel: 'Enterprise Mobility' },
// { abbreviation: 'OMS', brandLabel: 'Data Management' },
// { abbreviation: 'PowerBI', brandLabel: 'Business Intelligence' },
// { abbreviation: 'SQL', brandLabel: 'Data Management' },
// { abbreviation: 'VSO', brandLabel: 'Visual Studio' },
// { abbreviation: 'WNDWS', brandLabel: 'Microsoft Windows' },
// { abbreviation: 'MSFT', brandLabel: 'and other Microsoft products and services.' },
// ]
// };
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment