" +
"" +
"" +
//ENG-1082
"
\"" + chatbtn_tooltip_text + "\"";
/* " ";
*/
doc.getElementById("widgetlbtn").style.color = color;
doc.getElementById("widgetlbtn").style.backgroundColor = msg.widgetcolor;
doc.getElementById("widgetlbtn").style.display = 'block';
count = count != undefined ? count : 0;
doc.getElementById("spnwidgetlbtn").setAttribute("aria-label", "Chat button , " + count + " unread messages"); //ENG-1082
doc.getElementById("widgetlbtn").addEventListener('click', function () {
console.log("switchicon called");
if (parent.IMIChatInit != undefined)
{
parent.IMIChatInit.chatswitchicon();
}
else
{
IMIChatInit.chatswitchicon();
}
});
document.getElementById('imi-chatbutton').style.display = "block";
//console.log( doc.getElementById("widgetlbtn"));
/*$('[data-toggle=\"tooltip\"]').tooltip();*/
// doc.close();
/* for test */
var doc1 = document.getElementById('chatunread-frame').contentWindow.document;
// doc1.open();
doc1.head.innerHTML = "
" +
"";
doc1.body.innerHTML = "
x";
// ""+
//"" +
//"";
//doc1.close();
doc1.getElementsByTagName('html')[0].classList.add('imichatmsgpreview');
doc1.getElementById("ancclearcards").addEventListener('click', function () {
if (parent.IMIChatInit != undefined) {
parent.IMIChatInit.clearmsgcards();
}
else {
IMIChatInit.clearmsgcards();
}
});
document.getElementById('chatunread-frame').style.display = "block";
IMIGeneral.storeLocal("style_" + document.getElementById("divicw").getAttribute("data-bind") + "_" + window.location.hostname, msg);
document.getElementById('chatbutton').style.display = "block";
} else {
document.getElementById("divicw").innerHTML = '';
}
} catch (e1) { }
},
chatswitchicon: function (type) {
console.log("Chatswitchicon::" + type);
try {
/*type=1-max and 0- min */
var isMobile = "0";
// if (window.innerWidth > 768) { // document.getElementById('divchatmain').className = 'main-chat-cont';
// } else { // document.getElementById('divchatmain').className = 'main-chat-cont chatmobile';
// isMobile="1";
// }
if ((navigator.userAgent.indexOf("Mobile")) != -1) {
isMobile = "1";
}
sessionStorage.setItem("data-bind", document.getElementById("divicw").getAttribute("data-bind"));
sessionStorage.setItem("data-org", document.getElementById("divicw").getAttribute("data-org"));
var iframe = document.getElementById('imi-chatbutton');
if (iframe == null || iframe == undefined) return;
var innerDoc = iframe.contentDocument || iframe.contentWindow.document;
//Open Widget
if (document.getElementById("divchatmain").style.display === 'none' && (type == 1 || type == 2 || type == undefined)) {
document.getElementById("divchatmain").style.display = "block";
IMIGeneral.checkmobile();
var widgetmain = document.getElementById("iframechatwindow");//ENG-1034
widgetmain.contentWindow.focus();//ENG-1034
//if ((window.outerWidth < 497) && (document.documentElement.classList.contains('imichatmobile-active') == false) && document.getElementById("divchatmain").style.display == "block") {
var className = " " + document.documentElement.className + " ";
if ((window.outerWidth < 700) && (" " + className + " ").replace(/[\n\t]/g, " ").indexOf("imichatmobile-active") > -1 && document.getElementById("divchatmain").style.display == "block") {
// if((document.documentElement.classList.value.split(/\s+|\./).filter(word => word === 'imichatmobile-active').length==1) == false){
document.documentElement.classList.remove("imichatmobile-active");
document.documentElement.className = document.documentElement.className + " imichatmobile-active";
// }
} else {
document.documentElement.className = document.documentElement.className.replace(' imichatmobile-active', '');
}
document.getElementById('chatunread-frame').style.display = "none";
innerDoc.getElementById("widgetlbtn").setAttribute("class", "open-btn state1 " + buttonType + " close-btn");
// innerDoc.getElementById("widgetlbtn").setAttribute("aria-label", "Close web chat");
innerDoc.getElementById("widgetlbtn").setAttribute("aria-expanded", "true");
document.getElementById('imi-chatbutton').contentWindow.document.getElementById("chattotalbadge").style.display = "none";
document.getElementById('imi-chatbutton').contentWindow.document.getElementById("chattotalbadge").innerText = "";
localStorage.setItem(fingerprint + "_" + _skey + "_badgecount", 0);
localStorage.setItem(fingerprint + "_" + _skey + "_cardcount", 0);
IMIChatInit.clearmsgcards();
// if (IMIGeneral.getBrowserName() == "safari") {
// if (IMIGeneral.detectIOS()) {
// document.body.classList.add('chatnoscroll');
// }
// }
if (type === undefined) {
var destination = document.getElementById('iframechatwindow').contentWindow;
msg = {
"action": "showiframe",
"host": window.location.hostname,
"chatmobile": isMobile
};
destination.postMessage(msg, domainUrl);
document.getElementById("iframechatwindow").setAttribute("aria-hidden", "false");
}
return;
}
//Close Widget
if (document.getElementById("divchatmain").style.display === 'block' && (type == 0 || type == 2 || type == undefined)) {
document.documentElement.className = document.documentElement.className.replace(' imichatmobile-active', '');
//document.body.classList.remove('chatnoscroll');
document.getElementById("divchatmain").style.display = "none";
innerDoc.getElementById("widgetlbtn").setAttribute("class", "open-btn state " + buttonType);
innerDoc.getElementById("widgetlbtn").setAttribute("aria-expanded", "false");
innerDoc.getElementById("widgetlbtn").focus();
document.getElementById('chatunread-frame').style.display = "block";
localStorage.setItem(fingerprint + "_" + _skey + "_cardcount", 0);
document.getElementById("iframechatwindow").setAttribute("aria-hidden", "true");
return;
}
//var iframeEl = document.getElementById("iframechatwindow");
// Make sure you are sending a string, and to stringify JSON
// iframeEl.contentWindow.postMessage("hello", '*');
return;
} catch (e) {
console.log("LaunchProactiveMsgManager:" + e.msg);
}
},
clearmsgcards: function () {
document.getElementById('chatunread-frame').contentWindow.document.getElementById("msg-list").innerHTML = "";
document.getElementById('chatunread-frame').contentWindow.document.getElementById("ancclearcards").style.display = "none";
//document.getElementById('imi-chatbutton').contentWindow.document.getElementById("chattotalbadge").style.display = "none";
//document.getElementById('imi-chatbutton').contentWindow.document.getElementById("chattotalbadge").innerText == "";
localStorage.setItem(fingerprint + "_" + _skey + "_cardcount", 0);
},
openchat: function (event) {
document.getElementById('imichat-fullscreen-modal').className = 'imichat-fullscreen-modal';
document.getElementById('imichat-fullscreen-modal').removeAttribute('tabindex');
document.getElementById('imichat-fullscreen-modal').removeAttribute('aria-hidden');
var destination = document.getElementById('iframechatwindow').contentWindow;
destination.postMessage({
action: 'openchat',
threadid: event.data.threadid,
proactive_id: event.data.proactive_id
}, '*');
if (parent.IMIChatInit != undefined) {
parent.IMIChatInit.chatswitchicon(2);
}
else {
IMIChatInit.chatswitchicon(2);
}
},
extractContent: function (s) {
var span = document.createElement('span');
span.innerHTML = s;
return span.textContent || span.innerText;
},
badgecount: function (event) {
try {
if (document.getElementById("divchatmain").style.display === 'none') {
var count = document.getElementById('imi-chatbutton').contentWindow.document.getElementById("chattotalbadge").innerText;
if (count == 0 || count == "") {
count = 1;
} else {
count = parseInt(count) + 1;
}
var duplicate = 0;
var innerDivs;
var innerDivsCount = 0;
var refChild;
IMIChatInit.clearmsgcards();
var containerDiv = document.getElementById('chatunread-frame').contentWindow.document.getElementById("msg-list");
if (count > 1) {
innerDivs = containerDiv.getElementsByClassName("msg");
if (innerDivs != undefined) {
innerDivsCount = innerDivs.length;
for (var i = 0; i < innerDivs.length; i++) {
if ("msg_" + event.data.msgtransid == innerDivs[i].id) {
duplicate = 1;
}
}
refChild = innerDivs[0];
}
}
var cardcount;
var checkbadgecount;
if (innerDivs == undefined) {
localStorage.setItem(event.data.fingerprint + "_" + _skey + "_cardcount", 1);
}
document.getElementById('imi-chatbutton').contentWindow.document.getElementById("chattotalbadge").style.display = "block";
if (duplicate == 0) {
if (parseInt(innerDivsCount) == 5) {
containerDiv.removeChild(document.getElementById('chatunread-frame').contentWindow.document.getElementsByClassName('msg')[4]);
containerDiv.removeChild(document.getElementById('chatunread-frame').contentWindow.document.getElementsByClassName('msgclear')[4]);
innerDivsCount = innerDivsCount - 1;
}
if ((parseInt(innerDivsCount) < 1 &&
event.data.badge_type === undefined) || event.data.badge_type === 2 || event.data.badge_type === 3) {
var node = document.createElement("div");
var node1 = document.createElement("div");
var textnode = document.createTextNode(IMIChatInit.extractContent(event.data.msg));
if (textnode.data.length > 45) {
if (event.data.badge_type === undefined || event.data.badge_type === 2) {
textnode.data = textnode.data.substr(0, 45) + "...";
} else {
textnode.data = textnode.data;
}
}
node.className = "msg";
node.style = "cursor:pointer;";
node1.className = "msgclear";
node.id = "msg_" + event.data.msgtransid; // Create a text node
node1.id = "msgclear_" + event.data.msgtransid;
node1.style = "clear:both;";
node.addEventListener("click", function () {
window.parent.postMessage({
action: 'openchat',
threadid: event.data.threadid,
proactive_id: event.data.proactive_id
}, '*');
});
node1.addEventListener("click", function () {
window.parent.postMessage({
action: 'openchat',
threadid: event.data.threadid,
proactive_id: event.data.proactive_id
}, '*');
});
if (event.data.msg_from !== undefined && event.data.msg_from !== "") {
var span = document.createElement("span");
//var span
span.innerHTML = '';
node.appendChild(span);
} else if (event.data.msg_from === undefined || event.data.msg_from == "") {
var span = document.createElement("span");
//var span
span.innerHTML = '';
node.appendChild(span);
}
node.appendChild(textnode);
var height = document.getElementsByClassName('main-unreadchat-cont')[0].style.height;
if (height == "") {
height = 70;
}
if (innerDivsCount == 0) {
height = document.getElementsByClassName('main-unreadchat-cont')[0].style.height = "150px";
}
/* else if (innerDivsCount == 2) {
height = document.getElementsByClassName('main-unreadchat-cont')[0].style.height = "150px";
}
else if (innerDivsCount > 2) {*/
else {
document.getElementsByClassName('main-unreadchat-cont')[0].style.height = parseInt(height) + 60 + "px";
}
var referenceNode = document.getElementById('chatunread-frame').contentWindow.document.getElementById("msg-list"); // document.querySelector('#some-element');
if (innerDivsCount == 0) {
referenceNode.appendChild(node);
referenceNode.appendChild(node1);
} else {
referenceNode.insertBefore(node, refChild);
referenceNode.insertBefore(node1, refChild);
if ((window.innerHeight + 100) < (document.getElementsByClassName("main-unreadchat-cont")[0].style.height)) {
var frame = document.getElementById('chatunread-frame');
var c = frame.contentDocument || frame.contentWindow.document;
c.getElementsByTagName("body")[0].offsetHeight = '80%';
c.getElementsByTagName("body")[0].style.overflow = "auto";
}
}
if (event.data.badge_type === 3) {
document.getElementsByClassName("main-unreadchat-cont")[0].style.height = "100%";
var frame = document.getElementById('chatunread-frame');
var c = frame.contentDocument || frame.contentWindow.document;
c.getElementsByClassName("msg")[0].style.maxHeight = "unset";
var frameheight = c.getElementsByTagName("body")[0].offsetHeight;
document.getElementsByClassName("main-unreadchat-cont")[0].style.height = frameheight + "px";
}
} else if (event.data.badge_type === 4) {
var fullscreen_modal = document.getElementById('imichat-fullscreen-modal');
fullscreen_modal.className = 'imichat-fullscreen-modal imichat-open';
fullscreen_modal.contentWindow.postMessage({
action: 'bind_data',
proactive_id: event.data.proactive_id,
threadid: event.data.threadid,
msg_from: event.data.msg_from,
msg: event.data.msg,
btn_chat_now_open: IMILocalisation.getValue(_IMIchat_widget_lang, "proactive_poupup_chat_now_button", "Chat Now"),
btn_chat_now_close: IMILocalisation.getValue(_IMIchat_widget_lang, "proactive_poupup_close_button", "Close")
}, "*");
}
cardcount = parseInt(localStorage.getItem(event.data.fingerprint + "_" + _skey + "_cardcount")) + 1;
localStorage.setItem(event.data.fingerprint + "_" + _skey + "_cardcount", cardcount);
localStorage.setItem("fingerprint", event.data.fingerprint);
localStorage.setItem(event.data.fingerprint + "_" + _skey + "_badgecount", count);
document.getElementById('imi-chatbutton').contentWindow.document.getElementById("chattotalbadge").innerText = count;
if (count > 0) {
//to do for ENG-1082 get localisation for chat button tooltip with count
document.getElementById('imi-chatbutton').contentWindow.document.getElementById("spnwidgetlbtn").setAttribute("aria-label", "Chat button , " + count + " unread messages"); //ENG-1082
}
else {
document.getElementById('imi-chatbutton').contentWindow.document.getElementById("spnwidgetlbtn").setAttribute("aria-label", "Chat button , " + count + " unread messages"); //ENG-1082
}
}
document.getElementById('chatunread-frame').contentWindow.document.getElementById("ancclearcards").style.display =
(event.data.badge_type === undefined || (event.data.badge_type === 2 || event.data.badge_type === 3)) ? "block" : "none";
}
} catch (e) {
console.log("badgecount:" + e.msg);
}
},
message: function (event) {
try {
if (event.data.action != null) {
if (event.data.action == 'openchat') {
IMIChatInit.openchat(event);
}
if (event.data.action == 'badgecount') {
IMIChatInit.badgecount(event);
}
if (event.data.action == 'chatswitchicon') {
IMIChatInit.chatswitchicon(); //event
}
if (event.data.action == 'imichat_custom_chat_fields') {
if (event.data.type == 'add') {
if (_IMIchat_callback_dic['imichat-widget:custom_chat_fields_init'] !== undefined) {
_IMIchat_callback_dic['imichat-widget:custom_chat_fields_init'](event.data.response);
}
}
else if (event.data.type == 'update') {
if (_IMIchat_callback_dic['imichat-widget:custom_chat_fields_update'] !== undefined) {
_IMIchat_callback_dic['imichat-widget:custom_chat_fields_update'](event.data.response);
}
}//event
}
if (event.data.action == 'loadstyles') {
IMIChatInit.loadJQuery(_domain_name, function () {
IMIChatInit.loadwidgetStyles(event.data.message);
try {
if (event.data.message != null) {
if (_IMIchat_callback_dic['imichat-widget:ready'] !== undefined) {
_IMIchat_callback_dic['imichat-widget:ready'](_attr_key);
console.log("imichat-widget:ready fired");
}
//eval('imichatWidgetLoaded();');
if (_IMIchat_callback_dic['imichat-widget:custom_chat_fields_init'] !== undefined) {
_IMIchat_callback_dic['imichat-widget:custom_chat_fields_init']();
}// debugger;
var widget_data = JSON.parse(event.data.message);
hdr_bfp = widget_data.hdr_bfp;
hdr_xtoken = widget_data.hdr_xtoken;
hdr_tid = widget_data.hdr_tid;
}
} catch (e) {
}
IMIChatInit.LaunchProactiveMsgManager(_domain_name, function () {
});
IMIChatInit.handleAbandonedChats();
});
}
if (event.data.action == 'closemodelpopup') {
document.getElementById('imichat-fullscreen-modal').className = 'imichat-fullscreen-modal';
document.getElementById('imichat-fullscreen-modal').setAttribute('tabindex', '-1');
document.getElementById('imichat-fullscreen-modal').setAttribute('aria-hidden', 'true');
}
if (event.data.action == 'setsession') {
sessionStorage.setItem(event.data.key, event.data.value);
}
if (event.data.action == 'setlocal') {
localStorage.setItem(event.data.key, event.data.value);
}
if (event.data.action == 'browserstorage') {
document.getElementById("divicw").innerHTML = "
We use cookies to enable best chat experience. Follow these directions to re-enable cookies specific to your browser type or re-open this website in a cookie-enabled browser.
";
console.log("Local storage not supported");
}
}
} catch (e) { }
},
resize: function () {
try {
var destination = document.getElementById('iframechatwindow').contentWindow;
destination.postMessage({
action: 'resize',
width: window.outerWidth //window.innerWidth//screen.width // document.body.clientWidth
}, "*");
IMIGeneral.checkmobile();
} catch (e) { }
},
LaunchProactiveMsgManager: function (domainName, callback) {
try {
var widget_styles = localStorage.getItem("style_" + document.getElementById("divicw").getAttribute("data-bind") + "_" + window.location.hostname);
if (widget_styles == null && !JSON.parse(widget_styles).enable_proactive) {
callback();
return;
}
var body = document.getElementsByTagName('body')[0];
var script = document.createElement('script');
script.type = 'text/javascript';
script.src = IMIChatInit.domainName() + '/js/proactive-msg-manager.js';
body.appendChild(script);
script.addEventListener('load', function (event) {
console.log('proactive manager loaded;');
var destination = document.getElementById('iframechatwindow').contentWindow;
destination.postMessage({
action: 'proactive-manager-loaded',
attrkey: document.getElementById("divicw").getAttribute("data-bind"),
host: window.location.hostname
}, "*");
callback();
});
} catch (e) {
console.log("LaunchProactiveMsgManager:" + e.msg);
}
},
processAbandonedChats: function (type) {
if (!imichatwidget.hasInitiatedChat()) {
return;
}
var browser_fingerprint = localStorage.getItem("fingerprint");
var url = IMIGeneral.profileUrl() + "livechats/" + _attr_key + "/customers/" + browser_fingerprint + "/abandoned?host=" + window.document.URL;
url = url + "&type=" + type;
var body = JSON.stringify({
"is_reloaded": false,
"is_closechat": true
});
var headers = {
'type': 'application/json',
'fpid': hdr_bfp,
'Tid': hdr_tid,
'X-Token': hdr_xtoken
};
var blob = new Blob([body], headers);
navigator.sendBeacon(url);
},
handleAbandonedChats: function () {
// Attach the event keypress to exclude the F5 refresh
//jQuery(window).on('keydown', function (e) {
window.addEventListener('keydown', function (e) {
if (e.keyCode == 116) {
_IMIchat_IsValidNavigation = true;
}
});
window.addEventListener("beforeunload", function (e) {
sessionStorage.setItem(_attr_key + "_imichat-reload-check", document.referrer);
console.log(document.referrer);
//sessionStorage.setItem("imi_tabid", Math.random().toString(16).slice(2));
if (_IMIchat_IsValidNavigation !== undefined && !_IMIchat_IsValidNavigation) {
IMIChatInit.processAbandonedChats("unload");
}
});
if (window.performance.navigation.type == 1) {
IMIChatInit.processAbandonedChats("load");
}
},
loadJQuery: function (domainName, callback) {
if (typeof (jQuery) !== 'undefined') {
callback();
return;
}
var body = document.getElementsByTagName('body')[0];
var script = document.createElement('script');
script.type = 'text/javascript';
script.src = domainName + '/js/jquery.min.js';
body.appendChild(script);
script.addEventListener('load', function (event) {
callback();
});
return;
},
on: function (func_name, callback) {
if (typeof callback != 'function') {
console.error('function was expected.');
return;
}
switch (func_name) {
case 'imichat-widget:ready':
_IMIchat_callback_dic['imichat-widget:ready'] = callback;
break;
}
},
checklocalStorage: function () {
var test = 'test';
try {
localStorage.setItem(test, test);
localStorage.removeItem(test);
return true;
} catch (e) {
return false;
}
},
call_previous_chats: function () {
try {
var destination = document.getElementById('iframechatwindow').contentWindow;
msg = {
"action": "showiframe",
"host": window.location.hostname,
"chatmobile": ((navigator.userAgent.indexOf("Mobile")) != -1) ? "1" : "0"
};
destination.postMessage(msg, domainUrl);
} catch (e) {
}
},
check_clear_session_chats: function () {
if (document.referrer == sessionStorage.getItem(_attr_key + "_imichat-reload-check")) {
return false;
}
else if (sessionStorage.getItem(_attr_key + "_imichat-reload-check") == undefined) {
return true;
}
else {
console.log("Hey, Thanks for visiting again");
return false;
}
}
};
}();
if (IMIChatInit.checklocalStorage()) {
IMIChatInit.init();
} else {
document.getElementById("divicw").innerHTML = "
We use cookies to enable best chat experience. Follow these directions to re-enable cookies specific to your browser type or re-open this website in a cookie-enabled browser.
";
console.log("Local storage not supported");
}
var imichatwidget = {
// get hasInitiatedConversation() {
// if (sessionStorage.getItem("imichat_hasinitconvexist") == null)
// return false;
// if (sessionStorage.getItem("imichat_hasinitconvexist") == "1") {
// return true;
// } else {
// return false;
// }
// },
hasInitiatedChat: function () {
if (sessionStorage.getItem("imichat_hasinitconvexist") == null)
return false;
if (sessionStorage.getItem("imichat_hasinitconvexist") == "1") {
return true;
} else {
return false;
}
},
show: function () {
//$("#divicw").show();return;
document.getElementById("divicw").style.display = 'block';
},
hide: function () {
// $("#divicw").hide();return;
document.getElementById("divicw").style.display = 'none';
},
/* test:function()
{
if(sessionStorage.getItem("imichat_hasinitconvexist")==null)
return false;
if(sessionStorage.getItem("imichat_hasinitconvexist")=="1")
{
return true;
}
else
{
return false;
}
},*/
maximizeWindow: function () {
IMIChatInit.chatswitchicon(1);
IMIChatInit.resize();
IMIChatInit.call_previous_chats();
return;
},
minimizeWindow: function () {
return IMIChatInit.chatswitchicon(0);
},
init: function (jsondata, callback) {
if (typeof callback != 'function') {
console.error('function was expected.');
return;
}
var destination = document.getElementById('iframechatwindow').contentWindow;
destination.postMessage({
action: 'imichat_custom_chat_fields',
data: jsondata,
type: 'add'
}, '*');
_IMIchat_callback_dic['imichat-widget:custom_chat_fields_init'] = callback;
},
update: function (jsondata, callback) {
if (typeof callback != 'function') {
console.error('function was expected.');
return;
}
var destination = document.getElementById('iframechatwindow').contentWindow;
destination.postMessage({
action: 'imichat_custom_chat_fields',
data: jsondata,
type: 'update'
}, '*');
_IMIchat_callback_dic['imichat-widget:custom_chat_fields_update'] = callback;
},
on: function (func_name, callback) {
if (typeof callback != 'function') {
console.error('function was expected.');
return;
}
switch (func_name) {
case 'imichat-widget:ready':
_IMIchat_callback_dic['imichat-widget:ready'] = callback;
break;
}
}
};
/*
function imichatWidgetLoaded(){imi
imichatwidget.maximizeWindow();
}*/