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.
135 lines
3.3 KiB
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));
|
|
|