"use strict"; (function() { if (!String.prototype.trim) { String.prototype.trim = function () { return this.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, ''); }; } var imgDataUrl = null; function updateLocationInfo() { var locationType = $("input:radio[name='locationType']:checked").val(); $("#locationType_usa").toggle(locationType === "usa"); $("#locationType_eu").toggle(locationType === "eu"); $("#locationType_other").toggle(locationType === "other"); $("#paymentMethod_iban").toggle(locationType === "eu"); if ($("#paymentMethod_iban input").is(":checked") && locationType !== "eu") $("#paymentMethod_stripe input").prop("checked", true); if ($("#paymentMethod_intl input").is(":checked") && locationType === "eu") $("#paymentMethod_iban input").prop("checked", true); $("#paymentMethod_intl").toggle(locationType !== "eu"); } function updatePriceIndication() { $("#onlyYearlyWarning").hide(); var x = getPriceIndication(); if (x === "") { $("#costIndicator").text("").hide(); } else { $("#costIndicator").text(x).show(); } } function getPriceIndication() { try { var seats = parseInt($("#seats").val()); if (isNaN(seats) || seats < 1) return ""; var licenseType = $("input:radio[name='licenseType']:checked").val(); var costPer; if (licenseType === "enterprise") costPer = 5; else if (licenseType === "professional") costPer = 2; else return ""; var periodRaw = $("input:radio[name='paymentType']:checked").val(); if (periodRaw === "monthly") { if (costPer*seats < 50) { $("#onlyYearlyWarning").show(); return "Your license will cost €" + (costPer*seats*12) + ",- per year."; } return "Your license will cost €" + (costPer*seats) + ",- per month."; } return "Your license will cost €" + (costPer*seats*12) + ",- per year."; } catch (e) { return ""; } } function showError(elemName) { var elem = $("#" + elemName + "Err"); elem.fadeIn(); $("#" + elemName).on("change keyup", function() { elem.hide(); }); } function applyLicense() { var submitButton = $("#submit"); var spinner = $("").attr("src", "/img/spinner.gif").attr("alt", "submitting").css("float", "left").css("margin-right", "20px"); submitButton.on("click", function(evt) { evt.preventDefault(); var onSuccess = function() { $("#orderHelp").hide(); var okMsg = $("
orders@projectlombok.org
.");
spinner.replaceWith(okMsg);
};
var onFailure = function() {
$("#orderHelp").hide();
var errMsg = $("orders@projectlombok.org
? Thank you!");
spinner.replaceWith(errMsg);
};
var data = {};
data.name = $("#companyName").val();
data.email = $("#email").val();
data.licenseType = $("input:radio[name='licenseType']:checked").val();
data.seats = parseInt($("#seats").val());
data.paymentType = $("input:radio[name='paymentType']:checked").val();
data.mentionMe = $("#mentionMe").prop("checked");
data.companyUrl = $("#companyUrl").val();
data.locationType = $("input:radio[name='locationType']:checked").val();
data.euVat = $("#euVat").val();
data.paymentMethod = $("input:radio[name='paymentMethod']:checked").val();
var formFail = false;
if (!data.paymentMethod) {
showError("paymentMethod");
formFail = true;
}
if (!data.euVat && data.locationType === 'eu') {
$("#euVat").focus();
showError("euVat");
formFail = true;
}
if (!data.locationType) {
showError("locationType");
formFail = true;
}
if (!data.seats || isNaN(data.seats) || data.seats < 1) {
$("#seats").focus();
showError("seats");
formFail = true;
}
if (!data.paymentType) {
showError("paymentType");
formFail = true;
}
if (data.email.indexOf('@') === -1) {
$("#email").focus();
showError("email");
formFail = true;
}
if (data.name.trim().length < 1) {
$("#companyName").focus();
showError("companyName");
formFail = true;
}
if (formFail) return;
var rnd = generateRandom();
var err = processImageUpload();
if (err) {
alert(err);
$("#logo")[0].value = null;
return;
}
if (imgDataUrl) data.logo = imgDataUrl;
submitButton.replaceWith(spinner);
$.ajax({
url: "/license-submit/" + rnd,
method: "PUT",
contentType: "application/json",
data: JSON.stringify(data),
processData: false,
success: onSuccess,
error: onFailure
});
});
$("#companyLogo").on("click", function(evt) {
evt.preventDefault();
$("#logo").click();
});
$("#deleteCompanyLogo").on("click", function(evt) {
evt.preventDefault();
$("#logo")[0].value = null;
$("#logoCnt").empty().hide();
$("#companyLogo").show();
$("#deleteCompanyLogo").hide();
});
$("#logo").on("change", function() {
var err = showImage();
if (err) {
alert(err);
$("#logo")[0].value = null;
} else {
$("#companyLogo").hide();
$("#deleteCompanyLogo").show();
}
});
$("#seats,.paymentType,.licenseType").on("change keyup", function() {
updatePriceIndication();
});
$(".locationType").on("change", function() {
updateLocationInfo();
});
}
function generateRandom() {
var buf = new Uint8Array(40);
window.crypto.getRandomValues(buf);
return btoa(String.fromCharCode.apply(null, buf)).replace(/\+/g, '_').replace(/\//gi, '-');
}
function showImage() {
$("#logoCnt").empty().hide();
try {
return processImageUpload(function(dataUrl) {
var img = $("");
img.css({
"max-width": "500px",
"max-height": "300px"
});
$("#logoCnt").append(img).show();
img.attr("src", dataUrl);
});
} catch (e) {
if (console && console.log) console.log(e);
}
}
function processImageUpload(fnc) {
var f = $("#logo")[0].files[0];
if (!f) return;
if (f.size > 10000000) return "Logo too large; please give us a logo below 10MiB in size.";
var imageType = /^image\//;
if (!imageType.test(f.type)) return "Please upload an image, for example in PNG format.";
var reader = new FileReader();
reader.onload = function(e) {
imgDataUrl = e.target.result;
if (fnc) fnc(e.target.result);
};
reader.readAsDataURL(f);
return null;
}
$(applyLicense);
})();