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/js/jaklcgroupchat.js

135 lines
3.3 KiB

/*===============================================*\
|| ############################################# ||
|| # JAKWEB.CH / Version 1.1 # ||
|| # ----------------------------------------- # ||
|| # Copyright 2020 JAKWEB All Rights Reserved # ||
|| ############################################# ||
\*===============================================*/
function lcjak_groupchatWidget(data) {
// Chat container, important for inject code
var lcjgroup_container = document.getElementById('jakgroup-chat-container');
// Inject the chat/button into the page
lcjgroup_container.innerHTML = data.widgethtml;
return true;
}
function extractDomainlcg(url) {
var domain;
//find & remove protocol (http, ftp, etc.) and get domain
if (url.indexOf("://") > -1) {
domain = url.split('/')[2];
}
else {
domain = url.split('/')[0];
}
//find & remove port number
domain = domain.split(':')[0];
return domain;
}
// Create the XHR object.
function createCORSRequestlcg(method, url) {
var xhr = new XMLHttpRequest();
xhr.withCredentials = true;
if ("withCredentials" in xhr) {
// XHR for Chrome/Firefox/Opera/Safari.
xhr.open(method, url, true);
} else if (typeof XDomainRequest != "undefined") {
// XDomainRequest for IE.
xhr = new XDomainRequest();
xhr.open(method, url);
} else {
// CORS not supported.
xhr = null;
}
return xhr;
}
(function(w) {
chatloc = JSON.parse(JSON.stringify(w.lcjUrl));
// Same location no cross origin.
if (extractDomainlcg(w.lcjUrl) == window.location.hostname) {
// Now we check if we have an online operator
var request = new XMLHttpRequest();
request.open('GET', chatloc+'include/groupchat.php?id='+w.id, true);
// time in milliseconds
request.timeout = 3000;
// Request
request.onload = function() {
if (request.status >= 200 && request.status < 400) {
// Success!
var data = JSON.parse(request.responseText);
// We have data
if (data.status) {
// Load chat widget
lcjak_groupchatWidget(data);
return true;
} else {
console.log(data.error);
}
} else {
// We reached our target server, but it returned an error
}
};
request.onerror = function() {
// There was a connection error of some sort
};
request.ontimeout = function (e) {
// XMLHttpRequest timed out. Do something here.
};
request.send();
} else {
// This is a sample server that supports CORS.
var url = chatloc+'include/groupchat_cross.php?id='+w.id+'&callback=LiveChatGroupJAK';
var request = createCORSRequestlcg('GET', url);
if (!request) {
console.log('CORS not supported');
return;
}
// Response handlers.
request.onload = function() {
var data = JSON.parse(request.responseText);
// We have data
if (data.status) {
// Load chat widget
lcjak_groupchatWidget(data);
return true;
} else {
console.log(data.error);
}
};
request.onerror = function() {
console.log('Woops, there was an error making the request.');
};
request.send();
}
}(window));