PageSourceSearch

https://website.thatsbiz.com/wp-content/plugins/listbuildingbot/public/js/listbuildingbot-public.js?ver=4083

js thatsbiz.com collected 2026-10-04 12:41:39 UTC 68,178 bytes, 2,268 lines download raw bytes

1
2var lbb_last_chat = {};
3var lbb_prev_message = 0;
4var lbb_first_question = 0;
5var lbb_first_opened = 0;
6/*
7const inactivityThreshold = 10000;
8
9let inactivityTimer;
10
11function startInactivityTimer() {
12	console.log("Starting inactivity timer");
13  inactivityTimer = setTimeout(closeChat, inactivityThreshold);
14}
15
16// Function to reset the inactivity timer
17function resetInactivityTimer() {
18  clearTimeout(inactivityTimer);
19  startInactivityTimer();
20}
21
22// Function to close the chat
23function closeChat() {
24  console.log("Chat closed due to inactivity");
25}
26
27function onMessageReceived() {
28  resetInactivityTimer();
29}*/
30
31let lbb_inactive_timer;
32let lbb_admin_timer;
33var isAdminBusy = false;
34var isUserBusy = false;
35
36let mediaRecorder;
37let audioChunks = [];
38let startTime; // Variable to store the start time of recording
39let timerInterval; // Variable to store the timer interval
40
41function lbb_updateTimer() {
42	const elapsedTime = Math.floor((Date.now() - startTime) / 1000); // Calculate elapsed time in seconds
43	const minutes = Math.floor(elapsedTime / 60);
44	const seconds = elapsedTime % 60;
45	const formattedTime = `${minutes.toString().padStart(2, '0')}:${seconds.toString().padStart(2, '0')}`;
46	jQuery('#recordingTimer').text(formattedTime);
47}
48
49function lbb_init_audio() {
50    navigator.mediaDevices.getUserMedia({ audio: true })
51        .then(function(stream) {
52            mediaRecorder = new MediaRecorder(stream);
53
54            // Event handler when data is available
55            mediaRecorder.ondataavailable = function(event) {
56                if (event.data.size > 0) {
57                    audioChunks.push(event.data);
58                }
59            };
60
61			mediaRecorder.onstart = function() {
62                startTime = Date.now();
63                timerInterval = setInterval(lbb_updateTimer, 1000);
64            };
65
66            // Event handler when recording stops
67            mediaRecorder.onstop = function() {
68				clearInterval(timerInterval); 
69                const audioBlob = new Blob(audioChunks, { type: 'audio/wav' });
70                const audioUrl = URL.createObjectURL(audioBlob);
71
72                // Display the recorded audio
73                //jQuery('#audioPlayer').attr('src', audioUrl);
74                jQuery('#audioPlayer').css('display', 'block');
75            };
76
77            jQuery('#startRecording').on('click', function() {
78                audioChunks = [];
79                mediaRecorder.start();
80                jQuery('#startRecording').hide();
81                jQuery('.lbb-recording-contorl-buttons-container').show();
82            });
83
84			jQuery('#cancelRecording').on('click', function() {
85                if (mediaRecorder.state === 'recording') {
86                    mediaRecorder.stop();
87					jQuery('#startRecording').show();
88                	jQuery('.lbb-recording-contorl-buttons-container').hide();
89					jQuery('#recordingTimer').html('00:00');
90                }
91            });
92
93            jQuery('#stopRecording').on('click', function() {
94                mediaRecorder.stop();
95                //jQuery('#startRecording').show();
96                jQuery('.lbb-recording-contorl-buttons-container').hide();
97
98				setTimeout(function() {
99
100					// Convert audioChunks to a Blob and set it as the input value
101					const audioBlob = new Blob(audioChunks, { type: 'audio/wav' });
102					const audioDataInput = jQuery('#audioData');
103					audioDataInput.val(audioBlob);
104
105					const formData = new FormData();
106					formData.append('audio', audioBlob);
107
108					jQuery.ajax({
109						type: 'POST',
110						url: listbuildingbot.ajax_url+'?action=lbb_handle_audio_upload',
111						data: formData,
112						processData: false,
113						contentType: false,
114						success: function(response) {
115						
116							var response = JSON.parse(response);
117							const attachment = response.audio;
118							var attachment_type = response.type;
119
120							message_meta = {};
121							message_meta['audio'] = attachment;
122							message_meta['attachment_type'] = attachment_type;
123							message_meta['name'] = name;
124						
125							// Display the uploaded image in the chat interface
126							//const imgElement = `<img src="`+imageUrl+`" alt="Uploaded Image" />`;
127							var html = response.download_box;
128							//jQuery('#chat-messages').append(imgElement);
129
130							var current_action_id = lbb_last_chat.action_id;
131							var next_action_id = lbb_last_chat.next_question_id;
132							var conversation_id = getConversationID();
133							type = lbb_last_chat.type;
134							jQuery('#lbb-audio-question-form').remove();
135							lbbHandleUserResponse(html,false);
136							scrollToBottom();
137							lbbSubmitUserReply({
138								message : '',
139								message_meta : message_meta,
140								conversation_id : conversation_id,
141								current_action_id: current_action_id,
142								next_action_id : next_action_id,
143								chatflow_id : jQuery('#lbb_chatflow_id').val()
144							});
145						}
146					});
147				}, 1000);
148
149            });
150        })
151        .catch(function(error) {
152            console.error('Error accessing microphone:', error);
153        });
154}
155
156function lbb_chat_activity_timer(){	
157	
158	if(lbb_livechat_options == 'ajax_based'){
159		lbb_inactive_timer = setInterval(function() {
160
161			var con_id = getConversationID();
162			jQuery.ajax({
163				url: listbuildingbot.ajax_url,
164				type: 'POST',
165				async: true,
166				data: {
167					action: 'lbb_get_last_message_from',
168					conversation_id : con_id,
169					
170				},
171				success: function(response) {
172					if(response) {
173						userT = response;
174	
175						if(userT == 'admin'){
176							var con_id = getConversationID();
177							jQuery.ajax({
178								url: listbuildingbot.ajax_url,
179								type: 'POST',
180								data: {
181									action: 'lbb_check_last_message',
182									conversation_id : con_id,
183									type : userT,
184									idle_time : userTimer
185								},
186								success: function(response) {
187									if(response == 'idle') {
188										if(!isAdminBusy){
189											console.log('user Idle');
190											lbb_reset_timer();
191											lbb_conversation_end();
192											jQuery('.lbb-typing').addClass('lbb-user-input-hide');	
193										}
194									}
195								}
196							});
197						}else if(userT == 'user'){
198							var con_id = getConversationID();
199							jQuery.ajax({
200								url: listbuildingbot.ajax_url,
201								type: 'POST',
202								data: {
203									action: 'lbb_check_last_message',
204									conversation_id : con_id,
205									type : userT,
206									idle_time : adminTimer
207								},
208								success: function(response) {
209									if(response == 'idle') {
210										
211										console.log('Admin Idle');
212										if(!jQuery('.lbb-admin-response').hasClass('lbb-conversation-admin-busy')){
213											lbbCustomReponse(adminBusyMessage,'lbb-conversation-admin-busy');
214										}
215										lbb_reset_timer();
216										isAdminBusy = true;
217										//lbb_conversation_end();
218	
219									}
220								}
221							});
222						}
223					}
224				}
225			});
226		}, 60000);
227	}else{
228
229		lbb_inactive_timer = setInterval(function() {
230		
231			var userT = lbb_get_last_message_from_user_firebase();
232	
233			//console.log('Active timer....');
234			console.log(userT);
235	
236			if(userT == 'admin'){
237				var isIdle = lbb_check_last_message_from_firebase('user',userTimer);
238				if(isIdle){
239					if(!isAdminBusy){
240						console.log('user Idle');
241						lbb_reset_timer();
242						lbb_conversation_end();
243						jQuery('.lbb-typing').addClass('lbb-user-input-hide');	
244					}
245				}else{
246					console.log('No Idle');
247				}
248			}else if(userT == 'user'){
249				var isIdle = lbb_check_last_message_from_firebase('admin',adminTimer);
250				if(isIdle){
251					console.log('Admin Idle');
252					if(!jQuery('.lbb-admin-response').hasClass('lbb-conversation-admin-busy')){
253					lbbCustomReponse(adminBusyMessage,'lbb-conversation-admin-busy');
254					}
255					lbb_reset_timer();
256					isAdminBusy = true;
257					//lbb_conversation_end();
258				}else{
259					console.log('No Idle');
260				}
261			}
262	
263		}, 60000);
264
265	}
266  
267}
268
269
270function lbb_chat_activity_timer_ajax(){
271
272	if(lbb_livechat_options == 'firebase_based'){
273		return false;
274	}
275
276	lbb_inactive_timer = setInterval(function() {
277
278		var con_id = getConversationID();
279		jQuery.ajax({
280			url: listbuildingbot.ajax_url,
281			type: 'POST',
282			async: true,
283			data: {
284				action: 'lbb_get_last_message_from',
285				conversation_id : con_id,
286				
287			},
288			success: function(response) {
289				if(response) {
290					userT = response;
291
292					if(userT == 'admin'){
293						var con_id = getConversationID();
294						jQuery.ajax({
295							url: listbuildingbot.ajax_url,
296							type: 'POST',
297							data: {
298								action: 'lbb_check_last_message',
299								conversation_id : con_id,
300								type : userT,
301								idle_time : userTimer
302							},
303							success: function(response) {
304								if(response == 'idle') {
305									if(!isAdminBusy){
306										console.log('user Idle');
307										lbb_reset_timer();
308										lbb_conversation_end();
309										jQuery('.lbb-typing').addClass('lbb-user-input-hide');	
310									}
311								}
312							}
313						});
314					}else if(userT == 'admin'){
315						var con_id = getConversationID();
316						jQuery.ajax({
317							url: listbuildingbot.ajax_url,
318							type: 'POST',
319							data: {
320								action: 'lbb_check_last_message',
321								conversation_id : con_id,
322								type : userT,
323								idle_time : adminTimer
324							},
325							success: function(response) {
326								if(response == 'idle') {
327									
328									console.log('Admin Idle');
329									if(!jQuery('.lbb-admin-response').hasClass('lbb-conversation-admin-busy')){
330										lbbCustomReponse(adminBusyMessage,'lbb-conversation-admin-busy');
331									}
332									lbb_reset_timer();
333									isAdminBusy = true;
334									//lbb_conversation_end();
335
336								}
337							}
338						});
339					}
340				}
341			}
342		});
343		
344		/*var userT = lbb_get_last_message_from_user_firebase();
345
346		//console.log('Active timer....');
347		console.log(userT);
348
349		if(userT == 'admin'){
350			var isIdle = lbb_check_last_message_from_firebase('user',userTimer);
351			if(isIdle){
352				if(!isAdminBusy){
353					console.log('user Idle');
354					lbb_reset_timer();
355					lbb_conversation_end();
356					jQuery('.lbb-typing').addClass('lbb-user-input-hide');	
357				}
358			}else{
359				console.log('No Idle');
360			}
361		}else if(userT == 'user'){
362			var isIdle = lbb_check_last_message_from_firebase('admin',adminTimer);
363			if(isIdle){
364				console.log('Admin Idle');
365				if(!jQuery('.lbb-admin-response').hasClass('lbb-conversation-admin-busy')){
366				lbbCustomReponse(adminBusyMessage,'lbb-conversation-admin-busy');
367				}
368				lbb_reset_timer();
369				isAdminBusy = true;
370				//lbb_conversation_end();
371			}else{
372				console.log('No Idle');
373			}
374		}*/
375
376	}, 60000);
377  
378}
379
380
381function lbb_check_last_message(conversation_id,type, idle_time){
382	
383	var con_id = getConversationID();
384	jQuery.ajax({
385        url: listbuildingbot.ajax_url,
386        type: 'POST',
387        data: {
388            action: 'lbb_check_last_message',
389            conversation_id : con_id,
390			type : type,
391			idle_time : idle_time
392        },
393        success: function(response) {
394			if(response) {
395
396			}
397		}
398	});
399}
400
401function lbb_conversation_end(){
402
403	var con_id = getConversationID();
404	jQuery.ajax({
405        url: listbuildingbot.ajax_url,
406        type: 'POST',
407        data: {
408            action: 'sbl_end_conversation',
409            conversation_id : con_id
410        },
411        success: function(response) {
412			if(response.success) {
413				if(!jQuery('.lbb-admin-response').hasClass('lbb-conversation-end-msg')){
414
415					var start = `<div class="start-new-conversation-div">
416						<a href="javascript:void(0)" class="lbb-start-new-conversation">`+lbb_start_button+`</a>
417						</div>
418						`;
419					lbbCustomReponse(response.data.message, 'lbb-conversation-end-msg',start);
420				}
421			}else{
422
423			}
424		}
425	});
426}
427
428function lbb_reset_timer() {
429	clearInterval(lbb_inactive_timer);
430}
431
432function lbbHandleDynamicMessage(messages){
433	if(messages.length > 0){
434		jQuery.each(messages, function(index, message) {
435			message = message.replace(/\\/g, '');
436			lbbCustomReponse(message, 'lbb-admin-response');
437		});
438	}
439}
440
441function lbbHandleExtraMessages(messages,cls = ''){
442	if(messages.length > 0){
443		jQuery.each(messages, function(index, message) {
444			message = message.replace(/\\/g, '');
445			lbbCustomReponse(message, 'lbb-admin-response '+cls);
446		});
447	}
448}
449
450function lbbhandleAdminFirstMessage(message,action_data){
451	message = message.replace('{{image}}', adminImg);
452	message = message.replace('{{name}}', lbbAdminName);
453	message = message.replace('{{prev_id}}', lbb_prev_message);
454
455	if(action_data.field_html != undefined){
456		//message = message.replace('{{inline_field}}', action_data.field_html);
457		message = message.replace('{{inline_field}}', '');
458	}else{
459		message = message.replace('{{inline_field}}', '');
460	}
461
462	if(action_data.time_format != undefined){
463		message = message.replace('{{time}}', action_data.time_format);
464	}else{
465		message = message.replace('{{time}}', getCurrentTime());
466	}
467	message = message.replace('{{chatflow_id}}', chatflow_id);
468
469	jQuery('.lbb-chat-first-question-inner').append(message);
470	jQuery('.lbb-chat-first-question-main').show();
471}	
472
473function lbbHandleAdminResponse(message,action_data = []){
474
475	jQuery('.Messages_list .lbb-agent-typing').remove();
476	var messageTemplate = jQuery('#lbb-agent-response').html();
477
478	var hide_auth = false;
479	if(jQuery('.Messages_list .lbb-message').last().hasClass('lbb-admin-response')){
480		jQuery('.Messages_list .lbb-message').last().addClass('lbb-field-type-'+action_data.type);
481		hide_auth = true;
482	}
483
484	message = message.replace('{{image}}', adminImg);
485	message = message.replace('{{name}}', lbbAdminName);
486	message = message.replace('{{prev_id}}', lbb_prev_message);
487	
488	if(action_data.field_html != undefined){
489		//message = message.replace('{{inline_field}}', action_data.field_html);
490		message = message.replace('{{inline_field}}', '');
491	}else{
492		message = message.replace('{{inline_field}}', '');
493	}
494
495	if(action_data.time_format != undefined){
496		message = message.replace('{{time}}', action_data.time_format);
497	}else{
498		message = message.replace('{{time}}', getCurrentTime());
499	}
500	message = message.replace('{{chatflow_id}}', chatflow_id);
501
502	/*if(action_data.field_html != undefined){
503		message = message + action_data.field_html;
504	}*/
505
506	jQuery('.Messages_list').append(message);
507
508	if(action_data.field_html != undefined){
509		jQuery('.Messages_list .lbb-message').last().find('.lbb-text').append(action_data.field_html);
510		if(jQuery(".lbb-datepicker").length > 0){
511			console.log(action_data);
512			/*jQuery("#lbb-datepicker").flatpickr({
513				dateFormat: action_data.date_format,
514			});*/
515
516			var lbbdate = {
517				'Y/m/d' : 'yy/mm/dd',
518				'd/m/Y' : 'dd/mm/yy',
519				'm/d/y' : 'mm/dd/yy',
520			}
521
522			jQuery( ".lbb-datepicker" ).datepicker({
523				dateFormat: lbbdate[action_data.date_format],
524				firstDay: 1,
525				beforeShow: function(input, inst) {
526					inst.dpDiv.removeClass('lbb-datepicker-popup');
527					inst.dpDiv.addClass('lbb-datepicker-popup');
528				}
529			});
530
531			jQuery(".lbb-datepicker").on("change",function(){
532				var $me = jQuery(this);
533				$selected = $me.val();
534				jQuery(".lbb-datepicker").val($selected);
535			});
536			
537		}
538	}
539
540	if(action_data.type == 'audio'){
541		lbb_init_audio();
542	}
543
544	if((jQuery(".lbb-field-type-text input[type='text']").length > 0 || jQuery(".lbb-field-type-text textarea").length > 0) && lbb_emoji_enable == 'yes'){
545		jQuery(".lbb-field-type-text input[type='text'], .lbb-field-type-text textarea").emojioneArea({
546			search: false,
547			tones: false,
548			filters: {
549				smileys_people: {
550                    icon: "yum",
551                    title: "",
552                    emoji: lbb_emoji
553                },
554				recent : false,
555				objects: false,
556				symbols: false,
557				flags : false,
558				animals_nature : false,
559				food_drink : false,
560				activity : false,
561				travel_places : false,
562			}
563		});
564	}
565
566	if(hide_auth){
567		jQuery('.Messages_list .lbb-message').last().addClass('hide-author');
568	}
569
570	return message;
571}
572
573function lbbHandleEndConversationResponse(message){
574	
575	var messageTemplate = jQuery('#lbb-agent-response').html();
576
577	messageTemplate = messageTemplate.replace('{{reply_buttons}}', '');
578	messageTemplate = messageTemplate.replace('{{skip_buttons}}', '');
579	messageTemplate = messageTemplate.replace('{{message}}', message);
580	messageTemplate = messageTemplate.replace('{{name}}', lbbAdminName);
581	messageTemplate = messageTemplate.replace('{{image}}', adminImg);
582	messageTemplate = messageTemplate.replace('{{inline_field}}', '');
583	
584
585	var messageTemplateObject = jQuery('<div>');
586	messageTemplateObject.html(messageTemplate);
587	messageTemplateObject.find('.lbb-admin-response').addClass('lbb-agent-conversation-ended');
588
589	jQuery('.Messages_list').append(messageTemplateObject.html());
590}
591
592function lbbValidateReponse(message){
593
594	jQuery('.Messages_list .lbb-agent-typing').remove();
595
596	var messageTemplate = jQuery('#lbb-agent-response').html();
597
598	messageTemplate = messageTemplate.replace('{{reply_buttons}}', '');
599	messageTemplate = messageTemplate.replace('{{skip_buttons}}', '');
600	
601	messageTemplate = messageTemplate.replace('{{inline_field}}', '');
602	messageTemplate = messageTemplate.replace('{{pdf_buttons}}', '');
603	messageTemplate = messageTemplate.replace('{{message}}', message);
604	messageTemplate = messageTemplate.replace('{{name}}', lbbAdminName);
605	messageTemplate = messageTemplate.replace('{{image}}', adminImg);
606
607	var messageTemplateObject = jQuery('<div>');
608	messageTemplateObject.html(messageTemplate);
609	messageTemplateObject.find('.lbb-admin-response').addClass('lbb-agent-error');
610
611	jQuery('.Messages_list').append(messageTemplateObject.html());
612	scrollToBottom();
613}
614
615function lbbCustomReponse(message,classname,button = ''){
616
617	jQuery('.Messages_list .lbb-agent-typing').remove();
618
619	var hide_auth = false;
620	if(jQuery('.Messages_list .lbb-message').last().hasClass('lbb-admin-response')){
621		jQuery('.Messages_list .lbb-message').last().addClass('lbb-field-type-extramessage');
622		hide_auth = true;
623	}
624	
625	var messageTemplate = jQuery('#lbb-agent-response').html();
626
627
628	if(button != ''){
629		messageTemplate = messageTemplate.replace('{{reply_buttons}}', button);
630	}else{
631		messageTemplate = messageTemplate.replace('{{reply_buttons}}', '');
632	}
633
634	//messageTemplate = messageTemplate.replace('{{reply_buttons}}', '');
635	messageTemplate = messageTemplate.replace('{{pdf_buttons}}', '');
636	messageTemplate = messageTemplate.replace('{{skip_buttons}}', '');
637	messageTemplate = messageTemplate.replace('{{inline_field}}', '');
638	messageTemplate = messageTemplate.replace('{{message}}', message);
639	messageTemplate = messageTemplate.replace('{{name}}', lbbAdminName);
640	messageTemplate = messageTemplate.replace('{{image}}', adminImg);
641	messageTemplate = messageTemplate.replace('{{time}}', getCurrentTime());
642
643	var messageTemplateObject = jQuery('<div>');
644	messageTemplateObject.html(messageTemplate);
645	messageTemplateObject.find('.lbb-admin-response').addClass(classname);
646
647	jQuery('.Messages_list').append(messageTemplateObject.html());
648	scrollToBottom();
649
650	if(hide_auth){
651		jQuery('.Messages_list .lbb-message').last().addClass('hide-author');
652	}
653}
654
655function slgHandleTyping(){
656	var messageTemplate = jQuery('#lbb-agent-response').html();
657
658	var typingM = `<div class="lbb-typing-animation"> <div class="lbb-dot-container"> <div class="lbb-dot"></div> <div class="lbb-dot"></div> <div class="lbb-dot"></div> </div> </div>`;
659
660	messageTemplate = messageTemplate.replace('{{reply_buttons}}', '');
661	messageTemplate = messageTemplate.replace('{{skip_buttons}}', '');
662	messageTemplate = messageTemplate.replace('{{pdf_buttons}}', '');
663	messageTemplate = messageTemplate.replace('{{inline_field}}', '');
664	messageTemplate = messageTemplate.replace('{{message}}', typingM);
665	messageTemplate = messageTemplate.replace('{{name}}', lbbAdminName);
666	messageTemplate = messageTemplate.replace('{{image}}', adminImg);
667	messageTemplate = messageTemplate.replace('{{time}}', getCurrentTime());
668
669	var messageTemplateObject = jQuery('<div>');
670	messageTemplateObject.html(messageTemplate);
671	messageTemplateObject.find('.lbb-admin-response').addClass('lbb-agent-typing');
672
673	setTimeout(() => {
674		jQuery('.Messages_list').append(messageTemplateObject.html());
675		scrollToBottom();
676	}, 1000);
677	
678}
679
680
681
682function lbbHandleUserResponse(message, server,image = '',messageObj = [], classn = '') {
683
684	if(image != ''){
685		var ImgEl = '<div class="quick-reply-useranswer-image"><div class="quick-reply-spn-text">'+message+'</div>'+'<div class="quick-reply-spn-img"><img src="'+image+'" /></div></div>';
686		var imageClass = 'lbb-has-image';
687	}else{
688		var ImgEl = message;
689		var imageClass = 'lbb-has-no-image';
690	}
691
692	imageClass = imageClass + ' ' + classn;
693
694	if(!server){
695		var messageTemplate = jQuery('#lbb-user-response').html();
696		messageTemplate = messageTemplate.replace('{{message}}', ImgEl);
697		messageTemplate = messageTemplate.replace('{{name}}', lbbUserName);
698	}else{
699		var messageTemplate = message;
700		messageTemplate = messageTemplate.replace('{{name}}', lbbUserName);
701	}
702	
703	messageTemplate = messageTemplate.replace('{{image}}', userImg);
704	
705	if(messageObj.time_format != undefined){
706		messageTemplate = messageTemplate.replace('{{time}}', messageObj.time_format);
707	}else{
708		messageTemplate = messageTemplate.replace('{{time}}', getCurrentTime());
709	}
710
711	var messageTemplateObject = jQuery('<div>');
712	messageTemplateObject.html(messageTemplate);
713	messageTemplateObject.find('.lbb-message-user').addClass(imageClass);
714	jQuery('.Messages_list').append(messageTemplateObject.html());
715
716	return messageTemplateObject.html();
717}
718
719function scrollToBottom() {
720    var chatBox = document.getElementById("chat-messages");
721    chatBox.scrollTop = chatBox.scrollHeight;
722}
723
724function setCookie(name, value, days) {
725    var expires = "";
726    if (days) {
727        var date = new Date();
728        date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
729        expires = "; expires=" + date.toUTCString();
730    }
731    document.cookie = name + "=" + (value || "") + expires + "; path=/";
732}
733
734function lbbDeleteCookie(cookieName) {
735	// Set the expiration date in the past
736	document.cookie = cookieName + "=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;";
737}
738
739function getCookie(name) {
740    var value = "; " + document.cookie;
741    var parts = value.split("; " + name + "=");
742    if (parts.length === 2) return parts.pop().split(";").shift();
743    return null;
744}
745
746function lbbcloseconversation(conversation_id){
747
748	jQuery.ajax({
749        url: listbuildingbot.ajax_url,
750        type: 'POST',
751        data: {
752            action: 'sbl_end_conversation',
753            conversation_id : conversation_id
754        },
755        success: function(response) {
756
757		}
758	});
759
760}
761
762function lbbStartConversation(conversation_id,isRestart = false) {
763
764	if(chat_mode == 'live'){
765		lbb_send_event();
766		jQuery('#lbb-chat-main-wrapper').removeClass('lbb-chat-user-input');
767	}else{
768		if(jQuery('#lbb-chat-main-wrapper').hasClass('lbb-chattype-inline') && jQuery('.lbb_allow_bot_to_trained').val() < 1){
769			jQuery('.lbb-typing').addClass('lbb-user-input-hide');
770		}
771	}
772
773	var lbb_chatflow_id = jQuery('#lbb_chatflow_id').val();
774	var conversation_cookie_key = 'lbbcf_'+lbb_chatflow_id+'_conversation_id';
775	var conversation_cookie_val = '';
776	if (getCookie(conversation_cookie_key)){
777		conversation_cookie_val = getCookie(conversation_cookie_key);
778	}
779	jQuery.ajax({
780        url: listbuildingbot.ajax_url,
781        type: 'POST',
782        data: {
783            action: 'sbl_chatbot_start_conversation',
784			timezone : Intl.DateTimeFormat().resolvedOptions().timeZone,
785            chatflow_id : jQuery('#lbb_chatflow_id').val(),
786            conversation_cookie_val : conversation_cookie_val,
787			lbb_embed : jQuery('#lbb_embed').val(),
788			lbb_current_page:listbuildingbot.lbb_current_page
789        },
790        success: function(response) {
791			jQuery('.lbb-reset-restart-conversation').css('pointer-events', 'auto');
792			if(chat_mode == 'live'){
793				lbb_chat_activity_timer();
794			}
795
796			if(chat_mode == 'bot' && jQuery('#lbb_allow_bot_to_trained').val() > 0){
797				jQuery('#lbb-app').addClass('lbb-allow-bot-to-trained');
798			}
799
800			var conversation_id = getConversationID();
801            if (response.success) {
802
803				if(response.data.block != undefined){
804					lbb_last_chat = response.data.block;
805				}
806
807				var messages = response.data.conversations;
808				var conversation_id = response.data.conversation_id;
809				var lbb_chatflow_id = jQuery('#lbb_chatflow_id').val();
810				var conversation_cookie_key = 'lbbcf_'+lbb_chatflow_id+'_conversation_id';
811				if (!getCookie(conversation_cookie_key)){
812					setCookie(conversation_cookie_key, conversation_id, 365);
813				}
814				if(messages.length > 0){
815					jQuery.each(messages, function(index, message) {
816
817						if(message.is_bot_response == 1){
818
819							if(message.extra_messages != undefined){
820								lbbHandleExtraMessages(message.extra_messages);
821							}
822
823							message.text = message.text.replace(/\\/g, '');
824							// show all bot messages
825							lbbHandleAdminResponse(message.text, message);
826							
827							if(message.dynamic_messages != undefined){
828								lbbHandleDynamicMessage(message.dynamic_messages);
829							}
830						}else if(message.agent_id > 0){	
831							var img = '';
832							if(message.image != undefined && message.image != ''){
833								img = message.image;
834							}
835							message.text = message.text.replace(/\\/g, '');
836							lbbHandleAdminResponse(message.text,message);
837						}else{
838							var img = '';
839							if(message.image != undefined && message.image != ''){
840								img = message.image;
841							}
842
843							
844							message.text = message.text.replace(/\\/g, '');
845
846							lbbHandleUserResponse(message.text, true,img,message);
847						}
848					});
849				}
850
851				if(response.data.end_status == 1){
852					if(!jQuery('.lbb-admin-response').hasClass('lbb-conversation-end-msg')){
853						var start = `<div class="start-new-conversation-div">
854						<a href="javascript:void(0)" class="lbb-start-new-conversation">`+lbb_start_button+`</a>
855						</div>
856						`;
857						lbbCustomReponse(userTimeoutMessage,'lbb-conversation-end-msg',start);
858					}
859					lbb_reset_timer();
860					jQuery('.lbb-typing').addClass('lbb-user-input-hide');
861				}
862
863				if(chat_mode == 'live'){
864					scrollToBottom();
865					return false;
866				}
867
868				if(response.data.action_required == false){
869					if(response.data.end_status < 1){
870						jQuery.ajax({
871							url: listbuildingbot.ajax_url,
872							type: 'POST',
873							data: {
874								action: 'sbl_chatbot_action',
875								chatflow_id : chatflow_id,
876								conversation_id : conversation_id
877							},
878							success: function(response) {
879				
880								if (response.success) {
881									
882									jQuery('.lbb-back-conversation').hide();
883									
884									
885
886									/*if(response.data.redirect){
887										window.open(response.data.url, "_blank");
888										return false;
889									}*/
890
891									var block = response.data.block;
892									if(lbb_minimized_type_option  == 'show_first_question'){
893										setTimeout(function() {
894											jQuery('.lbb-chat-first-question-inner').html('');
895											lbbhandleAdminFirstMessage(response.data.welcome_block.text,response.data.welcome_block);
896											lbbhandleAdminFirstMessage(block.text,block);
897										},3000);
898									}
899
900									var block = response.data.block;
901									var min = 1;
902									var max = 1000000;
903
904									var randomValue = Math.floor(Math.random() * (max - min + 1)) + min;
905
906									if(block.extra_messages != undefined){
907										lbbHandleExtraMessages(block.extra_messages, 'question-extra-messages-'+randomValue);
908									}
909
910									lbbHandleAdminResponse(block.text,block);
911
912									if(block.dynamic_messages != undefined){
913										lbbHandleDynamicMessage(block.dynamic_messages);
914									}
915
916									if(lbb_is_fresh < 1){
917										var target = document.querySelector(".lbb-admin-response:first-child");
918										if (target) {
919											var scrollTop = target.offsetTop - target.parentElement.offsetTop;
920											target.parentElement.scrollTop = scrollTop - 10;
921										}
922									}else{
923										var target = document.querySelector(".question-extra-messages-"+randomValue);
924										if (target) {
925											var scrollTop = target.offsetTop - target.parentElement.offsetTop;
926											target.parentElement.scrollTop = scrollTop - 10;
927										}else{
928											var target = document.querySelector(".lbb-admin-response:last-child");
929											if (target) {
930												var scrollTop = target.offsetTop - target.parentElement.offsetTop;
931												target.parentElement.scrollTop = scrollTop - 10;
932											}else{
933												scrollToBottom();
934											}
935										}
936									}
937
938									lbb_last_chat = block;
939									if (jQuery.inArray(block.type, ['name', 'text', 'email', 'phone', 'country','url', 'date', 'outcome']) !== -1) {
940										lbbDisableUserInput(false, block.type);
941									}else{
942										lbbDisableUserInput(true);
943									}
944
945								} else {
946									// The AJAX request failed
947									console.error(response.data.message);
948								}
949							},
950							error: function(error) {
951								console.error('AJAX error:', error);
952							}
953						});
954					}
955				}else{
956					
957					if (jQuery.inArray(response.data.block.type, ['name', 'text', 'email', 'phone', 'country','url', 'date', 'outcome']) !== -1) {
958						lbbDisableUserInput(false,response.data.block.type);
959					}else{
960						lbbDisableUserInput(true);
961					}
962				}
963            } else {
964                
965                console.error(response.data.message);
966            }
967        },
968        error: function(error) {
969            console.error('AJAX error:', error);
970        }
971    });
972}
973
974function getConversationID(){
975	
976	var chatflow_id = jQuery('#lbb_chatflow_id').val();
977	var conversation_key = 'lbbcf_'+chatflow_id+'_conversation_id';
978	var conversation_id = getCookie(conversation_key);
979	if(conversation_id && conversation_id != undefined){
980		return conversation_id;
981	}else{
982		return 0;
983	}	
984}
985
986function lbbDisableUserInput(status, type = '') {
987
988	if(status  == true){
989		//jQuery('.lbb-typing').addClass('lbb-user-input-hide');
990	}else{
991		if(type == 'text' || type == 'name' || type == 'email' || type == 'date' || type == 'url' || type == 'phone' || type == 'country' || type == 'outcome'){
992		//jQuery('.lbb-typing').removeClass('lbb-user-input-hide');
993		}else{
994			jQuery('.lbb-typing').removeClass('lbb-user-input-hide');
995		}
996	}
997
998	//var fieldPlaceholder = {'text': 'Enter your message', 'name' : 'Enter your name'};
999
1000	/*if(fieldPlaceholder['lbb_input_placeholder_'+type] != undefined){
1001		var text = fieldPlaceholder['lbb_input_placeholder_'+type]
1002	}else{
1003		var text = 'Enter your message';
1004	}
1005
1006	jQuery('.lbb_input_message').attr('placeholder',text);
1007	jQuery('.lbb_inline_input').attr('placeholder',text);*/
1008	
1009	//jQuery('.lbb_input_message').prop('disabled', status);
1010	//jQuery('.lbb-submit-message').prop('disabled', status);
1011
1012}
1013
1014function lbbSubmitUserReply(data){
1015
1016	data['action'] = 'sbl_chatbot_submit_reply';
1017	var current_action_id = data['current_action_id'];
1018	var next_action_id = data['next_action_id'];
1019	var btnText = data['message'];
1020	jQuery('.lbb-inline-input-field').remove();
1021	slgHandleTyping();
1022	jQuery('.skip-button-div').remove();
1023	jQuery.ajax({
1024		url: listbuildingbot.ajax_url,
1025		type: 'POST',
1026		data: data,
1027		success: function(response) {
1028
1029			if(data.forceType != undefined && data.forceType == 'trainedBot' && response.data.warning == undefined){
1030				setTimeout(() => {
1031					jQuery('.lbb-kb-faq').removeClass('lbb-kb-faq-processing');
1032					jQuery('.Messages_list .lbb-agent-typing').remove();
1033					data = response.data;
1034					if(data.status == 'ok'){
1035						if(data.message != undefined){
1036							var string = data.message;
1037						}else if(data.object != undefined){
1038							var string = data.object;
1039						}
1040						
1041						string.replace(/\\/g, '');
1042						lbbCustomReponse(string);
1043						if(data.limit == undefined){
1044							data.limit = 0;
1045						}
1046						document.cookie = 'lbb_'+jQuery('#lbb_chatflow_id').val()+'_ai_response_limit='+data.limit+'; path=/';
1047						
1048					}else if(data.status == 'error'){
1049
1050						if(data.message != undefined){
1051							var string = data.message;
1052						}else if(data.object != undefined){
1053							var string = data.object;
1054						}
1055						string.replace(/\\/g, '');
1056						lbbCustomReponse(string);
1057						if(data.limit == undefined){
1058							data.limit = 0;
1059						}
1060						document.cookie = 'lbb_'+jQuery('#lbb_chatflow_id').val()+'_ai_response_limit='+data.limit+'; path=/';
1061
1062					}
1063
1064				}, 1500);
1065			}else{
1066
1067				if(response.data.error != undefined && response.data.error == 1){
1068					setTimeout(() => {
1069						lbbValidateReponse(response.data.message);
1070						lbbHandleAdminResponse(lbb_last_chat.text,lbb_last_chat);
1071						scrollToBottom();
1072					}, 1500);
1073				}else if(response.data.warning != undefined && response.data.warning == 1){
1074					lbbCustomReponse(response.data.message,'lbb-live-chat');
1075					lbb_activate_chat_live_mode();
1076					jQuery('.lbb-restart-conversation').hide();
1077				}else{
1078					setTimeout(() => {
1079						//lbb_prev_message = current_action_id;
1080						if(btnText != 'Back'){
1081							jQuery('.lbb-admin-response.lbb-last-back').removeClass('lbb-last-back');
1082						}
1083						lbbCheckAction(current_action_id,next_action_id, btnText);
1084					}, 1500);
1085				}
1086			}	
1087		},
1088		error: function(error) {
1089			console.error('AJAX error:', error);
1090		}
1091	});
1092}
1093
1094function lbbCheckScrollPercentage(percentage) {
1095	jQuery(window).scroll(function () {
1096		var windowHeight = jQuery(window).height();
1097		var scrollHeight = jQuery(document).height();
1098		var scrollPosition = jQuery(window).scrollTop();
1099		
1100		// Calculate the scroll position for the specified percentage
1101		var targetScrollPosition = (scrollHeight - windowHeight) * (percentage / 100);
1102		
1103		if (scrollPosition >= targetScrollPosition) {
1104			// User has scrolled to the specified percentage of the page
1105			
1106			if(jQuery('#lbb-chat-main-wrapper').hasClass('minimized') && jQuery('#lbb-chat-main-wrapper').attr('data-whentoshow') == 'upon_scroll'){
1107				var scroll = jQuery('#lbb-chat-main-wrapper').attr('data-page_scroll');
1108				if(!jQuery('#lbb-chat-main-wrapper').hasClass('lbb-scroll-opened')){
1109					lbbCheckScrollPercentage(scroll);
1110					jQuery('#lbb-chat-main-wrapper').addClass('lbb-scroll-opened');
1111				}
1112			}
1113			
1114			// You can add your desired actions here
1115		}
1116	});
1117}
1118
1119function lbbCheckAction(current_action_id,next_action_id,user_reply,diff_chat_id = 0){
1120
1121	var newtmp_chat_id = chatflow_id;
1122
1123	if(diff_chat_id > 0){
1124		newtmp_chat_id = diff_chat_id;
1125	}
1126
1127	var conversation_id = getConversationID();
1128	jQuery.ajax({
1129        url: listbuildingbot.ajax_url,
1130        type: 'POST',
1131        data: {
1132            action: 'sbl_chatbot_action',
1133            current_action_id : current_action_id,
1134            next_action_id : next_action_id,
1135            userReply:user_reply,
1136			conversation_id : conversation_id,
1137			chatflow_id : newtmp_chat_id,
1138			current_url : current_url
1139        },
1140        success: function(response) {
1141
1142            if (response.success) {
1143
1144				lbb_prev_message = current_action_id;
1145
1146				if(lbb_first_question == 0){
1147					lbb_first_question = lbb_prev_message;
1148					jQuery('.lbb-back-conversation').show();
1149				}else{
1150					if(next_action_id != lbb_first_question){
1151						jQuery('.lbb-back-conversation').show();
1152					}
1153				}
1154
1155
1156
1157				if(response.data.redirect){
1158					lbbCustomReponse(response.data.message);
1159					jQuery('#lbbRedirectLink').attr("href", response.data.url);
1160					//setTimeout(function() {
1161						document.getElementById("lbbRedirectLink").click();
1162					//}, 3000);
1163					return false;
1164				}
1165
1166                var block = response.data.block;
1167				var min = 1;
1168				var max = 1000000;
1169
1170				var randomValue = Math.floor(Math.random() * (max - min + 1)) + min;
1171				if(block.extra_messages != undefined){
1172					lbbHandleExtraMessages(block.extra_messages,'question-extra-messages-'+randomValue);
1173				}
1174
1175                lbbHandleAdminResponse(block.text,block);
1176
1177				if(block.dynamic_messages != undefined){
1178					lbbHandleDynamicMessage(block.dynamic_messages);
1179				}
1180
1181				var end_messsage = response.data.end;
1182				if(end_messsage != undefined && end_messsage != '') {
1183					lbbHandleEndConversationResponse(end_messsage);
1184				}
1185
1186				var target = document.querySelector(".question-extra-messages-"+randomValue);
1187				if (target) {
1188					var scrollTop = target.offsetTop - target.parentElement.offsetTop;
1189					target.parentElement.scrollTop = scrollTop - 10;
1190				}else{
1191					var target = document.querySelector(".lbb-admin-response:last-child");
1192					if (target) {
1193						var scrollTop = target.offsetTop - target.parentElement.offsetTop;
1194						target.parentElement.scrollTop = scrollTop - 10;
1195					}else{
1196						scrollToBottom();
1197					}
1198				}
1199
1200				lbb_last_chat = block;
1201				if (jQuery.inArray(block.type, ['name', 'text', 'email', 'phone', 'country','url', 'date','outcome']) !== -1) {
1202					lbbDisableUserInput(false,block.type);
1203				}else{
1204					lbbDisableUserInput(true);
1205				}
1206
1207            } else {
1208                // The AJAX request failed
1209                console.error(response.data.message);
1210            }
1211        },
1212        error: function(error) {
1213            console.error('AJAX error:', error);
1214        }
1215    });
1216}
1217
1218var lbb_sent_mail = false;
1219
1220function lbbSendMail(){
1221
1222	var conversation_cookie_key = 'lbbcf_'+jQuery('#lbb_chatflow_id').val()+'_conversation_id';
1223	var conversation_cookie_val = '';
1224	if (getCookie(conversation_cookie_key)){
1225		conversation_cookie_val = getCookie(conversation_cookie_key);
1226	}
1227
1228	if(!lbb_sent_mail){
1229
1230		lbb_sent_mail = true;
1231		jQuery.ajax({
1232			url: listbuildingbot.ajax_url,
1233			type: 'POST',
1234			data: {
1235				action: 'lbb_send_bot_mail',
1236				chatflow_id : jQuery('#lbb_chatflow_id').val(),
1237				conversation_cookie_val : conversation_cookie_val,
1238				current_url : current_url
1239			},
1240			success: function(response) {
1241
1242			}
1243		});
1244	}
1245}
1246
1247function startTrainedAiConversation(reset = 0){
1248
1249	var lbb_chatflow_id = jQuery('#lbb_chatflow_id').val();
1250	var conversation_cookie_key = 'lbbcf_'+lbb_chatflow_id+'_conversation_id';
1251	var conversation_cookie_val = '';
1252	if (getCookie(conversation_cookie_key)){
1253		conversation_cookie_val = getCookie(conversation_cookie_key);
1254	}
1255
1256	jQuery.ajax({
1257        url: listbuildingbot.ajax_url,
1258        type: 'POST',
1259        data: {
1260            action: 'sbl_trained_ai_start_conversation',
1261            chatflow_id : jQuery('#lbb_chatflow_id').val(),
1262			conversation_cookie_val : conversation_cookie_val,
1263			reset : reset
1264        },
1265        success: function(response) {
1266			if (response.success) {
1267
1268				var messages = response.data.conversations;
1269				jQuery.each(messages, function(index, message) {
1270
1271					message.text = message.text.replace(/\\/g, '');
1272					if(message.is_bot_response == 1){
1273						// show all bot messages
1274						lbbHandleAdminResponse(message.text,message);
1275						
1276					}else{
1277						lbbHandleUserResponse(message.text, true);
1278					}
1279				});
1280				scrollToBottom();
1281			}
1282        },
1283        error: function(error) {
1284            console.error('AJAX error:', error);
1285        }
1286    });
1287}
1288
1289function startAiConversation(){
1290
1291	var lbb_chatflow_id = jQuery('#lbb_chatflow_id').val();
1292	var conversation_cookie_key = 'lbbcf_'+lbb_chatflow_id+'_conversation_id';
1293	var conversation_cookie_val = '';
1294	if (getCookie(conversation_cookie_key)){
1295		conversation_cookie_val = getCookie(conversation_cookie_key);
1296	}
1297
1298	jQuery.ajax({
1299        url: listbuildingbot.ajax_url,
1300        type: 'POST',
1301        data: {
1302            action: 'sbl_ai_start_conversation',
1303            chatflow_id : jQuery('#lbb_chatflow_id').val(),
1304			conversation_cookie_val : conversation_cookie_val
1305        },
1306        success: function(response) {
1307			if (response.success) {
1308
1309				var messages = response.data.conversations;
1310
1311				jQuery.each(messages, function(index, message) {
1312					message.text = message.text.replace(/\\/g, '');
1313					if(message.is_bot_response == 1){
1314						// show all bot messages
1315						lbbHandleAdminResponse(message.text,message);
1316						
1317					}else{
1318						lbbHandleUserResponse(message.text, true);
1319					}
1320				});
1321				scrollToBottom();
1322			}
1323        },
1324        error: function(error) {
1325            console.error('AJAX error:', error);
1326        }
1327    });
1328}
1329
1330function submitAI(messge){
1331	var lbb_chatflow_id = jQuery('#lbb_chatflow_id').val();
1332	var conversation_cookie_key = 'lbbcf_'+lbb_chatflow_id+'_conversation_id';
1333	var conversation_cookie_val = '';
1334	if (getCookie(conversation_cookie_key)){
1335		conversation_cookie_val = getCookie(conversation_cookie_key);
1336	}
1337
1338	jQuery("[name=lbb_input_message]").val('');
1339	jQuery.ajax({
1340		url: listbuildingbot.ajax_url,
1341		type: 'POST',
1342		data: {
1343			action: 'sbl_chatbot_ai_submit',
1344			message : messge,
1345			chatflow_id : jQuery('#lbb_chatflow_id').val(),
1346			conversation_cookie_val : conversation_cookie_val
1347
1348		},
1349		success: function(response) {
1350			if(response.success != undefined){
1351				data = response.data;
1352				if(data.status == 'ok'){
1353					lbbCustomReponse(data.object);
1354				}else if(data.status == 'error'){
1355					lbbCustomReponse(data.message);
1356				}
1357			}
1358		},
1359		error: function(error) {
1360			lbbCustomReponse(error);
1361		}
1362	});
1363}
1364
1365function submitTrainedAIContact(fname,email){
1366
1367	jQuery('.lbb-chat-user-info-button').attr('disabled', true);
1368	jQuery.ajax({
1369		url: listbuildingbot.ajax_url,
1370		type: 'POST',
1371		data: {
1372			action: 'sbl_chatbot_trained_ai_submit_contact',
1373			fname : fname,
1374			email : email,
1375			chatflow_id : jQuery('#lbb_chatflow_id').val()
1376		},
1377		success: function(response) {
1378			jQuery('.lbb-chat-user-info-button').attr('disabled', false);
1379			if(response.success != undefined){
1380				data = response.data;
1381				if(data.status == 'ok'){
1382					lbbCustomReponse(data.message);
1383					jQuery('#lbb-chat-main-wrapper').removeClass('lbb-chat-user-input');
1384				}
1385			}
1386		}
1387	});
1388}
1389
1390function lbbbacktoBot(){
1391
1392	jQuery('.lbb-inline-input-field').remove();
1393	jQuery('.quick-reply-buttons').remove();
1394	slgHandleTyping();
1395	var lbb_chatflow_id = jQuery('#lbb_chatflow_id').val();
1396	var conversation_cookie_key = 'lbbcf_'+lbb_chatflow_id+'_conversation_id';
1397	var conversation_cookie_val = '';
1398	if (getCookie(conversation_cookie_key)){
1399		conversation_cookie_val = getCookie(conversation_cookie_key);
1400	}
1401	jQuery.ajax({
1402		url: listbuildingbot.ajax_url,
1403		type: 'POST',
1404		data: {
1405			action: 'lbb_trained_to_logicbot',
1406			chatflow_id : jQuery('#lbb_chatflow_id').val(),
1407			conversation_cookie_val : conversation_cookie_val
1408		},
1409		success: function(response) {
1410			jQuery('.lbb-back-to-main-menu-conversation').addClass('lbb-back-main-processing');
1411			lbbCheckAction(0,0,'');
1412		}
1413	});
1414
1415}
1416
1417function submitBotReply(forceType = 'inline'){
1418
1419
1420	if(forceType == 'trainedBot'){
1421
1422		jQuery('.lbb-inline-input-field').remove();
1423		jQuery('.quick-reply-buttons').remove();
1424
1425	}
1426
1427	var val = jQuery("[name=lbb_input_message]").val().toLowerCase();
1428	var message = jQuery("[name=lbb_input_message]").val();
1429
1430	if(val.trim() == ''){
1431		return false;
1432	}
1433
1434	if(jQuery('.lbb-show-email-terms').hasClass('lbb-show-email-terms')){
1435		jQuery(".lbb-email-terms-error").hide();
1436		if(jQuery('.lbb-inline-input-field').hasClass('lbb-require-email-terms')){
1437
1438			if (!jQuery("#lbb_accept_terms").prop("checked")) {
1439				jQuery(".lbb-email-terms-error").show();
1440				return false;
1441			}
1442
1443		}
1444	}
1445
1446
1447	var current_action_id = lbb_last_chat.action_id;
1448	var next_action_id = lbb_last_chat.next_question_id;
1449	var conversation_id = getConversationID();
1450	type = lbb_last_chat.type;
1451
1452	if (jQuery.inArray(type, ['name', 'text', 'email', 'phone', 'country','single','welcome', 'url', 'date', 'pdf','lastmessage']) !== -1) {
1453		lbbHandleUserResponse(message,false);
1454		scrollToBottom();
1455		lbbSubmitUserReply({
1456			message : message,
1457			conversation_id : conversation_id,
1458			current_action_id: current_action_id,
1459			next_action_id : next_action_id,
1460			chatflow_id : jQuery('#lbb_chatflow_id').val(),
1461			forceType : forceType
1462		});
1463		jQuery("[name=lbb_input_message]").val('');
1464	}else{
1465		
1466	}
1467
1468}
1469
1470function submitTrainedAI(messge){
1471	
1472	var lbb_chatflow_id = jQuery('#lbb_chatflow_id').val();
1473	var conversation_cookie_key = 'lbbcf_'+lbb_chatflow_id+'_conversation_id';
1474	var conversation_cookie_val = '';
1475	if (getCookie(conversation_cookie_key)){
1476		conversation_cookie_val = getCookie(conversation_cookie_key);
1477	}
1478
1479	jQuery("[name=lbb_input_message]").val('');
1480	jQuery('.lbb-kb-faq').addClass('lbb-kb-faq-processing');
1481	jQuery.ajax({
1482		url: listbuildingbot.ajax_url,
1483		type: 'POST',
1484		data: {
1485			action: 'sbl_chatbot_trained_ai_submit',
1486			message : messge,
1487			chatflow_id : jQuery('#lbb_chatflow_id').val(),
1488			conversation_cookie_val : conversation_cookie_val
1489		},
1490		success: function(response) {
1491			
1492			if(response.success != undefined){
1493				setTimeout(() => {
1494					jQuery('.lbb-kb-faq').removeClass('lbb-kb-faq-processing');
1495					jQuery('.Messages_list .lbb-agent-typing').remove();
1496					data = response.data;
1497					if(data.status == 'ok'){
1498						if(data.message != undefined){
1499							var string = data.message;
1500						}else if(data.object != undefined){
1501							var string = data.object;
1502						}
1503						string.replace(/\\/g, '');
1504						lbbCustomReponse(string);
1505						if(data.limit == undefined){
1506							data.limit = 0;
1507						}
1508						document.cookie = 'lbb_'+jQuery('#lbb_chatflow_id').val()+'_ai_response_limit='+data.limit+'; path=/';
1509						
1510					}else if(data.status == 'error'){
1511
1512						if(data.message != undefined){
1513							var string = data.message;
1514						}else if(data.object != undefined){
1515							var string = data.object;
1516						}
1517						string.replace(/\\/g, '');
1518						lbbCustomReponse(string);
1519						if(data.limit == undefined){
1520							data.limit = 0;
1521						}
1522						//document.cookie = 'lbb_'+jQuery('#lbb_chatflow_id').val()+'_ai_response_limit='+data.limit+'; path=/';
1523
1524					}
1525
1526				}, 1500);
1527	
1528				
1529			}
1530		},
1531		error: function(error) {
1532			jQuery('.lbb-kb-faq').removeClass('lbb-kb-faq-processing');
1533			lbbCustomReponse(error.statusText);
1534		}
1535	});
1536}
1537
1538var chatflow_id = 0;
1539jQuery(document).ready(function($) {
1540
1541	/*var video = document.getElementById("lbb-livechat-video-player");
1542	if (video !== null) {
1543		video.addEventListener("ended", function() {
1544			video.play();
1545		});
1546		video.play();
1547	}*/
1548
1549	chatflow_id = jQuery('#lbb_chatflow_id').val();
1550
1551	if (!jQuery('.lbb-dynamic-mode-set').hasClass('lbb-ai-mode') && !jQuery('.lbb-dynamic-mode-set').hasClass('lbb-trained_ai-mode')){
1552		console.log('145');
1553		var conversation_cookie_key = 'lbbcf_'+chatflow_id+'_conversation_id';
1554		var conversation_cookie_val = '';
1555		if (getCookie(conversation_cookie_key)){
1556			conversation_cookie_val = getCookie(conversation_cookie_key);
1557		}
1558
1559		jQuery.ajax({
1560	        url: listbuildingbot.ajax_url,
1561	        type: 'POST',
1562	        data: {
1563	            action: 'lbb_get_chat_mode',
1564	            conversation_cookie_val : conversation_cookie_val,
1565	            chatflow_id : chatflow_id
1566	        },
1567	        success: function(response) {
1568				if(response != '') {
1569					jQuery('.lbb-dynamic-mode-set').removeClass('lbb-ai-mode lbb-bot-mode lbb-live-mode');
1570					jQuery('.lbb-dynamic-mode-set').addClass('lbb-'+response+'-mode');
1571					chat_mode = response;
1572
1573					if (chat_mode == 'live'){
1574						jQuery('#lbb-app').removeClass('lbb-allow-bot-to-trained');
1575						setTimeout(() => {
1576							
1577							var conversation_chat_cookie_key = 'lbbcf_'+chatflow_id+'_conversation_chat_token';
1578							var chat_token = getCookie(conversation_chat_cookie_key);
1579
1580							if(chat_token != '' && chat_token != null && chat_token != undefined){
1581
1582								if (listbuildingbot.lbb_livechat_options == 'ajax_based'){
1583									lbb_activate_chat_live_mode();
1584									lbb_init_firebase();
1585									jQuery('.lbb-typing').removeClass('lbb-user-input-hide');
1586
1587								}else{
1588									firebase.auth().signInWithCustomToken(chat_token)
1589										.then((userCredential) => {
1590											console.log('Connected');
1591											lbb_activate_chat_live_mode();
1592											lbb_init_firebase();
1593											jQuery('.lbb-typing').removeClass('lbb-user-input-hide');
1594										}).catch((error) => {
1595										console.error('Authentication error:', error);
1596										});
1597
1598								}
1599
1600
1601
1602
1603							}else{
1604								lbb_activate_chat_live_mode();
1605								lbb_init_firebase();
1606								jQuery('.lbb-typing').removeClass('lbb-user-input-hide');
1607							}
1608							
1609							
1610						}, 800);
1611						
1612						
1613						
1614					}else if(chat_mode == 'trained_ai' && jQuery('#lbb-chat-main-wrapper').hasClass('lbb-chattype-inline')){
1615						startTrainedAiConversation();
1616					}
1617
1618					if(chat_mode == 'bot' && !jQuery('#lbb-chat-main-wrapper').hasClass('lbb-chattype-inline') && lbb_minimized_type_option == 'show_first_question'){
1619						lbbStartConversation();
1620					}
1621				}
1622				if((chat_mode == 'live' || chat_mode == 'bot') && jQuery('#lbb-chat-main-wrapper').hasClass('lbb-chattype-inline') && chatflow_id){
1623					lbbStartConversation();
1624					jQuery('#lbb-chat-main-wrapper').removeClass('lbb-new-message-found');
1625					if(chat_mode == 'live'){
1626						setTimeout(() => {
1627							jQuery('.lbb-chat-start').removeClass('lbb-processing-live-chat');
1628							lbb_activate_chat_live_mode();
1629						}, 2000);
1630					}
1631				}
1632				
1633			}
1634		});
1635	}else if(jQuery('.lbb-dynamic-mode-set').hasClass('lbb-trained_ai-mode')){
1636		console.log('0');
1637		if(jQuery('#lbb-chat-main-wrapper').hasClass('lbb-chattype-inline')){
1638			startTrainedAiConversation();
1639		}
1640		jQuery('.lbb-typing').removeClass('lbb-user-input-hide');
1641	}else{
1642		if(jQuery('#lbb-chat-main-wrapper').hasClass('lbb-chattype-inline')){
1643			startAiConversation();
1644		}
1645		jQuery('.lbb-typing').removeClass('lbb-user-input-hide');
1646	}
1647
1648	if(chatflow_id){
1649		if(jQuery('#lbb-chat-main-wrapper').hasClass('lbb-chattype-inline')){
1650			//lbbStartConversation();
1651		}
1652
1653		if(jQuery('#lbb-chat-main-wrapper').hasClass('minimized') && jQuery('#lbb-chat-main-wrapper').attr('data-whentoshow') == 'certain_time'){
1654			var time = jQuery('#lbb-chat-main-wrapper').attr('data-time');
1655			setTimeout(() => {
1656				jQuery('.lbb-chat-icon-inner').removeClass('lbb-hide');
1657			}, time);
1658		}
1659	}
1660
1661	var $inputMessage = jQuery('.lbb_input_message');
1662    var $sendIcon = jQuery('.lbb-bot-mode .lbb-send-icon');
1663	$sendIcon.addClass('lbb-no-submit-btn');
1664
1665    $inputMessage.on('input', function () {
1666        // Check if the text field has any value
1667        if ($inputMessage.val().trim() !== '') {
1668            $sendIcon.removeClass('lbb-no-submit-btn');
1669        } else {
1670            $sendIcon.addClass('lbb-no-submit-btn');
1671        }
1672    });
1673
1674
1675	jQuery(document).on('keypress','.lbb-bot-mode .lbb_input_message', function(event) {
1676		// Check if the pressed key is Enter (key code 13)
1677		if (event.which === 13) {
1678		  // Prevent the default form submission behavior
1679		  event.preventDefault();
1680			if(chat_mode == 'bot'){
1681				submitBotReply('trainedBot');
1682			}else{
1683				jQuery('.lbb-'+chat_mode+'-mode .lbb-send-icon').trigger('click');
1684			}
1685		}
1686	});
1687
1688	jQuery(document).on('keydown','.lbb_inline_input', function(event) {
1689
1690		if(event.which === 13 && event.target.tagName !== 'TEXTAREA') {
1691			event.preventDefault();
1692			
1693				if (event.target.tagName === 'DIV') {
1694					var lbb_emoji_content = jQuery(this).find('.emojionearea-editor').text();
1695					if (lbb_emoji_content != '') {
1696						jQuery('.lbb_input_message').val(lbb_emoji_content);
1697					}else{
1698						jQuery('.lbb_input_message').val(jQuery('.lbb_inline_input').val());
1699					}
1700					
1701				}else{
1702					jQuery('.lbb_input_message').val(jQuery('.lbb_inline_input').val());
1703				}
1704				
1705				submitBotReply();
1706				//jQuery('.lbb-bot-mode .lbb-send-icon').trigger('click');	
1707			
1708		}
1709	});
1710
1711	
1712
1713	jQuery(document).on('keypress','.lbb-trained_ai-mode .lbb_input_message', function(event) {
1714		if(event.which === 13) {
1715			event.preventDefault();
1716			//jQuery('.lbb_input_message').val(jQuery('.lbb_inline_input').val());
1717			jQuery('.lbb-trained_ai-mode .lbb-send-icon').trigger('click');
1718		}
1719	});
1720
1721	jQuery(document).on('keypress','.lbb-ai-mode .lbb_input_message', function(event) {
1722		if(event.which === 13) {
1723			event.preventDefault();
1724			//jQuery('.lbb_input_message').val(jQuery('.lbb_inline_input').val());
1725			jQuery('.lbb-ai-mode .lbb-send-icon').trigger('click');
1726		}
1727	});
1728
1729
1730	
1731	jQuery(document).on('click', '.lbb-answer-url-pick', function(e) {
1732		e.preventDefault();
1733		lbbSendMail();
1734
1735		var link = jQuery(this).attr('href');
1736		window.open(link, '_blank');
1737	});
1738
1739	jQuery(document).on('click', '.lbb-back-to-main-menu-conversation', function(e) {
1740		jQuery('.lbb-listing-dots-click-wrapper').removeClass('lbb-sub-listing-show');
1741		jQuery('.lbb-back-to-main-menu-conversation').addClass('lbb-back-main-processing');
1742		lbbbacktoBot();
1743	});
1744	
1745	jQuery(document).on('click', '.lbb-click-icon-for-listing', function(e) {
1746		jQuery('.lbb-listing-dots-click-wrapper').toggleClass('lbb-sub-listing-show');
1747	});
1748	
1749
1750	jQuery(document).on('click', '.lbb-close', function(e) {
1751		jQuery('#lbb-app').hide();
1752		jQuery('.lbb-chat-start').removeClass('lbb-chat-popup-opened');
1753
1754		if(jQuery('.lbb-notification-co').length > 0) {
1755			jQuery('.lbb-notification-co').show();
1756		}
1757	});
1758
1759	jQuery(document).on('click', '.lbb-chat-video-image-close-event', function(e) {
1760		jQuery('.lbb-close').trigger('click');
1761	});
1762
1763	jQuery(document).on('click', '.lbb-contact-us-trained-ai', function(e) {
1764		jQuery('#lbb-chat-main-wrapper').addClass('lbb-chat-user-input');
1765	});
1766
1767	jQuery(document).on('keyup','.lbb-kb-search-input-text', function() {
1768
1769		jQuery.ajax({
1770			url: listbuildingbot.ajax_url,
1771			type: 'POST',
1772			data: {
1773				action: 'sbl_helpdesk_filter',
1774				chatflow_id: chatflow_id,
1775				keyword : jQuery(this).val()
1776			},
1777			success: function(response) {
1778				jQuery('.lbb-kb-main').html(response);
1779			}
1780		});
1781
1782	});
1783
1784	jQuery(document).on('click', '.lbb-chat-switch-btn', function(e) {
1785
1786		jQuery('.lbb-chat-switch-btn').removeClass('lbb-chat-switch-active');
1787		if(jQuery(this).attr('data-mode') == 'helpdesk'){
1788			jQuery('#lbb-app').addClass('lbb-help-desk-active-tab');
1789			jQuery(this).addClass('lbb-chat-switch-active');
1790		}else{
1791			jQuery('#lbb-app').removeClass('lbb-help-desk-active-tab');
1792			jQuery(this).addClass('lbb-chat-switch-active');
1793		}
1794
1795	});
1796	jQuery(document).on('click', '.iconInner', function(e) {
1797
1798		jQuery('.lbb-chat-first-question-inner').html('');
1799		jQuery('.lbb-chat-first-question-main').remove();
1800		jQuery('.lbb-chat-start').addClass('lbb-chat-popup-opened');
1801		var lbb_app_oo = '';
1802		if(!jQuery('#lbb-app').hasClass('lbb-app-oo')){
1803			jQuery('#lbb-app').addClass('lbb-app-oo');
1804			lbb_app_oo = '1';
1805		}
1806		if (jQuery("#lbb-app").is(":visible")) {
1807			jQuery('#lbb-app').hide();
1808			if(jQuery('.lbb-notification-co').length > 0) {
1809				jQuery('.lbb-notification-co').show();
1810			}
1811		}else{
1812			jQuery(this).parents('.botIcon').addClass('showBotSubject');
1813			jQuery('#lbb-app').show();
1814			if(jQuery('.lbb-notification-co').length > 0) {
1815				jQuery('.lbb-notification-co').hide();
1816			}
1817			$("[name='msg']").focus();
1818			if(chat_mode != 'ai' && chat_mode != 'trained_ai'){
1819				if(lbb_app_oo == '1'){
1820					if(lbb_minimized_type_option != 'show_first_question' && chat_mode != 'live'){
1821						lbbStartConversation();
1822					}
1823					if(chat_mode == 'live'){
1824						jQuery('.lbb-chat-start').addClass('lbb-processing-live-chat');
1825						jQuery('#lbb-chat-main-wrapper').removeClass('lbb-new-message-found');
1826						lbbStartConversation();
1827						setTimeout(() => {
1828							jQuery('.lbb-chat-start').removeClass('lbb-processing-live-chat');
1829							lbb_activate_chat_live_mode();
1830						}, 2000);
1831						
1832					}else{
1833						//jQuery('.lbb-typing').addClass('lbb-user-input-hide');
1834					}
1835				}
1836			}else if(chat_mode == 'live'){
1837				
1838			}else{
1839				if(lbb_app_oo == '1'){
1840					if(chat_mode == 'ai'){
1841						startAiConversation();
1842					}else{
1843						startTrainedAiConversation();
1844					}
1845				}
1846			}
1847		}
1848	});
1849
1850
1851	
1852
1853	jQuery(document).on('click', '.lbb-start-new-conversation', function(e) {
1854		jQuery('.lbb-confirmation #yesBtn').trigger('click');
1855	});
1856
1857	jQuery(document).on('click', '.lbb-confirmation #yesBtn', function(e) {
1858		var chatflow_id = jQuery('#lbb_chatflow_id').val();
1859		var cookiename = 'lbbcf_'+chatflow_id+'_conversation_id';
1860		var conversation_chat_id = 'lbbcf_'+chatflow_id+'_conversation_chat_id';
1861		var conversation_id = getConversationID();
1862		lbbDeleteCookie(cookiename);
1863		lbbDeleteCookie(conversation_chat_id);
1864		jQuery('.Messages_list').html('');
1865		if(chatflow_type == 'botlivechat'){
1866			chat_mode = 'bot';
1867			jQuery('#lbb-app').removeClass('lbb-live-mode');
1868			jQuery('#lbb-app').addClass('lbb-bot-mode');
1869		}
1870
1871
1872		lbb_reset_timer();
1873
1874		jQuery('.lbb-reset-restart-conversation').css('pointer-events', 'n
1874one');
1875
1876		lbbcloseconversation(conversation_id);
1877
1878		if(chat_mode == 'live'){
1879			jQuery('.lbb-chat-start').addClass('lbb-processing-live-chat');
1880			setTimeout(() => {
1881				jQuery('.lbb-chat-start').addClass('lbb-processing-live-chat');
1882				lbb_activate_chat_live_mode();
1883			}, 2000);
1884		}
1885
1886		if(chat_mode == 'trained_ai'){
1887			startTrainedAiConversation(1);
1888		}else{
1889			lbbStartConversation();
1890		}
1891		
1892		jQuery('.lbb-user-popup').removeClass('lbb-active');
1893		//jQuery('.lbb-typing').removeClass('lbb-user-input-hide');
1894	});
1895
1896	jQuery(document).on('click', '.lbb-confirmation #noBtn', function(e) {
1897		jQuery('.lbb-user-popup').removeClass('lbb-active');
1898	});
1899
1900	jQuery(document).on('click', '.lbb-reset-conversation', function(e) {
1901		jQuery('.lbb-user-popup').addClass('lbb-active');
1902	});
1903
1904	jQuery(document).on('click', '.lbb-restart-conversation', function(e) {
1905		var conversation_id = getConversationID();
1906		lbbStartConversation(conversation_id, true);
1907	});
1908
1909	
1910	jQuery(document).on('click', '.lbb-chat-first-question-main .quick-reply-button', function(e) {
1911		jQuery('.iconInner').trigger('click');
1912	});
1913
1914	jQuery(document).on('click', '.quick-reply-button', function(e) {
1915
1916		
1917		var ansAction = jQuery(this).attr('data-ans-action');
1918		var ansUrl = jQuery(this).attr('data-ans-action-url');
1919
1920		if(ansAction != 'url') {
1921
1922			var btnText = jQuery(this).find('.quick-reply-text .quick-reply-spn-text').attr('data-value');
1923			if(!jQuery(this).find('img').hasClass('emoji')){
1924				var btnImage = jQuery(this).find('img').attr('src');
1925			}
1926
1927			var classnam = '';
1928			if(jQuery(this).closest('.quick-reply-buttons').hasClass('lbb-mobile-hide-image')){
1929				classnam = 'lbb-mobile-hide-image';
1930			}
1931			
1932			jQuery(this).closest('.quick-reply-buttons').remove();
1933			
1934			
1935
1936			lbbHandleUserResponse(btnText,false, btnImage,[],classnam);
1937			slgHandleTyping();
1938			
1939			var current_action_id = jQuery(this).attr('data-currentactionid');
1940			var next_action_id = jQuery(this).attr('data-nextactionid');
1941
1942			if(ansAction == 'start_over'){
1943				var repeat_ques = jQuery(this).attr('data-repeat-ques');
1944				next_action_id = repeat_ques;
1945			}
1946
1947			var chflowid = 0;
1948			if(ansAction == 'different_bot'){
1949				chflowid = jQuery(this).attr('data-diffchatflow');
1950			}
1951
1952			var tags = jQuery(this).attr('data-tags');
1953			var conversation_id = getConversationID();
1954
1955			message_meta = {};
1956			if(btnImage){
1957				message_meta['image'] = btnImage;
1958			}
1959			console.log(lbb_last_chat);
1960
1961			jQuery('.skip-button-div').remove();
1962
1963			jQuery.ajax({
1964				url: listbuildingbot.ajax_url,
1965				type: 'POST',
1966				data: {
1967					action: 'sbl_chatbot_submit_reply',
1968					message : btnText,
1969					message_meta : message_meta,
1970					conversation_id : conversation_id,
1971					current_action_id: current_action_id,
1972					next_action_id : next_action_id,
1973					tags : tags,
1974					chatflow_id : jQuery('#lbb_chatflow_id').val(),
1975					type : 'single'
1976				},
1977				success: function(response) {
1978
1979					if(response.data.warning != undefined && response.data.warning == 1){
1980						if(response.data.available == 1){
1981							lbbCustomReponse(response.data.message,'lbb-live-chat');
1982							lbb_activate_chat_live_mode();
1983							jQuery('.lbb-restart-conversation').hide();
1984						}else{
1985							setTimeout(() => {
1986								if(!jQuery('.lbb-admin-response').hasClass('lbb-conversation-end-msg')){
1987									lbbCustomReponse(response.data.message,'lbb-conversation-end-msg');
1988								}
1989							}, 1600);
1990						}
1991					}else{
1992						setTimeout(() => {
1993							//lbb_prev_message = current_action_id;
1994							//jQuery('.lbb-admin-response.lbb-last-back').removeClass('lbb-last-back');
1995							if(btnText != 'Back'){
1996								jQuery('.lbb-admin-response.lbb-last-back').removeClass('lbb-last-back');
1997							}
1998							lbbCheckAction(current_action_id,next_action_id, btnText,chflowid);
1999						}, 1500);
2000					}
2001					
2002				},
2003				error: function(error) {
2004					console.error('AJAX error:', error);
2005				}
2006			});
2007		}
2008
2009	});
2010
2011	jQuery(document).on('click', '.closeBtn, .chat_close_icon', function(e) {
2012		jQuery(this).parents('.botIcon').removeClass('showBotSubject');
2013		jQuery(this).parents('.botIcon').removeClass('showMessenger');
2014	});
2015
2016	jQuery(document).on('click', '.lbb-ai-mode .lbb-send-icon', function(e) {
2017		var val = jQuery("[name=lbb_input_message]").val();
2018
2019		if(val == ''){
2020			return false;
2021		}
2022
2023		lbbHandleUserResponse(val,false);
2024		scrollToBottom();
2025		slgHandleTyping();
2026		submitAI(val);
2027	});
2028
2029	jQuery(document).on('click', '.lbb-trained_ai-mode .lbb-send-icon', function(e) {
2030		var val = jQuery("[name=lbb_input_message]").val();
2031		lbbHandleUserResponse(val,false);
2032		scrollToBottom();
2033		slgHandleTyping();
2034		submitTrainedAI(val);
2035	});
2036
2037
2038
2039	jQuery(document).on('click', '.lbb-inline-send-icon', function(e) {
2040		jQuery('.lbb_input_message').val(jQuery('.lbb_inline_input').val());
2041		jQuery('.lbb-bot-mode .lbb-send-icon').trigger('click');
2042	});
2043	
2044
2045	jQuery(document).on('click', '.lbb-back-conversation', function(e) {
2046
2047		var current_action_id = lbb_last_chat.action_id;
2048		var next_action_id = lbb_prev_message;
2049		var conversation_id = getConversationID();
2050
2051		if(!jQuery('.lbb-admin-response').hasClass('lbb-last-back')){
2052			jQuery('.lbb-action-' + next_action_id).addClass('lbb-last-back');
2053		}else{
2054			lbb_prev_message = jQuery('.lbb-admin-response.lbb-last-back').attr('data-prev');
2055			jQuery('.lbb-admin-response.lbb-last-back').removeClass('lbb-last-back');
2056			next_action_id = lbb_prev_message;
2057			jQuery('.lbb-action-' + next_action_id).addClass('lbb-last-back');
2058		}
2059
2060		if(lbb_prev_message == 0){
2061			jQuery('.lbb-back-conversation').hide();
2062		}
2063
2064		if(lbb_prev_message == lbb_first_question){
2065			jQuery('.lbb-back-conversation').hide();
2066		}
2067
2068		lbbHandleUserResponse('Back',false);
2069		lbbSubmitUserReply({
2070			message : 'Back',
2071			conversation_id : conversation_id,
2072			current_action_id: current_action_id,
2073			next_action_id : next_action_id,
2074			chatflow_id : jQuery('#lbb_chatflow_id').val()
2075		});
2076		
2077	});
2078
2079	jQuery(document).on('click', '.lbb-skip-message-link', function(e) {
2080
2081		var curQ = jQuery(this).attr('data-currentquestion');
2082		var nextQ = jQuery(this).attr('data-nextquestion');
2083
2084		var conversation_id = getConversationID();
2085		lbbHandleUserResponse(lbb_skip_question,false);
2086		lbbSubmitUserReply({
2087			message : lbb_skip_question,
2088			messageType : 'skip',
2089			conversation_id : conversation_id,
2090			current_action_id: curQ,
2091			next_action_id : nextQ,
2092			chatflow_id : jQuery('#lbb_chatflow_id').val()
2093		});
2094
2095		jQuery('.skip-button-div').remove();
2096
2097	});
2098	
2099	/*jQuery(document).on("click","#lbbRedirectLink",function(event) {
2100        event.preventDefault();
2101        setTimeout(function() {
2102			var link = jQuery(this).attr("href");
2103            window.open(link, "_blank");
2104        }, 3000);
2105    });*/
2106
2107	jQuery(document).on('click', '.lbb-kb-faq .trained-ai-faq', function(e) {
2108		var val = jQuery(this).text();
2109
2110		jQuery("[name=lbb_input_message]").val(val);
2111		jQuery('.lbb-trained_ai-mode .lbb-send-icon').trigger('click');
2112
2113	});
2114
2115	jQuery(document).on('click', '.lbb-chat-first-question-main .lbb-close-icon', function(e) {
2116		jQuery('.lbb-chat-first-question-main').hide();
2117	});
2118
2119	jQuery(document).on('click', '.lbb-bot-mode .lbb-send-icon', function(e) {
2120		e.preventDefault();
2121
2122
2123		submitBotReply('trainedBot');
2124
2125		return false;
2126
2127		/*var val = jQuery("[name=lbb_input_message]").val().toLowerCase();
2128		var message = jQuery("[name=lbb_input_message]").val();
2129
2130		if(val.trim() == ''){
2131			return false;
2132		}
2133
2134		if(jQuery('.lbb-show-email-terms').hasClass('lbb-show-email-terms')){
2135			jQuery(".lbb-email-terms-error").hide();
2136			if(jQuery('.lbb-inline-input-field').hasClass('lbb-require-email-terms')){
2137
2138				if (!jQuery("#lbb_accept_terms").prop("checked")) {
2139					jQuery(".lbb-email-terms-error").show();
2140					return false;
2141				}
2142
2143			}
2144		}
2145
2146
2147		var current_action_id = lbb_last_chat.action_id;
2148		var next_action_id = lbb_last_chat.next_question_id;
2149		var conversation_id = getConversationID();
2150		type = lbb_last_chat.type;
2151
2152		if (jQuery.inArray(type, ['name', 'text', 'email', 'phone', 'country','single','welcome', 'url', 'date', 'pdf','lastmessage']) !== -1) {
2153			lbbHandleUserResponse(message,false);
2154			scrollToBottom();
2155			lbbSubmitUserReply({
2156				message : message,
2157				conversation_id : conversation_id,
2158				current_action_id: current_action_id,
2159				next_action_id : next_action_id,
2160				chatflow_id : jQuery('#lbb_chatflow_id').val()
2161	        });
2162			jQuery("[name=lbb_input_message]").val('');
2163		}else{
2164			
2165		}
2166
2167		return false;*/
2168	});
2169
2170	jQuery(document).on('change','#lbb-file-upload-input', function() {
2171        const selectedFile = jQuery(this)[0].files[0];
2172		const progressBar = jQuery('.lbb-progress-bar');
2173        if (selectedFile) {
2174            const formData = new FormData();
2175            formData.append('image', selectedFile);
2176
2177			var next_q_id = jQuery(this).closest('.lbb-field-type-attachment').attr('data-action');
2178
2179            // Send the image data to the server via AJAX
2180            jQuery.ajax({
2181                type: 'POST',
2182                url: listbuildingbot.ajax_url+'?action=lbb_handle_attachment_upload&action_id='
2182+next_q_id,
2183                data: formData,
2184                processData: false,
2185                contentType: false,
2186				xhr: function() {
2187                    const xhr = new window.XMLHttpRequest();
2188                    xhr.upload.addEventListener('progress', function(event) {
2189                        if (event.lengthComputable) {
2190                            const percentComplete = (event.loaded / event.total) * 100;
2191                            progressBar.css('width', percentComplete + '%');
2192                            progressBar.html(percentComplete + '%');
2193                            progressBar.attr('aria-valuenow', percentComplete);
2194                            progressBar.text(percentComplete.toFixed(2) + '%');
2195                        }
2196                    }, false);
2197                    return xhr;
2198                },
2199                success: function(response) {
2200					var response = JSON.parse(response);
2201
2202					var errorMessage = '';
2203					if(response.status != undefined && response.status == 'error'){
2204						errorMessage = response.message;
2205					}
2206
2207                    const attachment = response.attachment;
2208                    var attachment_type = response.attachment_type;
2209
2210					progressBar.css('width', '0%');
2211                    progressBar.attr('aria-valuenow', '0');
2212                    progressBar.text('');
2213
2214					message_meta = {};
2215					message_meta['attachment'] = attachment;
2216					message_meta['attachment_type'] = attachment_type;
2217					message_meta['name'] = name;
2218				
2219                    // Display the uploaded image in the chat interface
2220                    //const imgElement = `<img src="`+imageUrl+`" alt="Uploaded Image" />`;
2221					var html = response.download_box;
2222                    //jQuery('#chat-messages').append(imgElement);
2223
2224					var current_action_id = lbb_last_chat.action_id;
2225					var next_action_id = lbb_last_chat.next_question_id;
2226					var conversation_id = getConversationID();
2227					type = lbb_last_chat.type;
2228					jQuery('.lbb-upload-box').remove();
2229					jQuery('.lbb-progress-bar').remove();
2230
2231					if(html != undefined) {
2232						lbbHandleUserResponse(html,false);
2233					}
2234
2235					scrollToBottom();
2236					
2237					lbbSubmitUserReply({
2238						message : '',
2239						message_meta : message_meta,
2240						conversation_id : conversation_id,
2241						current_action_id: current_action_id,
2242						next_action_id : next_action_id,
2243						chatflow_id : jQuery('#lbb_chatflow_id').val(),
2244						errorMessage : errorMessage
2245					});
2246
2247                },
2248                error: function() {
2249                    console.error('Image upload failed.');
2250                }
2251            });
2252        }
2253    });
2254
2255	jQuery(window).on('load', function () {
2256		if(jQuery('.lbb-chat-start.minimized').hasClass('lbb-is-loading')) {
2257			jQuery('.iconInner').trigger('click');
2258		}
2259		jQuery('.lbb-chat-start').removeClass('lbb-is-loading');
2260		jQuery('.lbb-loading-mian').hide();
2261	});
2262	  
2263	jQuery('.lbb-kb-search-form').on('submit', function(event){
2264		return false;		
2265	});
2266
2267	/* Chatboat Code */
2268})

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.