Jakweb.ch stuff
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
clouddesk/lctemplate/business/js/quickstart.js

377 lines
10 KiB

/*===============================================*\
|| ############################################# ||
|| # JAKWEB.CH / Version 2.1.4 # ||
|| # ----------------------------------------- # ||
|| # Copyright 2022 JAKWEB All Rights Reserved # ||
|| ############################################# ||
\*===============================================*/
// Standard vars
var debugme = false;
var working = false;
/* modern browsers - will execute code once all elements are loaded onto the client */
window.addEventListener('DOMContentLoaded', (event) => {
// content is loaded, load the value from storage
if (localStorage.getItem('lcjak_customvars')) lcjak_customvars(); // call the function to perform
});
// We listen for the enter key on the textarea
document.getElementById("quickstart_chat_msg").addEventListener("keyup", function(event) {
event.preventDefault();
if (event.keyCode === 13) {
document.getElementById("start_chat_btn").click();
}
});
document.getElementById("start_chat_btn").addEventListener("click", function(event){
event.preventDefault();
lcjak_startChat();
});
// Emoticons
document.getElementById("emoticons").addEventListener("click", function() {
// get the button bubble
likeBox = document.getElementById("emoticons_btn");
if (likeBox.style.display === '') {
addCSS(likeBox);
} else {
removeCSS(likeBox);
}
});
function sendEmo(shortcode) {
// get the button bubble
likeBox = document.getElementById("emoticons_btn");
// Add the text to the textarea
var txta = document.getElementById("quickstart_chat_msg");
txta.value += shortcode+' ';
txta.focus();
// remove the emoticons box
removeCSS(likeBox);
}
function addCSS(lb) {
lb.style.display = 'block';
// add class
if (lb.classList) {
lb.classList.add("animate__fadeInUp");
} else {
lb.className = lb.className.replace(new RegExp('(^|\\b)' + className.split(' ').join('|') + '(\\b|$)', 'gi'), ' ');
}
}
function removeCSS(lb) {
// remove class
if (lb.classList) {
lb.classList.remove("animate__fadeInUp");
} else {
lb.className = lb.className.replace(new RegExp('(^|\\b)' + className.split(' ').join('|') + '(\\b|$)', 'gi'), ' ');
}
lb.style.display = '';
}
function lcjak_customvars() {
if (working) return false;
working = true;
// Get the session
var lcjak_session = "0";
if (localStorage.getItem('lcjak_session')) lcjak_session = localStorage.getItem('lcjak_session');
// Get the customer
var lcjak_customvars = "0";
if (localStorage.getItem('lcjak_customvars')) lcjak_customvars = localStorage.getItem('lcjak_customvars');
var xhrc = new XMLHttpRequest();
// Bind the FormData object and the form element
const lcjakform = document.getElementById("lcjak_ajaxform");
const FD = new FormData(lcjakform);
// Call the file to verify and start the process
xhrc.open('POST', base_url+'include/chatdata.php?id='+lcjakwidgetid+'&run=loadcustomvars&lang='+lcjak_lang, true);
// time in milliseconds
xhrc.timeout = 3000;
// Request
xhrc.onload = function() {
if (xhrc.status >= 200 && xhrc.status < 400) {
// Success!
var data = JSON.parse(xhrc.responseText);
// We have data
if (data.status) {
if (debugme) {
console.log(data);
} else {
// Set the name
if (data.name) document.querySelector('input[name="start_name"]').value = data.name;
// Set the email
if (data.email) document.querySelector('input[name="start_email"]').value = data.email;
// Set the chat message
if (data.msg) document.querySelector('textarea[name="quickstart_chat_msg"]').value = data.msg;
}
} else {
// Something went wrong
}
// We will make the form again
working = false;
return true;
} else {
// We reached our target server, but it returned an error
}
};
xhrc.onerror = function() {
// There was a connection error of some sort
};
xhrc.ontimeout = function (e) {
// XMLHttpRequest timed out. Do something here.
};
FD.append("rlbid", lcjak_session);
FD.append("customvars", lcjak_customvars);
// Finally send the data
xhrc.send(FD);
}
function lcjak_startChat() {
if (working) return false;
working = true;
var msgfield = document.getElementById("quickstart_chat_msg");
var loadbtn = document.getElementById("start_chat_load");
loadbtn.classList.remove("fa-paper-plane");
loadbtn.classList.add("fa-spinner","fa-pulse");
msgfield.classList.remove("error");
// Let's get the current status of the local storage
lcjak_chatstatus = localStorage.getItem('lcjak_chatstatus');
// Get the session
var lcjak_session = "0";
if (localStorage.getItem('lcjak_session')) lcjak_session = localStorage.getItem('lcjak_session');
// Get the geo data
var lcjak_geodata = "0";
if (localStorage.getItem('lcjak_geodata')) lcjak_geodata = localStorage.getItem('lcjak_geodata');
var xhrc = new XMLHttpRequest();
// Bind the FormData object and the form element
const lcjakform = document.getElementById("lcjak_ajaxform");
const FD = new FormData(lcjakform);
// Call the file to verify and start the process
xhrc.open('POST', base_url+'include/chatdata.php?id='+lcjakwidgetid+'&run=quickstart&lang='+lcjak_lang, true);
// time in milliseconds
xhrc.timeout = 0;
// Some sort of an error, let's redo the send button
xhrc.addEventListener( "error", function( event ) {
loadbtn.classList.remove("fa-spinner","fa-pulse");
loadbtn.classList.add("fa-paper-plane");
});
// Request
xhrc.onload = function() {
if (xhrc.status >= 200 && xhrc.status < 400) {
// Success!
var data = JSON.parse(xhrc.responseText);
// We have data
if (data.status) {
if (debugme) {
console.log(data);
} else {
// We have a success we need to fire up the chat
// Make sure we have the correct client
localStorage.setItem('lcjak_customer', data.customer);
// We also need to send the customer data to the other domain if
if (cross_url && parent.postMessage) {
parent.postMessage('customerdata::'+data.customer, cross_url);
}
// We reload the location
window.location = data.gotochat;
}
} else {
if (debugme) console.log(data.error);
loadbtn.classList.remove("fa-spinner","fa-pulse");
loadbtn.classList.add("fa-paper-plane");
msgfield.classList.add("error");
msgfield.setAttribute('placeholder', data.error['quickstart_chat_msg']);
}
// We will make the form again
working = false;
return true;
} else {
// We reached our target server, but it returned an error
}
};
xhrc.onerror = function() {
// There was a connection error of some sort
};
xhrc.ontimeout = function (e) {
// XMLHttpRequest timed out. Do something here.
};
// Additional Form Data
FD.append("chatstatus", lcjak_chatstatus);
FD.append("rlbid", lcjak_session);
FD.append("geo", lcjak_geodata);
// Finally send the data
xhrc.send(FD);
}
function lcjak_closechat(anim) {
const element = document.querySelector('.lcb_close');
element.classList.add('animate__animated', 'animate__rotateOut');
element.addEventListener('animationend', () => {
// Replace the current url with the new one /prevent ajax request
let old_url = window.location.href;
// Let us check if we have rewrite enabled
var searchurl = "lc&sp=open";
if (localStorage.getItem('lcjak_chatstatus') == "big") {
searchurl = "lc&sp=big";
}
var repurl = "lc&sp=closed";
if (base_rewrite == 1) {
searchurl = "lc/open";
if (localStorage.getItem('lcjak_chatstatus') == "big") {
searchurl = "lc/big";
}
repurl = "lc/closed";
}
let new_url = old_url.replace(searchurl, repurl);
if (debugme) console.log(new_url);
// Set the local storage to closed
localStorage.setItem('lcjak_chatstatus', "closed");
// We also need to send the customer data to the other domain if
if (cross_url && parent.postMessage) {
parent.postMessage('chatstatus::closed', cross_url);
}
// Redirect to close the chat
window.location = new_url;
});
}
function lcjak_bigchat(anim) {
const element = document.querySelector('.jaklcb_maximise');
element.classList.add('animate__animated', 'animate__slideOutUp');
element.addEventListener('animationend', () => {
// Set the local storage to closed
localStorage.setItem('lcjak_chatstatus', "big");
// We also need to send the customer data to the other domain if
if (cross_url && parent.postMessage) {
parent.postMessage('chatstatus::big', cross_url);
}
// Replace the current url with the new one /prevent ajax request
let old_url = window.location.href;
// Let us check if we have rewrite enabled
var searchurl = "lc&sp=open";
var repurl = "lc&sp=big";
if (base_rewrite == 1) {
searchurl = "lc/open";
repurl = "lc/big";
}
let new_url = old_url.replace(searchurl, repurl);
if (debugme) console.log(new_url);
// Redirect to big chat
window.location = new_url;
});
}
function lcjak_smallchat(anim) {
const element = document.querySelector('.jaklcb_minimize');
element.classList.add('animate__animated', 'animate__slideOutDown');
element.addEventListener('animationend', () => {
// Set the local storage to closed
localStorage.setItem('lcjak_chatstatus', "open");
// We also need to send the customer data to the other domain if
if (cross_url && parent.postMessage) {
parent.postMessage('chatstatus::open', cross_url);
}
// Replace the current url with the new one /prevent ajax request
let old_url = window.location.href;
// Let us check if we have rewrite enabled
var searchurl = "lc&sp=big";
var repurl = "lc&sp=open";
if (base_rewrite == 1) {
searchurl = "lc/big";
repurl = "lc/open";
}
let new_url = old_url.replace(searchurl, repurl);
if (debugme) console.log(new_url);
// Redirect to big chat
window.location = new_url;
});
}