let roomCreating;
let nameRoom = 'LABELS_STANZA';
let nameRoomIndex = 0;
function checkVar(variable){
if(variable && typeof variable != "undefined" && variable != '' && variable != ' ' && variable != null){
return true;
} else {
return false;
}
}
function calcScrollTop(){
const mobileBreakpoint = 768;
if (window.innerWidth <= mobileBreakpoint) {
return 600;
} else {
return 200;
}
}
function createKeyLocalStorage(el, nameRoomIndex){
let inputs = el.elements;
if(checkVar(inputs)){
for (let i = 0; i < inputs.length; i++) {
let keyLocalStorage = inputs[i].dataset.keyLocalstorage;
if(checkVar(keyLocalStorage)){
let newLocalStorage = keyLocalStorage.slice(0, -1) + nameRoomIndex;
if(checkVar(newLocalStorage)){
inputs[i].dataset.keyLocalstorage = newLocalStorage;
}
}
}
}
}
function createKeyRequiredFields(el, nameRoomIndex){
let inputs = el.elements;
if(checkVar(inputs)){
for (let i = 0; i < inputs.length; i++) {
if( inputs[i].className.split(' ').indexOf('js-required') > -1 ) {
let keyLocalStorage = inputs[i].dataset.keyLocalstorage;
if (checkVar(keyLocalStorage)) {
let newKeyRequiredField = keyLocalStorage.slice(0, -1) + nameRoomIndex + '_required_label';
if (checkVar(newKeyRequiredField)) {
let elLabelRequired = inputs[i].closest('.form-input-custom').querySelector('div');
if(elLabelRequired){
elLabelRequired.id = newKeyRequiredField;
elLabelRequired.classList.add('d-none');
}
}
}
}
}
}
}
function getDynamicFields(){
let namesFieldsDynamic = [];
$('#base-form-to-copy .js-field-dynamic').each(function (){
let nameFieldDynamic = this.dataset.nameFieldDynamic;
namesFieldsDynamic.push(nameFieldDynamic);
});
return namesFieldsDynamic;
}
function requiredFields(parent = '', valueScrollTop = 0){
let ok = true;
let fieldsRequired = $(parent + ' .js-required');
if(checkVar(fieldsRequired)){
fieldsRequired.each(function (){
if ($(this).closest('#base-form-to-copy').length === 0) {
let valueField = this.value;
let campo = this.dataset.keyLocalstorage;
let idLabelRequired = '#' + campo + '_required_label';
if (!checkVar(valueField)) {
ok = false;
$(idLabelRequired).removeClass('d-none');
}
}
});
}
if(!ok && checkVar(valueScrollTop) && valueScrollTop > 0){
$('html, body').animate({ scrollTop: valueScrollTop }, 'slow');
}
return ok;
}
function updatingRoomName(el){
el.querySelector('.js-name-room').innerHTML = nameRoom + ' ' + nameRoomIndex;
}
function sendDataSteps(idCurrentStep, idNextStep){
if( requiredFields() ){
if( validationEmail() ) {
let jsonDataSteps = getDataLocalStorage();
$.ajax({
url: "https://www.erasroom.com/assets/ajax/calcola-affitto/invia-dati.php",
type: "POST",
beforeSend: function (){
$('.js-loading-calcola-affitto').css('opacity', '0.4');
$('.js-loader').removeClass('d-none');
},
data: {jsonDataSteps: jsonDataSteps, fieldsDynamicRooms: getDynamicFields(), dropzoneFiles: JSON.parse( localStorage.getItem('uploadedFiles') )},
success: function (response) {
const data = JSON.parse(response);
if (data.status == "success") {
if (checkVar(idCurrentStep)) {
let currentStep = $('#calcola-affitto-step-' + idCurrentStep);
if (checkVar(currentStep)) {
currentStep.css('display', 'none');
}
}
if (checkVar(idNextStep)) {
let nextStep = $('#calcola-affitto-step-' + idNextStep);
if (checkVar(nextStep)) {
nextStep.css('display', 'block');
}
}
updateProgressiveBar(idCurrentStep, idNextStep);
localStorage.removeItem('step');
localStorage.clear();
$('.js-loader').addClass('d-none');
$('.js-loading-calcola-affitto').css('opacity', '1');
} else if (data.status == "error") {
$('.js-loader').addClass('d-none');
$('.js-loading-calcola-affitto').css('opacity', '1');
if(data.show_custom_message){
swal({
text: data.message,
type: "error",
showConfirmButton: true
});
} else {
swal({
text: 'LABELS_CONTATTARE_IL_SUPPORTO_TECNICO',
type: "error",
showConfirmButton: true
});
}
}
},
});
}
} else {
swal({
text: 'LABELS_CAMPI_OBBLIGATORI',
type: "error",
showConfirmButton: true
});
}
}
function validateEmail(email) {
const emailRegex = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/;
return emailRegex.test(email);
}
function getDataLocalStorage(){
let jsonDataSteps = {};
$('.js-localstorage-data').each(function (){
if ($(this).closest('#base-form-to-copy').length === 0) {
let keyLocalstorage = this.dataset.keyLocalstorage;
let valueLocalstorage = localStorage.getItem(keyLocalstorage);
Object.assign(jsonDataSteps, {[keyLocalstorage]: valueLocalstorage});
}
});
return jsonDataSteps;
}
function selectOptionByValue($select, valueToSelect) {
$select.val('');
$select.val(valueToSelect);
$select.find('option').each(function() {
$(this).removeClass('selected');
if ($(this).val() === valueToSelect) {
$(this).addClass('selected');
}
});
}
function restoreDataLocalstorare(){
$('.js-localstorage-data').each(function (){
if ($(this).closest('#base-form-to-copy').length === 0) {
let keyLocalstorage = this.dataset.keyLocalstorage;
switch (this.type.trim()) {
case 'textarea':
case 'text':
this.value = localStorage.getItem(keyLocalstorage);
break;
case 'checkbox':
let isChecked = localStorage.getItem(keyLocalstorage);
if (isChecked == "on" || isChecked == "true") {
this.checked = true;
} else {
this.checked = false;
}
break;
case 'select-one':
var $select = $(this);
selectOptionByValue($select, localStorage.getItem(keyLocalstorage));
break;
}
}
});
}
function restoreRoomCreating(){
let nRoomCreating = localStorage.getItem('roomCreating');
if(checkVar(nRoomCreating)){
for (let i = 0; i < parseInt(nRoomCreating); i++){
createForm(false);
}
}
}
function updatingRoomCreating(action = 1){
let nRoomCreating = parseInt( localStorage.getItem('roomCreating') );
if(!checkVar(nRoomCreating) || nRoomCreating < 0){
nRoomCreating = 0;
}
switch (action){
case 1:
localStorage.setItem('roomCreating', (nRoomCreating + 1));
break;
case -1:
localStorage.setItem('roomCreating', (nRoomCreating - 1));
break;
}
return parseInt(localStorage.getItem('roomCreating'));
}
function toggleLabelRequired(){
$('.js-required').on('keyup', function (){
let campo = this.dataset.keyLocalstorage;
let idLabelRequired = '#' + campo + '_required_label';
if(checkVar(this.value)) {
$(idLabelRequired).addClass('d-none');
} else {
$(idLabelRequired).removeClass('d-none');
}
});
$('select.js-required').on('change', function (){
let campo = this.dataset.keyLocalstorage;
let idLabelRequired = '#' + campo + '_required_label';
if(checkVar(this.value)) {
$(idLabelRequired).addClass('d-none');
} else {
$(idLabelRequired).removeClass('d-none');
}
});
}
function savingLocalStorageDataText(el){
let keyLocalstorage = el.dataset.keyLocalstorage;
let valueLocalstorage = el.value;
try {
localStorage.setItem(keyLocalstorage, valueLocalstorage);
} catch (e) {
if (e.code === DOMException.QUOTA_EXCEEDED_ERR) {
console.error('Quota di memoria superata!');
}
}
}
function savingLocalStorageDataCheckbox(el){
let keyLocalstorage = el.dataset.keyLocalstorage;
let valueLocalstorage = el.checked;
try {
localStorage.setItem(keyLocalstorage, valueLocalstorage);
} catch (e) {
if (e.code === DOMException.QUOTA_EXCEEDED_ERR) {
console.error('Quota di memoria superata!');
}
}
}
function saveLocalStorageData(){
$('.js-localstorage-data').on('keyup', function (){
savingLocalStorageDataText(this);
});
$('.js-localstorage-data.js-checkbox').on('click', function (){
savingLocalStorageDataCheckbox(this);
});
$('.js-localstorage-data.js-select-custom').on('change', function (){
savingLocalStorageDataText(this);
});
}
function autoSaveLocalStorageData(){
$('.js-localstorage-data:not(.js-checkbox)').each(function() {
savingLocalStorageDataText(this);
});
$('.js-localstorage-data.js-checkbox').each(function() {
savingLocalStorageDataCheckbox(this);
});
$('.js-localstorage-data.js-select-custom').each(function() {
savingLocalStorageDataText(this);
});
}
function clearLocalStorage(exclude = []){
for (let i = 0; i < localStorage.length; i++) {
let clear = true;
let key = localStorage.key(i);
if (!exclude.includes(key)) {
$('.js-localstorage-data').each(function () {
let keyLocalStorage = this.dataset.keyLocalstorage;
if (keyLocalStorage == key) {
clear = false;
}
});
if (clear) {
localStorage.removeItem(key);
}
}
}
}
function destroyRooms(){
nameRoomIndex = 0;
localStorage.setItem('roomCreating', 0);
$('.js-container-create-rooms').html('');
}
function triggerSelects(){
$('select.js-select-custom').val('').trigger('change');
}
function createNrooms(){
$('.js-create-n-rooms').focusout(function() {
const maxRooms = 20;
let nRooms = this.value;
if(checkVar(nRooms) && nRooms > 0 && nRooms <= maxRooms){
destroyRooms();
for (let i=0; i