PageSourceSearch

https://www.museumofplay.org/app/plugins/chatbot/js/qcld-wp-chatbot-plugin.js?ver=7.7.5

js museumofplay.org collected 2026-09-24 08:40:55 UTC 167,272 bytes, 2,953 lines download raw bytes

1/*
2 * Project:      wpwBot jQuery Plugin
3 * Description:  wpwBot AI based Chatting functionality are handled .
4 * Author:       QuantumCloud
5 * Version:      1.0
6 */
7var wpwKits;
8(function($) {
9    /*
10     * Global variable as object will beused to handle
11     * wpwbot chatting initialize, tree change transfer,
12     * changing tree steps and cookies etc.
13     */
14    var globalwpw={
15        initialize:0,
16        settings:{},
17        wildCard:0,
18        wildcards:'',
19        wildcardsHelp:['start','support','reset', 'search', 'email'],
20        productStep:'asking',
21        orderStep:'welcome',
22        supportStep:'welcome',
23		formStep: 'welcome',
24        formfieldid:'',
25        formid:'',
26        formentry:0,
27        hasNameCookie:$.cookie("shopper"),
28        shopperUserName:'',
29        shopperEmail:'',
30        shopperMessage:'',
31        emptymsghandler:0,
32        repeatQueryEmpty:'',
33        wpwIsWorking:0,
34        ai_step:0,
35        df_status_lock:0,
36		counter:0
37    };
38    /*
39     * wpwbot welcome section coverd
40     * greeting for new and already visited shopper
41     * based the memory after asking thier name.
42     */
43    var wpwWelcome={
44        greeting:function () {
45            //generating unique session id.
46            if(!localStorage.getItem('botsessionid')){
47                var number = Math.random() // 0.9394456857981651
48                number.toString(36); // '0.xtis06h6'
49                var id = number.toString(36).substr(2); // 'xtis06h6'
50                localStorage.setItem('botsessionid', id);
51            }
52         //   console.log(globalwpw.settings.obj.skip_wp_greetings=='1')
53            if((globalwpw.settings.obj.skip_wp_greetings=='1') || (globalwpw.settings.obj.skip_greetings_and_menu =='1') ){
54            }else{
55                //Very begining greeting.
56                if(globalwpw.settings.obj.re_target_handler==0){
57                var botJoinMsg="<strong>"+wpwMsg.oncommand_filter(globalwpw.settings.obj.agent)+" </strong> "+wpwKits.randomMsg(globalwpw.settings.obj.agent_join);
58                wpwMsg.single(botJoinMsg);
59                }
60                //Showing greeting for name in cookie or fresh shopper.
61                setTimeout(function(){
62                    var firstMsg=wpwKits.randomMsg(globalwpw.settings.obj.hi_there)+' '+wpwKits.randomMsg(globalwpw.settings.obj.welcome)+" <strong>"+globalwpw.settings.obj.host+"!</strong> ";
63                    var secondMsg=wpwKits.randomMsg(globalwpw.settings.obj.asking_name);
64                
65                        wpwMsg.double(firstMsg,secondMsg);
66                    
67                }, globalwpw.settings.preLoadingTime*2);
68            }
69           
70            var serviceOffer=wpwKits.randomMsg(globalwpw.settings.obj.wildcard_msg);
71            if(globalwpw.settings.obj.skip_greetings_and_menu != 0){
72              wpwMsg.single(serviceOffer);
73            }
74            if( ( globalwpw.settings.obj.show_menu_after_greetings!=0 ) && ( globalwpw.wildcards !='' ) ){
75				wpwMsg.double_nobg(serviceOffer, globalwpw.wildcards);
76            }else{
77                wpwMsg.single(serviceOffer);
78            }
79        }
80    };
81    //Append the message to the message container based on the requirement.
82    var wpwMsg={
83        oncommand_filter:function(msg){
84            var str = msg;
85            if(typeof(str) === 'string'){
86                replace = str.match(/on[a-z]+=/);
87                str = str.replace( replace, "" );
88            }
89            return str;
90        },
91        open_new_tab: function(msg){
92            if(wp_chatbot_obj.open_links_newtab == '1'){
93                var temp = document.createElement('div');
94                temp.innerHTML = msg;
95                let links = temp.querySelectorAll('a');
96                links.forEach(link => {
97                    link.setAttribute('target', '_blank');
98                });
99                let temps = temp.innerHTML;
100                return temps;
101            }else{
102                return msg;
103            }
104        },
105        single_openai:function (msg) {
106            msg = wpwMsg.open_new_tab(msg);
107            globalwpw.wpwIsWorking=1;
108            if($(globalwpw.settings.messageLastChild+' .wp-chatbot-comment-loader').length==0){
109                $(globalwpw.settings.messageContainer).append(wpwKits.botPreloader());
110            }
111            
112            //Scroll to the last message
113            wpwKits.scrollTo();
114            setTimeout(function(){
115                $(globalwpw.settings.messageLastChild+' .wp-chatbot-paragraph').text( msg );
116                //If has youtube link then show video
117                wpwKits.videohandler();
118                //scroll to the last message
119                wpwKits.scrollTo();
120                //Enable the editor
121                wpwKits.enableEditor(wpwKits.randomMsg(globalwpw.settings.obj.send_a_msg));
122                //keeping in history
123                wpwKits.wpwHistorySave();
124
125            }, globalwpw.settings.preLoadingTime);
126        },
127        single:function (msg) {
128            msg = wpwMsg.open_new_tab(msg);
129            globalwpw.wpwIsWorking=1;
130            if($(globalwpw.settings.messageLastChild+' .wp-chatbot-comment-loader').length==0){
131                $(globalwpw.settings.messageContainer).append(wpwKits.botPreloader());
132            }
133            //Scroll to the last message
134            wpwKits.scrollTo();
135            oncommand_filter = wpwMsg.oncommand_filter(msg);
136            
137            setTimeout(function(){
138                $(globalwpw.settings.messageLastChild+' .wp-chatbot-paragraph').html( '<div class="wp-chatbot-textanimation">' + oncommand_filter + '</div>');
139                //If has youtube link then show video
140                wpwKits.videohandler();
141                //scroll to the last message
142                wpwKits.scrollTo();
143                //Enable the editor
144                wpwKits.enableEditor(wpwKits.randomMsg(globalwpw.settings.obj.send_a_msg));
145                //keeping in history
146                wpwKits.wpwHistorySave();
147            }, globalwpw.settings.preLoadingTime);
148        },
149        single_nobg:function (msg) {
150            msg = wpwMsg.open_new_tab(msg);
151            globalwpw.wpwIsWorking=1;
152            if($(globalwpw.settings.messageLastChild+' .wp-chatbot-comment-loader').length==0){
153                $(globalwpw.settings.messageContainer).append(wpwKits.botPreloader());
154            }
155            //Scroll to the last message
156            oncommand_filter = wpwMsg.oncommand_filter(msg);
157            wpwKits.scrollTo();
158            setTimeout(function(){
159                $(globalwpw.settings.messageLastChild+' .wp-chatbot-paragraph').parent().addClass('wp-chatbot-msg-flat').html( '<div class="wp-chatbot-textanimation">' + oncommand_filter + '</div>');
160                //scroll to the last message
161                wpwKits.scrollTo();
162                //Enable the editor
163                wpwKits.enableEditor(wpwKits.randomMsg(globalwpw.settings.obj.send_a_msg));
164                //Keeping the chat history in localStorage
165                wpwKits.wpwHistorySave();
166                // disabled editor
167                // wpwKits.disableEditor('Please choose an option.');
168            }, globalwpw.settings.preLoadingTime);
169        },
170        double:function (fristMsg,secondMsg) {
171            fristMsg = wpwMsg.open_new_tab(fristMsg);
172            secondMsg = wpwMsg.open_new_tab(secondMsg);
173            globalwpw.wpwIsWorking=1;
174            if($(globalwpw.settings.messageLastChild+' .wp-chatbot-comment-loader').length==0){
175                $(globalwpw.settings.messageContainer).append(wpwKits.botPreloader());
176            }
177            oncommand_fristMsg_filter = wpwMsg.oncommand_filter(fristMsg);
178            oncommand_secondMsg_filter = wpwMsg.oncommand_filter(secondMsg);
179            //Scroll to the last message
180            wpwKits.scrollTo();
181            setTimeout(function(){
182                $(globalwpw.settings.messageLastChild+' .wp-chatbot-paragraph').html('<div class="wp-chatbot-textanimation">' + oncommand_fristMsg_filter + '</div>');
183                //Second Message with interval
184                if($(globalwpw.settings.messageLastChild+' .wp-chatbot-comment-loader').length==0){
185                    $(globalwpw.settings.messageContainer).append(wpwKits.botPreloader());
186                }
187                //Scroll to the last message
188                wpwKits.scrollTo();
189                setTimeout(function(){
190                    $(globalwpw.settings.messageLastChild+' .wp-chatbot-paragraph').html('<div class="wp-chatbot-textanimation">' + oncommand_secondMsg_filter + '</div>');
191                    //Scroll to the last message
192                    wpwKits.scrollTo();
193                    //Enable the editor
194                    wpwKits.enableEditor(wpwKits.randomMsg(globalwpw.settings.obj.send_a_msg));
195                    //keeping in history
196                    wpwKits.wpwHistorySave();
197                }
197, globalwpw.settings.preLoadingTime*2);
198            }, globalwpw.settings.preLoadingTime);
199        },
200        double_nobg:function (fristMsg,secondMsg) {
201            fristMsg = wpwMsg.open_new_tab(fristMsg);
202            secondMsg = wpwMsg.open_new_tab(secondMsg);
203            oncommand_fristMsg_filter = wpwMsg.oncommand_filter(fristMsg);
204            oncommand_secondMsg_filter = wpwMsg.oncommand_filter(secondMsg);
205          
206            globalwpw.wpwIsWorking=1;
207            if($(globalwpw.settings.messageLastChild+' .wp-chatbot-comment-loader').length==0){
208                $(globalwpw.settings.messageContainer).append(wpwKits.botPreloader());
209            }
210            //Scroll to the last message
211            wpwKits.scrollTo();
212            setTimeout(function(){
213                $(globalwpw.settings.messageLastChild+' .wp-chatbot-paragraph').html('<div class="wp-chatbot-textanimation">' + oncommand_fristMsg_filter + '</div>');
214                //Second Message with interval
215                if($(globalwpw.settings.messageLastChild+' .wp-chatbot-comment-loader').length==0){
216                    $(globalwpw.settings.messageContainer).append(wpwKits.botPreloader());
217                }
218                //Scroll to the last message
219                wpwKits.scrollTo();
220                setTimeout(function(){
221                    if(globalwpw.wildCard>0){
222                        $(globalwpw.settings.messageLastChild+' .wp-chatbot-paragraph').parent().addClass('wp-chatbot-msg-flat').html(oncommand_secondMsg_filter).append('<span class="qcld-chatbot-wildcard"  data-wildcart="back">' + wpwKits.randomMsg(globalwpw.settings.obj.back_to_start) + '</span>');
223                    }else{
224                        $(globalwpw.settings.messageLastChild+' .wp-chatbot-paragraph').parent().addClass('wp-chatbot-msg-flat').html('<div class="wp-chatbot-textanimation">' + oncommand_secondMsg_filter + '</div>');
225                    }
226                    //scroll to the last message
227                    wpwKits.scrollTo();
228                    //Enable the editor
229                    if(globalwpw.wildCard==1 && globalwpw.supportStep=='welcome'){
230                        //wpwKits.disableEditor('Support');
231						wpwKits.enableEditor(wpwKits.randomMsg(globalwpw.settings.obj.send_a_msg));
232                    }else{
233                        wpwKits.enableEditor(wpwKits.randomMsg(globalwpw.settings.obj.send_a_msg));
234                    }
235                    //keeping in history
236                    wpwKits.wpwHistorySave();
237                    // disabled editor
238                    // wpwKits.disableEditor('Please choose an option.');
239                }, globalwpw.settings.preLoadingTime*2);
240            }, globalwpw.settings.preLoadingTime);
241        },
242		triple_nobg:function (fristMsg,secondMsg,thirdMsg) {
243            fristMsg = wpwMsg.open_new_tab(fristMsg);
244            secondMsg = wpwMsg.open_new_tab(secondMsg);
245            oncommand_fristMsg_filter = wpwMsg.oncommand_filter(fristMsg);
246            oncommand_secondMsg_filter = wpwMsg.oncommand_filter(secondMsg);
247			globalwpw.wpwIsWorking=1;
248            $(globalwpw.settings.messageContainer).append(wpwKits.botPreloader());
249            //Scroll to the last message
250            wpwKits.scrollTo();
251            setTimeout(function(){
252                $(globalwpw.settings.messageLastChild+' .wp-chatbot-paragraph').html('<div class="wp-chatbot-textanimation">' + oncommand_fristMsg_filter + '</div>');
253                wpwKits.videohandler();
254                //Second Message with interval
255                if($(globalwpw.settings.messageLastChild+' .wp-chatbot-comment-loader').length==0){
256                    $(globalwpw.settings.messageContainer).append(wpwKits.botPreloader());
257                }
258                //Scroll to the last message
259                wpwKits.scrollTo();
260                setTimeout(function(){
261                    $(globalwpw.settings.messageLastChild+' .wp-chatbot-paragraph').html('<div class="wp-chatbot-textanimation">' +  oncommand_secondMsg_filter + '</div>');
262                    wpwKits.videohandler();
263                    if($(globalwpw.settings.messageLastChild+' .wp-chatbot-comment-loader').length==0){
264                        $(globalwpw.settings.messageContainer).append(wpwKits.botPreloader());
265                    }
266                    //Scroll to the last message
267                    wpwKits.scrollTo();
268                    setTimeout(function(){
269                        if(globalwpw.wildCard>0){
270                            $(globalwpw.settings.messageLastChild+' .wp-chatbot-paragraph').parent().addClass('wp-chatbot-msg-flat').html(thirdMsg).append('<span class="qcld-chatbot-wildcard qcld_back_to_start"  data-wildcart="back">' + wpwKits.randomMsg(globalwpw.settings.obj.back_to_start) + '</span>');
271                        }else{
272                            $(globalwpw.settings.messageLastChild+' .wp-chatbot-paragraph').parent().addClass('wp-chatbot-msg-flat').html('<div class="wp-chatbot-textanimation">' + thirdMsg + '</div>');
273                        }
274                        //scroll to the last message
275                        wpwKits.scrollTo();
276                        wpwKits.videohandler();
277                        //Enable the editor
278                        if(globalwpw.wildCard==1 && globalwpw.supportStep=='welcome'){
279                            //wpwKits.disableEditor('Support');
280                        }else{
281                            wpwKits.enableEditor(wpwKits.randomMsg(globalwpw.settings.obj.send_a_msg));
282                        }
283                        //keeping in history
284                        wpwKits.wpwHistorySave();
285                        // disabled editor
286                        // wpwKits.disableEditor('Please choose an option.');
287                    }, globalwpw.settings.preLoadingTime);
288                }, globalwpw.settings.preLoadingTime);
289            }, globalwpw.settings.preLoadingTime);
290        },
291        shopper:function (shopperMsg) {
292            $(globalwpw.settings.messageContainer).append(wpwKits.shopperMsgDom(shopperMsg));
293            //scroll to the last message
294            wpwKits.scrollTo();
295            //keeping in history
296            wpwKits.wpwHistorySave();
297        },
298        shopper_choice:function (shopperChoice) {
299            $(globalwpw.settings.messageLastChild).fadeOut(globalwpw.settings.preLoadingTime);
300            $(globalwpw.settings.messageContainer).append(wpwKits.shopperMsgDom(shopperChoice));
301            //scroll to the last message
302            wpwKits.scrollTo();
303            //keeping in history
304            wpwKits.wpwHistorySave();
305        }
306    };
307    //Every tiny tools are implemented  in wpwKits as object literal.
308    wpwKits={
309        enableEditor:function(placeHolder){
310            if(globalwpw.settings.editor_handler==0){
311				if($(window).width()>380){
312                    $("#wp-chatbot-editor").attr('disabled',false).focus();
313                }else{
314					$("#wp-chatbot-editor").attr('disabled',false)
315				}
316                $("#wp-chatbot-editor").attr('placeholder',placeHolder);
317                $("#wp-chatbot-send-message").attr('disabled',false);
318            }
319        },
320        disableEditor:function (placeHolder) {
321            if(globalwpw.settings.editor_handler==0){
322                $("#wp-chatbot-editor").attr('placeholder',placeHolder);
323                $("#wp-chatbot-editor").attr('disabled',true);
324                $("#wp-chatbot-send-message").attr('disabled',true);
325            }
326            //Remove extra pre loader.
327            if($('.wp-chatbot-messages-container').find('.wp-chatbot-comment-loader').length>0){
328                $('.wp-chatbot-messages-container').find('.wp-chatbot-comment-loader').parent().parent().hide();
329            }
330        },
331        htmlEntities:function(str) {
332            return String(str).replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;').replace(/"/g, '&quot;');
333        },
334        wpwHistorySave:function () {
335            globalwpw.wpwIsWorking=0;
336            var wpwHistory= $(globalwpw.settings.messageWrapper).html();
337            localStorage.setItem("wpwHitory", wpwHistory);
338            if(localStorage.getItem('botsessionid')){
339                if(!localStorage.getItem('shopperemail')){
340                    var useremail = '';
341                }else{
342                    var useremail = localStorage.getItem('shopperemail');
343                }
344                if(globalwpw.hasNameCookie){
345                    var shopper=globalwpw.hasNameCookie;
346                } else{
347                    var shopper=globalwpw.settings.obj.shopper_demo_name;
348                }
349                if(localStorage.getItem('shopperphone')){
350                    var shopperphone = localStorage.getItem('shopperphone');
351                }else{
352                    var shopperphone = '';
353                }
354                var data = {'action':'qcld_wb_chatbot_conversation_save','session_id': localStorage.getItem('botsessionid'),'name':shopper,'email':useremail, 'phone':shopperphone, 'conversation':wpwKits.htmlEntities(wpwHistory), 'security':globalwpw.settings.obj.ajax_nonce, 'user_id': globalwpw.settings.obj.current_user_id};
355                if( globalwpw.settings.obj.is_chat_session_active == 1 ){
356                    wpwKits.ajax(data).done(function (response) {
357                        //console.log(response);
358                    })
359                }
360            }
361            //},globalwpw.settings.wildcardsShowTime);
362        },
363        decodehtml: function(str) {
364            var doc = new DOMParser().parseFromString(str, "text/html");
365            
366            return doc.body.firstChild.data || "";
367          
368        },
369        randomMsg:function(arrMsg){
370            var index=Math.floor(Math.random() * arrMsg.length);
371            return arrMsg[index];
372        },
373        ajax:function (data) {
374            return jQuery.post(globalwpw.settings.obj.ajax_url, data);
375        },
376		dailogAIOAction:function(text){
377            if(globalwpw.settings.obj.df_api_version=='v1'){
378                return  jQuery.ajax({
379                    type : "POST",
380                    url :"https://api.dialogflow.com/v1/query?v=20170712",
381                    contentType : "application/json; charset=utf-8",
382                    dataType : "json",
383                    headers : {
384                        "Authorization" : "Bearer "+globalwpw.settings.obj.ai_df_token
385                    },
386                    data: JSON.stringify( {
387                        query: text,
388                        lang : globalwpw.settings.obj.df_agent_lan,
389                        sessionId: localStorage.getItem('botsessionid')?localStorage.getItem('botsessionid'):'wpwBot_df_2018071'
390                    } )
391                });
392            }else{
393               
394                return jQuery.post(globalwpw.settings.obj.ajax_url, {
395					'action': 'qcld_wp_df_api_call',
396                    'dfquery': text,
397                    'nonce': globalwpw.settings.obj.ajax_nonce,
398                    'sessionid': localStorage.getItem('botsessionid')?localStorage.getItem('botsessionid'):'wpwBot_df_2018071'
399                });
400            }
401        },
402        responseIsOk(response){
403            if(globalwpw.settings.obj.df_api_version=='v1'){
404                if(response.status.code==200 || response.status.code==206){
405                    return true;
406                }else{
407                    return false;
408                }
409            }else{
410                if(typeof response.responseId !== "undefined"){
411                    return true;
412                }else{
413                    return false;
414                }
415            }
416        },
417        getIntentName(response){
418            if(globalwpw.settings.obj.df_api_version=='v1'){
419                return response.result.metadata.intentName;
420            }else{
421                return response.queryResult.intent.displayName;
422            }
423        },
424        getParameters(response){
425            if(globalwpw.settings.obj.df_api_version=='v1'){
426                return response.result.parameters;
427            }else{
428                return response.queryResult.parameters;
429            }
430        },
431        getFulfillmentText(response){
432            if(globalwpw.settings.obj.df_api_version=='v1'){
433                return response.result.fulfillment.messages;
434            }else{
435                return response.queryResult.fulfillmentText;
436            }
437        },
438        getFulfillmentSpeech(response){
439            if(globalwpw.settings.obj.df_api_version=='v1'){
440                return response.result.fulfillment.speech;
441            }else{
442                return response.queryResult.fulfillmentText;
443            }
444        },
445        getScore(response){
446            if(globalwpw.settings.obj.df_api_version=='v1'){
447                return response.result.score;
448            }else{
449                return response.queryResult.intentDetectionConfidence;
450            }
451        },
452        getAction(response){
453            if(globalwpw.settings.obj.df_api_version=='v1'){
454                return response.result.action;
455            }else{
456                if(typeof response.queryResult.action !=="undefined"){
457                    return response.queryResult.action;
458                }else{
459                    return '';
460                }
461            }
462        },
463        queryText(response){
464            if(globalwpw.settings.obj.df_api_version=='v1'){
465                return response.result.resolvedQuery;
466            }else{
467                return response.queryResult.queryText;
468            }
469        },
470        isActionComplete(response){
471            if(globalwpw.settings.obj.df_api_version=='v1'){
472                if(!response.result.actionIncomplete){
473                    return true;
474                }else{
475                    return false;
476                }
477            }else{
478                return response.queryResult.allRequiredParamsPresent;
479            }
480        },
481        isConversationEnd(response){
482            if(globalwpw.settings.obj.df_api_version=='v1'){
483                if(typeof(response.result.metadata.endConversation)!=="undefined" && response.result.metadata.endConversation){
484                    return true;
485                }else{
486                    return false;
487                }
488            }else{
489                if(typeof response.queryResult.diagnosticInfo !=="undefined"){
490                    if(typeof response.queryResult.diagnosticInfo.end_conversation !== "undefined"){
491                        return response.queryResult.diagnosticInfo.end_conversation;
492                    }else{
493                        return false;
494                    }
495                }else{
496                    return false;
497                }
498            }
499        },
500        sugestCat:function () {
501            var productSuggest=wpwKits.randomMsg(globalwpw.settings.obj.product_suggest);
502            var data={'action':'qcld_wb_chatbot_category'};
503            var result=wpwKits.ajax(data);
504            result.done(function( response ) {
505                wpwMsg.double_nobg(productSuggest,response);
506                if(globalwpw.settings.obj.ai_df_enable==1 && global
506wpw.df_status_lock==0){
507                    globalwpw.wildCard=0;
508                    globalwpw.ai_step=1;
509                    localStorage.setItem("wildCard",  globalwpw.wildCard);
510                    localStorage.setItem("aiStep", globalwpw.ai_step);
511                }
512            });
513        },
514        subCats:function (parentId) {
515            var subCatMsg=wpwKits.randomMsg(globalwpw.settings.obj.product_suggest);
516            var data={'action':'qcld_wb_chatbot_sub_category','parent_id':parentId};
517            var result=wpwKits.ajax(data);
518            result.done(function( response ) {
519                wpwMsg.double_nobg(subCatMsg,response);
520            });
521        },
522        suggestEmail:function (emailFor) {
523            var sugMsg=wpwKits.randomMsg(globalwpw.settings.obj.support_option_again);
524            var sugOptions= '<span class="qcld-chatbot-wildcard qcld_back_to_start"  data-wildcart="back">' + wpwKits.randomMsg(globalwpw.settings.obj.back_to_start) + '</span>'; // /*emailFor+*/globalwpw.wildcards;
525            wpwMsg.single_nobg('<span class="qcld-chatbot-wildcard qcld_back_to_start"  data-wildcart="back">' + wpwKits.randomMsg(globalwpw.settings.obj.back_to_start) + '</span>');
526        },
527        videohandler:function () {
528            $(globalwpw.settings.messageLastChild+' .wp-chatbot-paragraph').html(function(i, html) {
529                return html.replace(/(?:https:\/\/)?(?:www\.)?(?:youtube\.com|youtu\.be)\/(?:watch\?v=)?(.+)/g, '<iframe width="250" height="180" src="http://www.youtube.com/embed/$1" frameborder="0" allowfullscreen></iframe>');
530            });
531        },
532        scrollTo:function () {
533            $(globalwpw.settings.botContainer).animate({ scrollTop: $(globalwpw.settings.messageWrapper).prop("scrollHeight")}, 'slow').parent().find('.slimScrollBar').css({'top':$(globalwpw.settings.botContainer).height()+'px'});;
534        },
535        botPreloader:function () {
536                var enableleReactions = globalwpw.settings.obj.skip_chat_reactions_menu;
537                var eanleeReport = globalwpw.settings.obj.enable_chat_report_menu;
538                var enableshare = globalwpw.settings.obj.enable_chat_share_menu;
539                var likeTxt = globalwpw.settings.obj.qlcd_wp_chatbot_like_text;
540                var disLikeTxt = globalwpw.settings.obj.qlcd_wp_chatbot_dislike_text;
541                var reportTxt = globalwpw.settings.obj.qlcd_wp_chatbot_report_text;
542                var sharetTxt = globalwpw.settings.obj.qlcd_wp_chatbot_share_text;
543            
544            var msgContent='<li class="wp-chatbot-msg">' +
545                '<div class="wp-chatbot-avatar">'+
546                '<img src="'+globalwpw.settings.obj.agent_image_path+'" alt="">'+
547                '</div>'+
548                '<div class="wp-chatbot-agent">'+ wpwMsg.oncommand_filter(globalwpw.settings.obj.agent)+'</div>'
549                +'<div class="chat-container"><div class="wp-chatbot-paragraph"><img class="wp-chatbot-comment-loader" src="'+globalwpw.settings.obj.image_path+'comment.gif" alt="Typing..." /></div>'+
550                '<div class="qcld-like-dislike-icon">' +
551              (enableleReactions == 1 
552                  ? '<a href="#" title="' + (likeTxt?.en_US || 'Like') + '"><i class="dashicons dashicons-thumbs-up" aria-hidden="true"></i></a>' +
553                    '<a href="#" title="' + (disLikeTxt?.en_US || 'Dislike') + '"><i class="dashicons dashicons-thumbs-down" aria-hidden="true"></i></a>'
554                  : '') +
555
556              (eanleeReport == 1 
557                  ? '<a href="#" title="' + (reportTxt?.en_US || 'Report') + '"><i class="dashicons dashicons-admin-comments"></i></a>'
558                  : '') +
559
560              (enableshare == 1 
561                  ? '<div class="qcld-share">' +
562                      '<a href="#" class="share-toggle" title="' + (sharetTxt?.en_US || 'Share') + '"><i class="dashicons dashicons-share"></i></a>' +
563                      '<div class="share-menu" style="display:none;">' +
564                          '<a href="#" class="share-fb"><i class="dashicons dashicons-facebook"></i></a>' +
565                          '<a href="#" class="share-wa"><i class="dashicons dashicons-whatsapp"></i></a>' +
566                          '<a href="#" class="share-x"><i class="dashicons dashicons-twitter"></i></a>' +
567                          '<a href="#" class="share-email"><i class="dashicons dashicons-email-alt"></i></a>' +
568                      '</div>' +
569                  '</div>'
570                  : '') +
571          '</div>' +'</div>' +
572          '</li>';
573            return msgContent;
574        },
575        shopperMsgDom:function (msg) {
576            if(globalwpw.hasNameCookie){
577                var shopper=globalwpw.hasNameCookie;
578            } else{
579                var shopper=globalwpw.settings.obj.shopper_demo_name;
580            }
581            //var date = new Date();
582            date = new Date();
583            var msgContent='<li class="wp-chat-user-msg">' +
584                '<div style="margin-top:40px;" class="wp-chatbot-avatar">'+
585                '<img src="'+globalwpw.settings.obj.image_path+'client.png" alt="User Image">'+
586                '</div>'+
587                '<div class="wp-chatbot-agent">
587'+shopper +'</div>'
588                +'<div class="wp-chatbot-paragraph"><div class="wp-chatbot-textanimation">'+msg+'</div></div></li>';
589            return msgContent;
590        },
591        showCart:function () {
592            var data = {'action':'qcld_wb_chatbot_show_cart'}
593            this.ajax(data).done(function (response) {
594                //if cart show on message board
595                if($('#wp-chatbot-shortcode-template-container').length == 0) {
596                    $(globalwpw.settings.messageWrapper).html(response.html);
597                    $('#wp-chatbot-cart-numbers').html(response.items);
598                    $('.wp-chatbot-ball-cart-items').html(response.items);
599                    wpwKits.disableEditor(wpwKits.randomMsg(globalwpw.settings.obj.shopping_cart));
600                }else{  //Cart show on shortcode
601                    $('.wp-chatbot-cart-shortcode-container').html(response.html);
602                }
603                //Add scroll to the cart shortcode
604                if($('#wp-chatbot-shortcode-template-container').length > 0  && $('.chatbot-shortcode-template-02').length==0) {
605                    $('.wp-chatbot-cart-body').slimScroll({height: '200px', start: 'bottom'});
606                }
607            });
608        },
609        toTitlecase:function (msg) {
610            return msg.replace(/\w\S*/g, function(txt){return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();});
611        },
612        filterStopWords:function(msg){
613            var spcialStopWords=",;,/,\\,[,],{,},(,),&,*,.,+ ,?,^,$,=,!,<,>,|,:,-";
614            var userMsg="";
615            //Removing Special Characts from last position.
616            var msgLastChar=msg.slice(-1);
617            if(spcialStopWords.indexOf(msgLastChar) >= 0 ){
618                userMsg=msg.slice(0, -1);
619            }else{
620                userMsg=msg;
621            }
622            var stopWords=globalwpw.settings.obj.stop_words+spcialStopWords;
623            var stopWordsArr=stopWords.split(',');
624            var msgArr=userMsg.split(' ');
625            var filtermsgArr = msgArr.filter(function myCallBack(el){
626                return stopWordsArr.indexOf(el.toLowerCase()) < 0;
627            });
628            filterMsg=filtermsgArr.join(' ');
629            return filterMsg;
630        },
631		htmlTagsScape:function(userString) {
632           var tagsToReplace = {
633               '&': '&amp;',
634               '<': '&lt;',
635               '>': '&gt;'
636           };
637           return userString.replace(/[&<>]/g, function(tag) {
638               return tagsToReplace[tag] || tag;
639           });
640       },
641       reset: function() {
642        $('#wp-chatbot-messages-container').html('');
643        localStorage.removeItem("wpwHitory");
644        localStorage.removeItem('shopper');
645        globalwpw.wildCard=0;
646        globalwpw.ai_step=0;
647        localStorage.setItem("wildCard",  globalwpw.wildCard);
648        localStorage.setItem("aiStep", globalwpw.ai_step);
649        globalwpw.formfieldid = '';
650        localStorage.setItem("formfieldid",  globalwpw.formfieldid);
651        globalwpw.formStep='welcome';
652        localStorage.setItem("formStep",  globalwpw.formStep);
653        globalwpw.formid='';
654        localStorage.setItem("formid",  globalwpw.formid);
655        globalwpw.formentry = 0;
656        localStorage.setItem("formentry",  globalwpw.formentry);
657        localStorage.removeItem("cx-name" );
658        localStorage.removeItem("cx-diaplayname" );
659        localStorage.removeItem("cx-languagecode" );
660        localStorage.removeItem("cx-timezone" );
661       }
662    }
663    /*
664     * wpwbot Trees are basically product,order and support
665     * product tree : asking,showing & shopping part will be covered.
666     * order tree : showing order list and email to admin option.
667     * support tree : List of support query-answer including text & video and email to admin option.
668     */
669    var wpwTree={
670        greeting:function (msg) {
671            /**
672             * When Enable DialogFlow then  or else
673             */
674            
675            if(globalwpw.settings.obj.ai_df_enable==1 && globalwpw.df_status_lock==0){
676                //When intialize 1 and don't have cookies then keep  the name of shooper in in cookie
677                if(globalwpw.initialize==1 && !localStorage.getItem('shopper')  && globalwpw.wildCard==0 && globalwpw.ai_step==0 ){
678                    msg=wpwKits.toTitlecase(wpwKits.filterStopWords(msg));
679                    $.cookie("shopper", msg, { expires : 365 });
680                    localStorage.setItem('shopper',msg);
681                    globalwpw.hasNameCookie=msg;
682                    //Greeting with name and suggesting the wildcard.
683                    var NameGreeting=wpwKits.randomMsg(globalwpw.settings.obj.i_am) +" <strong>"+wpwMsg.oncommand_filter(globalwpw.settings.obj.agent)+"</strong>! "+ wpwKits.randomMsg(globalwpw.settings.obj.name_greeting);
684                    NameGreeting = NameGreeting.replace("%%username%%", msg);
685                    var serviceOffer=wpwKits.randomMsg(globalwpw.settings.obj.wildcard_msg);
686                    serviceOffer = serviceOffer.replace("%%username%%", msg);
687                    //After completing two steps messaging showing wildcards.
688                    wpwMsg.triple_nobg( NameGreeting,serviceOffer, globalwpw.wildcards )
689                    globalwpw.ai_step=1;
690                    globalwpw.wildCard=0;
691                    localStorage.setItem("wildCard",  globalwpw.wildCard);
692                    localStorage.setItem("aiStep", globalwpw.ai_step);
693                }
694                //When returning shopper then greeting with name and wildcards.
695                else if(localStorage.getItem('shopper')  && globalwpw.wildCard==0 && globalwpw.ai_step==0){
696                    //After asking service show the wildcards.
697                    var serviceOffer=wpwKits.randomMsg(globalwpw.settings.obj.wildcard_msg);
698                    globalwpw.ai_step=1;
699                    globalwpw.wildCard=0;
700                    localStorage.setItem("wildCard",  globalwpw.wildCard);
701                    localStorage.setItem("aiStep", globalwpw.ai_step);
702					if( ( globalwpw.settings.obj.show_menu_after_greetings==1) && ( globalwpw.wildcards !='' ) ){
703						wpwMsg.double_nobg(serviceOffer, globalwpw.wildcards);
704					}else{
705						wpwMsg.single(serviceOffer);
706					}
707                }
708                //When user asking needs then DialogFlow will given intent after NLP steps.
709                else if(globalwpw.wildCard==0 && globalwpw.ai_step==1){
710                    var dfReturns=wpwKits.dailogAIOAction(msg);
711                    dfReturns.done(function( response ) {
712						if(globalwpw.settings.obj.df_api_version=='v2'){
713							response = $.parseJSON(JSON.parse(response));
714						}
715                        if(wpwKits.responseIsOk(response)){
716                            var userIntent=wpwKits.getIntentName(response);
717                            
718                            if(userIntent=='start'){
719                                globalwpw.wildCard=0;
720                                var serviceOffer=wpwKits.randomMsg(globalwpw.settings.obj.wildcard_msg);
721                                console.log( globalwpw.wildcards);
722                                wpwMsg.double_nobg(serviceOffer,globalwpw.wildcards);
723                            }else if(userIntent=='welcome'){
724								var messages = wpwKits.getFulfillmentSpeech(response);
725								setTimeout(function () {
726									wpwMsg.single(messages);
727								}
727,globalwpw.settings.preLoadingTime);
728							}else if(userIntent=='help'){
729                                $(globalwpw.settings.messageWrapper).html(localStorage.getItem("wpwHitory"));
730								//Showing help message
731                                setTimeout(function () {
732                                    wpwKits.scrollTo();
733                                    
734                                    var helpWelcome = wpwKits.randomMsg(globalwpw.settings.obj.help_welcome);
735                                    var helpMsg = wpwKits.randomMsg(globalwpw.settings.obj.help_msg);
736                                    wpwMsg.double(helpWelcome,helpMsg);
737                                    //dialogflow
738                                    if(globalwpw.settings.obj.ai_df_enable==1 && globalwpw.df_status_lock==0){
739                                        globalwpw.wildCard=0;
740                                        globalwpw.ai_step=1;
741                                        localStorage.setItem("wildCard",  globalwpw.wildCard);
742                                        localStorage.setItem("aiStep", globalwpw.ai_step);
743                                    }
744                                },globalwpw.settings.preLoadingTime);
745                            }else if(userIntent=='reset'){
746                                var restWarning=globalwpw.settings.obj.reset;
747                                var confirmBtn='<span class="qcld-chatbot-reset-btn" reset-data="yes" >'+globalwpw.settings.obj.yes+'</span> <span> '+globalwpw.settings.obj.or+' </span><span class="qcld-chatbot-reset-btn"  reset-data="no">'+globalwpw.settings.obj.no+'</span>';
748                                wpwMsg.double_nobg(restWarning,confirmBtn);
749                            }else if(userIntent=='phone'){
750                                if(typeof(globalwpw.hasNameCookie)=='undefined'|| globalwpw.hasNameCookie==''){
751									var shopperName=  globalwpw.settings.obj.shopper_demo_name;
752								}else{
753									var shopperName=globalwpw.hasNameCookie;
754								}
755								var askEmail='Hello '+shopperName+'! '+ wpwKits.randomMsg(globalwpw.settings.obj.asking_phone);
756								wpwMsg.single(askEmail);
757								//Now updating the support part as .
758								globalwpw.supportStep='phone';
759								globalwpw.wildCard=1;
760								//keeping value in localstorage
761								localStorage.setItem("wildCard",  globalwpw.wildCard);
762								localStorage.setItem("supportStep",  globalwpw.supportStep);
763                            }else if(userIntent=='email'){
764                                if(typeof(globalwpw.hasNameCookie)=='undefined'|| globalwpw.hasNameCookie==''){
765									var shopperName=  globalwpw.settings.obj.shopper_demo_name;
766								}else{
767									var shopperName=globalwpw.hasNameCookie;
768								}
769								var askEmail= wpwKits.randomMsg(globalwpw.settings.obj.hello)+' '+shopperName+'! '+ wpwKits.randomMsg(globalwpw.settings.obj.asking_email);
770								wpwMsg.single(askEmail);
771								//Now updating the support part as .
772								globalwpw.supportStep='email';
773								globalwpw.wildCard=1;
774								//keeping value in localstorage
775								localStorage.setItem("wildCard",  globalwpw.wildCard);
776								localStorage.setItem("supportStep",  globalwpw.supportStep);
777                            }else if(userIntent=='faq'){
778                                globalwpw.wildCard=1;
779                                globalwpw.supportStep='welcome';
780                                wpwAction.bot('from wildcard support');
781                                //keeping value in localstorage
782                                /*localStorage.setItem("wildCard",  globalwpw.wildCard);
783                                localStorage.setItem("supportStep", globalwpw.supportStep);*/
784                            }else if(userIntent=='Default Fallback Intent'){
785                                
786								var data = {'action':'wpbo_search_response','name':globalwpw.hasNameCookie,'keyword':msg};
787								wpwKits.ajax(data).done(function (respond) {
788									var json=$.parseJSON(respond);
789									if(json.status=='success'){
790										if(typeof(json.category)!=="undefined" && json.category){
791											var question='';
792                                            $.each(json.data, function (i, obj) {
793                                                question += '<span class="qcld-chatbot-wildcard qcld_simple_txt_response"  data-strid="'+ obj.id +'">'+ obj.query +'</span>';
794                                            });
795                                            wpwMsg.single_nobg(question);
796										}else if(json.multiple){
797											var question='';
798											$.each(json.data, function (i, obj) {
799												question += '<span class="qcld-chatbot-wildcard qcld_simple_txt_response"  data-strid="'+ obj.id +'">'+ obj.query +'</span>';
800											});
801											wpwMsg.double_nobg(wpwKits.randomMsg(globalwpw.settings.obj.did_you_mean),question);
802										}else{
803												wpwMsg.single(json.data[0].response);
804												setTimeout(function(){
805													wpwMsg.single_nobg('<span class="qcld-chatbot-wildcard"  data-wildcart="back">' + wpwKits.randomMsg(globalwpw.settings.obj.back_to_start) + '</span>');
806												},globalwpw.settings.preLoadingTime*2)
807										}
808									}if(wp_chatbot_obj.disable_site_search != 1){
809                                      
810                                        wpwTree.site_search(msg)
811                                    }else{
812										msg = wpwKits.filterStopWords(msg);
813										if(globalwpw.counter == 2 ){
814											wpwTree.df_reply(response);
815											setTimeout(function(){
816												var serviceOffer=wpwKits.randomMsg(globalwpw.settings.obj.support_option_again);
817												wpwMsg.single_nobg('<span class="qcld-chatbot-wildcard qcld_back_to_start"  data-wildcart="back">' + wpwKits.randomMsg(globalwpw.settings.obj.back_to_start) + '</span>');
818											},globalwpw.settings.preLoadingTime)
819											globalwpw.counter = 0;
820										}else{
821											globalwpw.counter++;
822											wpwTree.df_reply(response);
823										}
824									}
825								})
826							}else if(wpwKits.getScore(response)!=0){ // checking is reponsing from dialogflow.
827								var sTalkAction=wpwKits.getAction(response);
828								if(sTalkAction!='' && sTalkAction.indexOf('smalltalk') != -1 ){
829									var sMgs=wpwKits.getFulfillmentText(response);
830									wpwMsg.single(sMgs);
831								}else{
832									var messages = wpwKits.getFulfillmentText(response);						
833									wpwTree.df_reply(response);
834								}
835                            }else{
836                                console.log( globalwpw.wildcards);
837                                var dfDefaultMsg=globalwpw.settings.obj.df_defualt_reply;
838								wpwMsg.double_nobg(dfDefaultMsg,globalwpw.wildcards);
839                            }
840                        }else{
841                            console.log( globalwpw.wildcards);
842                            //if bad request or limit cross then
843                            globalwpw.df_status_lock=0;
844                            var dfDefaultMsg=globalwpw.settings.obj.df_defualt_reply;
845                            wpwMsg.double_nobg(dfDefaultMsg,globalwpw.wildcards);
846                        }
847                    }).fail(function (error) {
848                        var dfDefaultMsg=globalwpw.settings.obj.df_defualt_reply;
849                        console.log( globalwpw.wildcards);
850                        wpwMsg.double_nobg(dfDefaultMsg,globalwpw.wildcards);
851                    });
852                }
853            }else{
854                //When intialize 1 and don't have cookies then keep  the name of shooper in in cookie
855                if(globalwpw.initialize==1 && !localStorage.getItem('shopper')  && globalwpw.wildCard==0){
856                    msg=wpwKits.toTitlecase(msg);
857                    msg1=wpwKits.toTitlecase(wpwKits.filterStopWords(msg));
858                    $.cookie("shopper", msg, { expires : 365 });
859                    localStorage.setItem('shopper',msg);
860                    globalwpw.hasNameCookie=msg;
861                    //Greeting with name and suggesting the wildcard.
862                    if((globalwpw.settings.obj.skip_wp_greetings=='1') || (globalwpw.settings.obj.skip_greetings_and_menu =='1') ){
863                        
864                        wpwAction.bot(msg)
865                        // var serviceOffer=wpwKits.randomMsg(globalwpw.settings.obj.wildcard_msg);
866                        // if(globalwpw.settings.obj.skip_greetings_and_menu != 0){
867                        // wpwMsg.single(serviceOffer);
868                        // }
869                        // if(globalwpw.settings.obj.skip_wp_greetings != 0){
870                        //     wpwMsg.double_nobg(serviceOffer, globalwpw.wildcards);
871                        // }
872                      
873
874                    }else{
875                        var NameGreeting=wpwKits.randomMsg(globalwpw.settings.obj.i_am) +" <strong>"+wpwMsg.oncommand_filter(globalwpw.settings.obj.agent)+"</strong>! "+wpwKits.randomMsg(globalwpw.settings.obj.name_greeting);
876                        NameGreeting = NameGreeting.replace("%%username%%", msg1);
877                        var serviceOffer=wpwKits.randomMsg(globalwpw.settings.obj.wildcard_msg);
878                        //After completing two steps messaging showing wildcards.
879                        if( ( globalwpw.settings.obj.show_menu_after_greetings!=0 ) && ( globalwpw.wildcards !='' ) ){
880                            wpwMsg.triple_nobg( NameGreeting,serviceOffer, globalwpw.wildcards )
881                           
882                        }else{
883                             wpwMsg.double( NameGreeting,serviceOffer );
884                        }
885                        
886                    }
887                }
888                //When returning shopper then greeting with name and wildcards.
889                else if(localStorage.getItem('shopper')  && global
889wpw.wildCard==0){
890                    //After asking service show the wildcards.
891                    var serviceOffer=wpwKits.randomMsg(globalwpw.settings.obj.wildcard_msg);
892                    console.log( globalwpw.wildcards);
893                    wpwMsg.double_nobg(serviceOffer,globalwpw.wildcards);
894                }
895            }
896        },
897		df_multi_handle:function(array){
898            if(array.length>0){
899                setTimeout(function(){
900                    wpwMsg.single(array[0]);
901                    array.splice(0, 1);
902                    setTimeout(function(){
903                        wpwTree.df_multi_handle(array);
904                    }, globalwpw.settings.preLoadingTime)
905                }, globalwpw.settings.preLoadingTime)
906            }
907        },
908		df_reply:function(response){
909			//checking for facebook platform
910			var i = 0;
911            var html = '';
912            var responses = [];
913            if(globalwpw.settings.obj.df_api_version=='v1'){
914                var messages = (response && response.result && response.result.fulfillment && response.result.fulfillment.messages) ? response.result.fulfillment.messages : [];
915                var action = (response && response.result && typeof response.result.actionIncomplete !== 'undefined') ? response.result.actionIncomplete : false;
916                jQuery.each( messages, function( key, message ) {
917                    html = '';
918                    i +=1;
919                    if(message.type==2){
920                        html += "<p>" + message.title + "</p>";
921                        var index = 0;
922                        for (index; index<message.replies.length; index++) {
923                            html += "<span class=\"wpb-quick-reply qcld-chat-common\">"+ message.replies[index] +"</span>";
924                        }
925                    }
926                    //check for default reply
927                    else if(message.type==0 && message.speech!=''){
928                        html += message.speech;
929                    }else if(message.type==1){
930                        html +='';
931                    }else if(message.type=='simple_response'){
932                        html += message.textToSpeech;
933                    }
934                    if(html!=''){
935                        responses.push(html);
936                    }
937                })
938            }else{
939                var messages = (response && response.queryResult && response.queryResult.fulfillmentMessages) ? response.queryResult.fulfillmentMessages : [];
940                var actioncomplete = (response && response.queryResult && typeof response.queryResult.allRequiredParamsPresent !== 'undefined') ? response.queryResult.allRequiredParamsPresent : false;
941                jQuery.each( messages, function( key, message ) {
942                    html = '';
943                    i +=1;
944                    //handeling quickreplies
945                    if(typeof message.quickReplies !=="undefined"){
946                        if(typeof message.quickReplies.title !=="undefined"){
947                            html += "<p>" + message.quickReplies.title + "</p>";
948                        }
949                        if(typeof message.quickReplies.quickReplies !=="undefined" ){
950                            var index = 0;
951                            for (index; index<message.quickReplies.quickReplies.length; index++) {
952                                html += "<span class=\"wpb-quick-reply qcld-chat-common\">"+ message.quickReplies.quickReplies[index] +"</span>";
953                            }
954                        }
955                    }
956                    //handleing default response
957                    else if(typeof message.text !=="undefined"){
958                        if(typeof message.text.text !=="undefined" && message.text.text.length>0){
959                            html += message.text.text[0];
960                        }
961                    }
962                    if(html!=''){
963                        responses.push(html);
964                    }
965                })
966            }
967            wpwTree.df_multi_handle(responses);
968		},
969        support:function (msg) {
970            if(globalwpw.wildCard==1 && globalwpw.supportStep=='welcome'){
971                var welcomeMsg= wpwKits.randomMsg(globalwpw.settings.obj.support_welcome);
972                var orPhoneSuggest = '';
973                if(globalwpw.settings.obj.support_query.length>0){
974                    var supportsItems = '';
975                    var messenger = '';
976                    if(globalwpw.settings.obj.enable_messenger==1) {
977                        messenger += '<span class="qcld-chatbot-wildcard"  data-wildcart="messenger">'+wpwKits.randomMsg(globalwpw.settings.obj.messenger_label)+'</span>';
978                    }
979                    if(globalwpw.settings.obj.enable_whats==1) {
980                        messenger += '<span class="qcld-chatbot-wildcard"  data-wildcart="whatsapp">'+wpwKits.randomMsg(globalwpw.settings.obj.whats_label)+'</span>';
981                    }
982                    if(globalwpw.settings.obj.disable_feedback=='') {
983                        messenger+= '<span class="qcld-chatbot-suggest-email" >'+wpwKits.randomMsg(globalwpw.settings.obj.feedback_label)+'</span>';
984                    }
985                    $.each(globalwpw.settings.obj.support_query, function (i, obj) {
986                        supportsItems += '<span class="qcld-chatbot-support-items"  data-query-index="' + i + '">' + obj + '</span>';
987                    });
988                    var orEmailSuggest = '<span class="qcld-chatbot-suggest-email" >' + wpwKits.randomMsg(globalwpw.settings.obj.support_email) + '</span>';
989                    if(globalwpw.settings.obj.call_sup=="") {
990                        orPhoneSuggest = '<span class="qcld-chatbot-suggest-phone" >' + wpwKits.randomMsg(globalwpw.settings.obj.support_phone) + '</span>';
991                    }
992                     var queryOrEmail=supportsItems/*+orEmailSuggest+orPhoneSuggest+messenger*/;
993                }else {
994                    if(globalwpw.settings.obj.call_sup=="") {
995                        orPhoneSuggest = '<span class="qcld-chatbot-suggest-phone" >' + wpwKits.randomMsg(globalwpw.settings.obj.support_phone) + '</span>';
996                    }
997                    var queryOrEmail='<span class="qcld-chatbot-suggest-email" >' + wpwKits.randomMsg(globalwpw.settings.obj.support_email) + '</span>'+orPhoneSuggest;
998                }
999                wpwMsg.double_nobg(welcomeMsg,queryOrEmail);
1000                globalwpw.wildCard = 0;
1001            } else if(globalwpw.wildCard==1 && globalwpw.supportStep=='email'){
1002                globalwpw.shopperEmail=msg;
1003                var validate = "";
1004                var re = /^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i;
1005                if( re.test(globalwpw.shopperEmail)!=true){
1006                    validate = validate+wpwKits.randomMsg(globalwpw.settings.obj.invalid_email) ;
1007                }
1008                if(validate == ""){
1009                    var askingMsg=wpwKits.randomMsg(globalwpw.settings.obj.asking_msg);
1010                    wpwMsg.single(askingMsg);
1011                    globalwpw.supportStep='message';
1012                    //keeping value in localstorage
1013                    localStorage.setItem("supportStep",  globalwpw.supportStep);
1014                }else{
1015                    wpwMsg.single(validate);
1016                    globalwpw.supportStep='email';
1017                    //keeping value in localstorage
1018                    localStorage.setItem("supportStep",  globalwpw.supportStep);
1019                }
1020            }else if(globalwpw.wildCard==1 && globalwpw.supportStep=='message'){
1021                var data = {'action':'qcld_wb_chatbot_support_email','name':globalwpw.hasNameCookie,'email':globalwpw.shopperEmail,'message':msg};
1022                wpwKits.ajax(data).done(function (response) {
1023                    var json=$.parseJSON(response);
1024                    var orPhoneSuggest='';
1025                    if(json.status=='success'){
1026                        var sucMsg=json.message;
1027                        wpwMsg.single(sucMsg);
1028                        //Asking email after showing answer.
1029                        setTimeout(function(){
1030                            if(globalwpw.settings.obj.call_sup=="") {
1031                                orPhoneSuggest = '<span class="qcld-chatbot-suggest-phone" >' + wpwKits.randomMsg(globalwpw.settings.obj.support_phone) + '</span>';
1032                            }
1033                            var orEmailSuggest='<span class="qcld-chatbot-suggest-email" >'+wpwKits.randomMsg(globalwpw.settings.obj.support_email)+'</span>';
1034                            wpwKits.suggestEmail(orEmailSuggest+orPhoneSuggest);
1035                            globalwpw.wildCard=0;
1036                        },globalwpw.settings.preLoadingTime);
1037                    }else{
1038                        var failMsg=json.message;
1039                        wpwMsg.single(failMsg);
1040                        //Asking email after showing answer.
1041                        setTimeout(function(){
1042                            if(globalwpw.settings.obj.call_sup=="") {
1043                                orPhoneSuggest = '<span class="qcld-chatbot-suggest-phone" >' + wpwKits.randomMsg(globalwpw.settings.obj.support_phone) + '</span>';
1044                            }
1045                            var orEmailSuggest='<span class="qcld-chatbot-suggest-email" >'+wpwKits.randomMsg(globalwpw.settings.obj.support_email)+'</span>';
1046                            wpwKits.suggestEmail(orEmailSuggest+orPhoneSuggest);
1047                            globalwpw.wildCard=0;
1048                        },globalwpw.settings.preLoadingTime);
1049                    }
1050                });
1051            }else if(globalwpw.wildCard==1 && globalwpw.supportStep=='phone'){
1052                var data = {'action':'qcld_wb_chatbot_support_phone','name':globalwpw.hasNameCookie,'phone':msg};
1053                wpwKits.ajax(data).done(function (response) {
1054                    var json=$.parseJSON(response);
1055                    var orPhoneSuggest='';
1056                    if(json.status=='success'){
1057                        var sucMsg=json.message;
1058                        wpwMsg.single(sucMsg);
1059                        //Asking email after showing answer.
1060                        setTimeout(function(){
1061                            if(globalwpw.settings.obj.call_sup=="") {
1062                                orPhoneSuggest = '<span class="qcld-chatbot-suggest-phone" >' + wpwKits.randomMsg(globalwpw.settings.obj.support_phone) + '</span>';
1063                            }
1064                            var orEmailSuggest='<span class="qcld-chatbot-suggest-email" >'+wpwKits.randomMsg(globalwpw.settings.obj.support_email)+'</span>';
1065                            wpwKits.suggestEmail(orEmailSuggest+orPhoneSuggest);
1066                            globalwpw.wildCard=0;
1067                        },globalwpw.settings.preLoadingTime);
1068                    }else{
1069                        var failMsg=json.message;
1070                        wpwMsg.single(failMsg);
1071                        //Asking email after showing answer.
1072                        setTimeout(function(){
1073                            if(globalwpw.settings.obj.call_sup=="") {
1074                                orPhoneSuggest = '<span class="qcld-chatbot-suggest-phone" >' + wpwKits.randomMsg(globalwpw.settings.obj.support_phone) + '</span>';
1075                            }
1076                            var orEmailSuggest='<span class="qcld-chatbot-suggest-email" >'+wpwKits.randomMsg(globalwpw.settings.obj.support_email)+'</span>';
1077                            wpwKits.suggestEmail(orEmailSuggest+orPhoneSuggest);
1078                            globalwpw.wildCard=0;
1079                        },globalwpw.settings.preLoadingTime);
1080                    }
1081                });
1082            }else if(globalwpw.wildCard==1 && globalwpw.supportStep=='search'){
1083                msg = wpwKits.filterStopWords(msg);
1084				var data = {'action':'wpbo_search_site','name':globalwpw.hasNameCookie,'keyword':msg};
1085				wpwKits.ajax(data).done(function (response) {
1086                    var json=$.parseJSON(response);
1087					if(json.status=='success'){
1088                        wpwMsg.double_nobg(wp_chatbot_obj.found_result_message,json.html);
1089					}else{
1090                        
1091						wpwMsg.single( wpwKits.randomMsg(wp_chatbot_obj.product_fail));
1092                        
1093						// setTimeout(function(){
1094						// 	var serviceOffer=wpwKits.randomMsg(globalwpw.settings.obj.support_option_again);
1095						// 	wpwMsg.double_nobg(serviceOffer,globalwpw.wildcards);
1096						// },globalwpw.settings.preLoadingTime)
1097					}
1098				});
1099            }//
1100        },
1101		formbuilder:function(msg){
1102            if(globalwpw.wildCard==7 && globalwpw.formStep=='welcome'){
1103                var data = {'action':'wpbot_get_form','formid':msg};
1104				wpwKits.ajax(data).done(function (response) {
1105					if(response!=''){
1106						var json=$.parseJSON(response);  
1107						globalwpw.prevform = json.ID;						
1108						globalwpw.formfieldid = json.ID;
1109						localStorage.setItem("formfieldid",  globalwpw.formfieldid);
1110						globalwpw.formStep='field';
1111						localStorage.setItem("formStep",  globalwpw.formStep);
1112						globalwpw.formid=msg;
1113						localStorage.setItem("formid",  globalwpw.formid);
1114						localStorage.setItem("wildCard",  globalwpw.wildCard);
1115						var label = json.label;
1116						if(json.type=='dropdown'){
1117							var html = '';
1118							jQuery.each(json.config.option, function(key, value){
1119								html += '<span class="qcld-chatbot-wildcard qcld-chatbot-formanswer" data-form-value="'+value.value+'" >'+value.label+'</span>';
1120							})
1121							wpwMsg.double(label, html);
1122						}else if(json.type=='checkbox'){
1123							var html = '';
1124							jQuery.each(json.config.option, function(key, value){                            
1125								html += '<input type="checkbox" class="qcld-chatbot-checkbox" value="'+value.value+'">'+value.label+'<br>';
1126							})
1127							wpwMsg.double(label, html);
1128						}else if(json.type=='html'){
1129							wpwMsg.single(json.config.default);
1130							globalwpw.formfieldid = json.ID;
1131							localStorage.setItem("formfieldid",  globalwpw.formfieldid);
1132							globalwpw.formentry = json.entry;
1133							localStorage.setItem("formentry",  globalwpw.formentry);
1134							setTimeout(function(){
1135								wpwTree.formbuilder();
1136							}, globalwpw.settings.preLoadingTime)
1137						}else{
1138								wpwMsg.single(label);
1139						}
1140					}
1141                })
1142            }else if(globalwpw.wildCard==7 && globalwpw.formStep=='field'){
1143                var data = {'action':'wpbot_capture_form_value','formid':globalwpw.formid, 'fieldid': globalwpw.formfieldid, 'answer': msg, 'entry':globalwpw.formentry,'session': localStorage.getItem('botsessionid'), 'name': globalwpw.hasNameCookie,'email':localStorage.getItem('shopperemail'), 'url': window.location.href};
1144				wpwKits.ajax(data).done(function (response) {
1145                    var json=$.parseJSON(response);
1146                    if(json.status=='incomplete'){
1147						if( json.type !='html' ){
1148                            if($('.chatbot_intent_reload').length > 0){
1149                                $('.chatbot_intent_reload').remove();
1150                            }
1151                            $('#wp-chatbot-editor-container').append('<span class="chatbot_intent_reload" title="Click to go back." data-wildcard="7" data-step="welcome" data-intent-type="formbuilder" data-intent="'+globalwpw.prevform+'"><i class="dashicons dashicons-controls-repeat"></i></span>');
1152                            globalwpw.prevform = globalwpw.formfieldid;
1153                        }
1154                        globalwpw.formStep='field';
1155                        localStorage.setItem("formStep",  globalwpw.formStep);
1156                        globalwpw.formfieldid = json.ID;
1157                        localStorage.setItem("formfieldid",  globalwpw.formfieldid);
1158                        globalwpw.formentry = json.entry;
1159                        localStorage.setItem("formentry",  global
1159wpw.formentry);
1160                        var label = json.label;
1161                        if(json.type=='dropdown'){
1162                            var html = '';
1163                            jQuery.each(json.config.option, function(key, value){
1164                                html += '<span class="qcld-chatbot-wildcard qcld-chatbot-formanswer" data-form-value="'+value.value+'" >'+value.label+'</span>';
1165                            })
1166                            wpwMsg.double(label, html);
1167                        }else if(json.type=='html'){
1168                            wpwMsg.single(json.config.default);
1169                            globalwpw.formfieldid = json.ID;
1170                            localStorage.setItem("formfieldid",  globalwpw.formfieldid);
1171                            globalwpw.formentry = json.entry;
1172                            localStorage.setItem("formentry",  globalwpw.formentry);
1173                            setTimeout(function(){
1174                                wpwTree.formbuilder();
1175                            }, 500)
1176                        }else if(json.type=='checkbox'){
1177                            jQuery('.qcld-chatbot-checkbox').val('');
1178							var html = '';
1179							jQuery.each(json.config.option, function(key, value){                            
1180								html += '<input type="checkbox" class="qcld-chatbot-checkbox" value="'+value.value+'">'+value.label+'<br>';
1181							})
1182							wpwMsg.double(label, html);
1183						}else if(json.type=='date_picker'){
1184                            if(json.hasOwnProperty("additional") && json.additional!=''){
1185								label +='<i class="wpbot_addition_label">'+json.additional+'</i>'; 
1186							}
1187							wpwMsg.single(label);
1188                            jQuery('#wp-chatbot-editor').blur();
1189                            jQuery('#wp-chatbot-editor').datetimepicker();
1190                        }else if(json.type=='number'){
1191                            if(json.hasOwnProperty("additional") && json.additional!=''){
1192								label +='<i class="wpbot_addition_label">'+json.additional+'</i>'; 
1193							}
1194							wpwMsg.single(label);
1195                            jQuery('#wp-chatbot-editor').addClass("qcnumberfield");
1196							if(json.hasOwnProperty("config") && json.config.hasOwnProperty("min") && json.config.min>0){
1197								jQuery('#wp-chatbot-editor').attr("minlength", json.config.min);
1198							}
1199							if(json.hasOwnProperty("config") && json.config.hasOwnProperty("max") && json.config.max>0){
1200								jQuery('#wp-chatbot-editor').attr("maxlength", json.config.max);
1201							}
1202                        }else if(json.type=='email'){
1203                            if(json.hasOwnProperty("additional") && json.additional!=''){
1204								label +='<i class="wpbot_addition_label">'+json.additional+'</i>'; 
1205							}
1206							wpwMsg.single(label);
1207                            jQuery('#wp-chatbot-editor').attr("type", "email");
1208                        }else if(json.type=='url'){
1209                            if(json.hasOwnProperty("additional") && json.additional!=''){
1210								label +='<i class="wpbot_addition_label">'+json.additional+'</i>'; 
1211							}
1212							wpwMsg.single(label);
1213                            jQuery('#wp-chatbot-editor').attr("type", "url");
1214                        }else if(json.type=='phone'){
1215							wpwMsg.single(label);
1216                            jQuery('#wp-chatbot-editor').addClass('qcphonebasicus');
1217                        }else if(json.type=='calculation'){
1218                            let calresult = json.calresult;
1219                            calresult = eval(calresult);
1220                            setTimeout(function(){
1221                                var cal = (json.calbefore +' '+ calresult.toFixed(2) +' '+ json.calafter)
1222                                wpwTree.formbuilder(cal);
1223                                wpwMsg.single(cal);
1224                            }, globalwpw.settings.preLoadingTime)
1225                        }else if(json.type=='hidden'){
1226                            var email = json.config.default;
1227                            if( globalwpw.settings.obj.order_login == 1 && json.slug=='email' ){
1228                                email = globalwpw.settings.obj.order_email;
1229                            }
1230                            wpwTree.formbuilder(email);
1231                        }else if(json.type=='text'){
1232							wpwMsg.single(label);
1233						}else{
1234                           // wpwMsg.single(label);
1235                        }
1236                    }else{
1237						if($('.chatbot_intent_reload').length > 0){
1238							$('.chatbot_intent_reload').attr('data-step', 'complete');
1239						}
1240                        globalwpw.formfieldid = '';
1241                        localStorage.setItem("formfieldid",  globalwpw.formfieldid);
1242                        globalwpw.formStep='welcome';
1243                        localStorage.setItem("formStep",  globalwpw.formStep);
1244                        globalwpw.formid='';
1245                        localStorage.setItem("formid",  globalwpw.formid);
1246                        globalwpw.wildCard = 0;
1247                        localStorage.setItem("wildCard",  globalwpw.wildCard);
1248                        globalwpw.formentry = 0;
1249                        localStorage.setItem("formentry",  globalwpw.formentry);
1250						var serviceOffer=wpwKits.randomMsg(globalwpw.settings.obj.wildcard_msg);
1251                        setTimeout(function(){
1252                            wpwMsg.single_nobg('<span class="qcld-chatbot-wildcard qcld_back_to_start"  data-wildcart="back">' + wpwKits.randomMsg(globalwpw.settings.obj.back_to_start) + '</span>');
1253                        }, globalwpw.settings.preLoadingTime);
1254						if(jQuery('.chatbot_intent_reload').length>0){
1255                            jQuery('.chatbot_intent_reload').remove();
1256                        }
1257                    }
1258                })
1259            }
1260        },
1261        formbuilder_force_complete:function(msg){
1262            //destroy date picker
1263            //if ( jQuery.isFunction(jQuery.fn.datetimepicker) ) {
1264                if ( typeof jQuery.fn.datetimepicker === 'function' ) {
1265                    jQuery('#wp-chatbot-editor').datetimepicker('destroy');
1266                }
1267                jQuery('#wp-chatbot-editor').attr("type", "text");
1268                jQuery('#wp-chatbot-editor').prop("disabled", false);
1269                jQuery('#wp-chatbot-editor').removeAttr("multiple");
1270                jQuery('#wp-chatbot-editor').removeClass('qcphonebasicus');
1271                jQuery('#wp-chatbot-editor').removeClass("qcnumberfield");
1272                jQuery('#wp-chatbot-editor').removeAttr("minlength");
1273                jQuery('#wp-chatbot-editor').removeAttr("maxlength");
1274                if(globalwpw.wildCard==7 && globalwpw.formStep=='field'){
1275                    var data = {'action':'wpbot_capture_form_value','formid':globalwpw.formid, 'fieldid': globalwpw.formfieldid, 'answer': msg, 'entry':globalwpw.formentry, 'session': localStorage.getItem('botsessionid'), 'name':globalwpw.hasNameCookie, 'email':localStorage.getItem('shopperemail'), 'url': window.location.href, 'do_complete': 1};
1276                    globalwpw.formfieldid = '';
1277                    localStorage.setItem("formfieldid",  globalwpw.formfieldid);
1278                    globalwpw.formStep='welcome';
1279                    localStorage.setItem("formStep",  globalwpw.formStep);
1280                    globalwpw.formid='';
1281                    localStorage.setItem("formid",  globalwpw.formid);
1282                    globalwpw.wildCard = 0;
1283                    localStorage.setItem("wildCard",  globalwpw.wildCard);
1284                    globalwpw.formentry = 0;
1285                    localStorage.setItem("formentry",  globalwpw.formentry);
1286                    wpwKits.ajax(data).done(function (response) {
1287                        var json=$.parseJSON(response);
1288                        if( json.status == 'complete' ){
1289                            //
1290                        }
1291                    })
1292                }
1293        },
1294		reset: function( msg ){
1295			if( globalwpw.wildCard == 25 && globalwpw.resetStep == 'welcome' ){
1296				var restWarning= globalwpw.settings.obj.reset;
1297				var confirmBtn='<span class="qcld-chatbot-reset-btn" reset-data="yes" >'+globalwpw.settings.obj.yes+'</span> <span> '+globalwpw.settings.obj.or+' </span><span class="qcld-chatbot-reset-btn"  reset-data="no">'+globalwpw.settings.obj.no+'</span>';
1298				globalwpw.resetStep = 'answer'
1299				wpwMsg.double_nobg(restWarning,confirmBtn);
1300                setTimeout(function(){
1301                 //   wpwKits.disableEditor('');   
1302                }, 1500)
1303			}else if( globalwpw.wildCard == 25 && globalwpw.resetStep == 'answer' ){
1304				if( msg.toLowerCase() == globalwpw.settings.obj.yes.toLowerCase() ){
1305					wpwKits.reset();
1306                    var number = Math.random() // 0.9394456857981651
1307                    number.toString(36); // '0.xtis06h6'
1308                    var id = number.toString(36).substr(2); // 'xtis06h6'
1309                    localStorage.setItem('botsessionid', id);
1310                    wpwWelcome.greeting();
1311                    wpwKits.enableEditor(wpwKits.randomMsg(globalwpw.settings.obj.send_a_msg));
1312				}else if( msg.toLowerCase() == globalwpw.settings.obj.no.toLowerCase() ){
1313					
1314					wpwAction.bot(globalwpw.settings.obj.sys_key_help.toLowerCase());
1315                    wpwKits.enableEditor(wpwKits.randomMsg(globalwpw.settings.obj.send_a_msg));
1316				}
1317				globalwpw.wildCard = 0;
1318				globalwpw.resetStep = 'welcome'
1319			}
1320        },
1321        formatResponse: function(response) {
1322            let cleanResponse = response.replace(/(\w+)\n/g,''); 
1323                cleanResponse = cleanResponse.replace(/(.*?)/gs, '<pre>$1</pre>');
1324                cleanResponse = cleanResponse.replace(/(.*?)/g, '<code>$1</code>');
1325            return cleanResponse;
1326        },
1327        openai_reply:function(msg){
1328
1329        if(globalwpw.settings.obj.openai_enabled == 1){
1330
1331            var customAappend = globalwpw.settings.obj.qcld_openai_append_content;
1332            var customMessage = customAappend ? msg + ' ' + customAappend : msg;
1333
1334            var data = {'action':'qcld_openai_response','name':globalwpw.hasNameCookie,'keyword':customMessage,nonce: qcld_chatbot_obj.nonce};
1335
1336            wpwKits.ajax(data).done(function (res) {
1337                var json=$.parseJSON(res);
1338                
1339                if(json.status=='success'){
1340                    var serviceOffer=wpwKits.randomMsg(globalwpw.settings.obj.support_option_again);
1341                   
1342                    
1343                    
1344                    setTimeout(function(){
1345                        // Add custom message if available in response
1346                        
1347                        wpwMsg.single(json.message);
1348                        
1349                        if((globalwpw.settings.obj.qcld_disable_repited_startmenu != "1")){
1350                            if(globalwpw.settings.obj.disable_repeatative!=1){
1351                                setTimeout(function(){
1352                                        var serviceOffer=wpwKits.randomMsg(globalwpw.settings.obj.support_option_again);
1353                                        if((globalwpw.settings.obj.qcld_disable_start_menu != "1")){
1354                                            wpwMsg.single_nobg('<span class="qcld-chatbot-wildcard qcld_back_to_start"  data-wildcart="back">' + wpwKits.randomMsg(globalwpw.settings.obj.back_to_start) + '</span>');
1355                                        }
1356                                }
1356,globalwpw.settings.preLoadingTime)
1357                            }else{
1358                                setTimeout(function(){
1359                                    if((globalwpw.settings.obj.qcld_disable_repited_startmenu != "1")){
1360                                        wpwMsg.single_nobg('<span class="qcld-chatbot-wildcard qcld_back_to_start"  data-wildcart="back">' + wpwKits.randomMsg(globalwpw.settings.obj.back_to_start) + '</span>');
1361                                    }
1362                                }, globalwpw.settings.preLoadingTime*2);
1363                            }
1364                        }
1365                        $(globalwpw.settings.messageContainer).find('.wp-chatbot-msg:last .qcld-like-dislike-icon').css('display', 'block');
1366            
1367                    },globalwpw.settings.preLoadingTime)
1368                }
1369            })
1370        }
1371        if(globalwpw.settings.obj.openrouter_enabled == 1){
1372 
1373            var customAappend = globalwpw.settings.obj.qcld_openrouter_append_content;
1374            var customprepend = globalwpw.settings.obj.qcld_openrouter_prepend_content;
1375            var customMessage = customprepend ? customprepend + ' ' + msg : msg;
1376            customMessage = customAappend ? customMessage + ' ' + customAappend : customMessage;
1377            
1378            var data = {'action':'openrouter_response','name':globalwpw.hasNameCookie,'keyword':customMessage};
1379            wpwKits.ajax(data).done(function (res) {
1380                var json=$.parseJSON(res);
1381                
1382                if(json.status=='success'){
1383                    var serviceOffer=wpwKits.randomMsg(globalwpw.settings.obj.support_option_again);
1384                    
1385                    setTimeout(function(){
1386                        wpwMsg.single(json.message);
1387                        
1388                        if((globalwpw.settings.obj.qcld_disable_repited_startmenu != "1")){
1389                            if(globalwpw.settings.obj.disable_repeatative!=1){
1390                                setTimeout(function(){
1391                                        var serviceOffer=wpwKits.randomMsg(globalwpw.settings.obj.support_option_again);
1392                                        if((globalwpw.settings.obj.qcld_disable_start_menu != "1")){
1393                                            wpwMsg.single_nobg('<span class="qcld-chatbot-wildcard qcld_back_to_start"  data-wildcart="back">' + wpwKits.randomMsg(globalwpw.settings.obj.back_to_start) + '</span>');
1394                                        }
1395                                },globalwpw.settings.preLoadingTime)
1396                            }else{
1397                                setTimeout(function(){
1398                                    if((globalwpw.settings.obj.qcld_disable_repited_startmenu != "1")){
1399                                        wpwMsg.single_nobg('<span class="qcld-chatbot-wildcard qcld_back_to_start"  data-wildcart="back">' + wpwKits.randomMsg(globalwpw.settings.obj.back_to_start) + '</span>');
1400                                    }
1401                                }, globalwpw.settings.preLoadingTime*2);
1402                            }
1403                        }
1404                    },globalwpw.settings.preLoadingTime)
1405                }else{
1406                    wpwMsg.single_nobg('<span class="qcld-chatbot-wildcard qcld_back_to_start"  data-wildcart="back">' + 'Sorry, I encountered an error processing your AI request. Please check api key and try again later.' + '</span>');
1407                }
1408            })
1409        }
1410        if(globalwpw.settings.obj.gemini_enabled == 1){
1411            var customAappend = globalwpw.settings.obj.qcld_openrouter_append_content;
1412            var customprepend = globalwpw.settings.obj.qcld_openrouter_prepend_content;
1413            var customMessage = customprepend ? customprepend + ' ' + msg : msg;
1414            customMessage = customAappend ? customMessage + ' ' + customAappend : customMessage;
1415            
1416            var data = {'action':'qcld_gemini_response','name':globalwpw.hasNameCookie,'keyword':customMessage};
1417            wpwKits.ajax(data).done(function (res) {
1418                var json=$.parseJSON(res);
1419                
1420                if(json.status=='success'){
1421                    var serviceOffer=wpwKits.randomMsg(globalwpw.settings.obj.support_option_again);
1422                    
1423                    setTimeout(function(){
1424                        wpwMsg.single(json.message);
1425                        
1426                        if((globalwpw.settings.obj.qcld_disable_repited_startmenu != "1")){
1427                            if(globalwpw.settings.obj.disable_repeatative!=1){
1428                                setTimeout(function(){
1429                                        var serviceOffer=wpwKits.randomMsg(globalwpw.settings.obj.support_option_again);
1430                                        if((globalwpw.settings.obj.qcld_disable_start_menu != "1")){
1431                                            wpwMsg.single_nobg('<span class="qcld-chatbot-wildcard qcld_back_to_start"  data-wildcart="back">' + wpwKits.randomMsg(globalwpw.settings.obj.back_to_start) + '</span>');
1432                                        }
1433                                }
1433,globalwpw.settings.preLoadingTime)
1434                            }else{
1435                                setTimeout(function(){
1436                                    if((globalwpw.settings.obj.qcld_disable_repited_startmenu != "1")){
1437                                        wpwMsg.single_nobg('<span class="qcld-chatbot-wildcard qcld_back_to_start"  data-wildcart="back">' + wpwKits.randomMsg(globalwpw.settings.obj.back_to_start) + '</span>');
1438                                    }
1439                                }, globalwpw.settings.preLoadingTime*2);
1440                            }
1441                        }
1442                    },globalwpw.settings.preLoadingTime)
1443                }else{
1444                    wpwMsg.single_nobg('<span class="qcld-chatbot-wildcard qcld_back_to_start"  data-wildcart="back">' + 'Sorry, I encountered an error processing your AI request. Please check api key and try again later.' + '</span>');
1445                }
1446            })
1447        }
1448        },
1449        site_search:function(msg){
1450            msg1 = wpwKits.filterStopWords(msg);
1451            var data = {'action':'wpbo_search_site','name':globalwpw.hasNameCookie,'keyword':msg1};
1452            wpwKits.ajax(data).done(function (res) {
1453                var json=$.parseJSON(res);
1454                  $(globalwpw.settings.messageContainer).find('.wp-chatbot-msg:last .qcld-like-dislike-icon').css('display', 'block');
1455               
1456                if(json.status=='success'){
1457                   wpwMsg.triple_nobg( wp_chatbot_obj.found_result_message,json.html,'<span class="qcld-chatbot-wildcard"  data-wildcart="back">' + wpwKits.randomMsg(globalwpw.settings.obj.back_to_start) + '</span>' );
1458                //    wpwMsg.single_nobg('<span class="qcld-chatbot-wildcard qcld_back_to_start"  data-wildcart="back">' + wpwKits.randomMsg(globalwpw.settings.obj.back_to_start) + '</span>');
1459                }else if( (globalwpw.settings.obj.openai_enabled == 1) || (wp_chatbot_obj.openai_enabled == 1) || (globalwpw.settings.obj.openrouter_enabled == 1) || (wp_chatbot_obj.openrouter_enabled == 1) || (globalwpw.settings.obj.gemini_enabled == 1) || (wp_chatbot_obj.gemini_enabled == 1) ){
1460                             if($(globalwpw.settings.messageLastChild+' .wp-chatbot-comment-loader').length==0){
1461                                    $(globalwpw.settings.messageContainer).append(wpwKits.botPreloader());
1462                                }
1463                    wpwTree.openai_reply(msg);
1464                }else{
1465                    wpwMsg.double_nobg( wpwKits.randomMsg(wp_chatbot_obj.product_fail ),'<span class="qcld-chatbot-wildcard qcld_back_to_start"  data-wildcart="back">' + wpwKits.randomMsg(globalwpw.settings.obj.back_to_start) + '</span>');
1466                }
1467            })  
1468        }
1469    };
1470    /*
1471     * wpwbot Actions are divided into two part
1472     * shopper will response after initialize message,
1473     * then based on shopper activities shopper will act.
1474     */
1475    var wpwAction={
1476        findkey:function(array, msg){
1477            var index = -1;
1478            $.each( array, function( key, value ) {
1479                value = jQuery.map(value, function(n,i){return n.toLowerCase();});
1480                if(value.indexOf(msg.toLowerCase()) > -1){
1481                    index = key;
1482                    return false;
1483                }
1484            });
1485            return index;
1486        },
1487       bot:function(msg){
1488            var simple_response_intent = globalwpw.settings.obj.simple_response_intent;
1489            if(simple_response_intent.length>0){
1490                simple_response_intent = jQuery.map(simple_response_intent, function(n,i){return n.toLowerCase();});
1491            }
1492            var allformname = jQuery.map(globalwpw.settings.obj.forms, function(n,i){return n.toLowerCase();});
1493            var allformcommand = globalwpw.settings.obj.form_commands;
1494            if(globalwpw.wildcardsHelp.indexOf(msg.toLowerCase())>-1){
1495                
1496                    if(globalwpw.wildCard==7){
1497                        wpwTree.formbuilder_force_complete( msg );
1498                    }
1499                    if(msg.toLowerCase()==globalwpw.settings.obj.sys_key_help.toLowerCase()){
1500                 
1501                        globalwpw.wildCard=0;
1502                        var serviceOffer=wpwKits.randomMsg(globalwpw.settings.obj.wildcard_msg);
1503                        console.log(globalwpw.wildcards);
1504                        wpwMsg.double_nobg(serviceOffer,globalwpw.wildcards);
1505                    }
1506                    if(msg.toLowerCase()==globalwpw.settings.obj.sys_key_support.toLowerCase()){
1507                        globalwpw.wildCard=1;
1508                        globalwpw.supportStep='welcome';
1509                        wpwTree.support(msg);
1510                    }
1511                    // if(msg.toLowerCase()==globalwpw.settings.obj.sys_key_product.toLowerCase()){
1512                    //     globalwpw.wildCard=20;
1513                    //     globalwpw.productStep='asking';
1514                    //  //   wpwTree.product(msg);
1515                    // }
1516                    if(globalwpw.settings.obj.woocommerce){
1517                        if(msg.toLowerCase()==globalwpw.settings.obj.sys_key_catalog.toLowerCase()){
1518                            globalwpw.wildCard=20;
1519                            globalwpw.productStep='search';
1520                            wpwKits.sugestCat();
1521                        }
1522                        if(msg.toLowerCase()==globalwpw.settings.obj.sys_key_order.toLowerCase()){
1523                            globalwpw.wildCard=21;
1524                            globalwpw.orderStep='welcome';
1525                            wpwTree.order(msg);
1526                        }
1527                    }
1528                    if( globalwpw.settings.obj.open_a_ticket && msg.toLowerCase()==globalwpw.settings.obj.open_a_ticket.toLowerCase() && globalwpw.settings.obj.ticket_url!=''){
1529                        //comming
1530                        window.open(globalwpw.settings.obj.ticket_url, '_blank');
1531                        wpwKits.enableEditor(wpwKits.randomMsg(globalwpw.settings.obj.send_a_msg));
1532                    }
1533                    if(msg.toLowerCase()==globalwpw.settings.obj.sys_key_reset.toLowerCase()){
1534                        globalwpw.wildCard=25;
1535                        globalwpw.resetStep='welcome';
1536                        wpwTree.reset(msg);
1537                    }
1538                    if(msg.toLowerCase()==globalwpw.settings.obj.sys_key_email.toLowerCase()){
1539                    // var shopperChoice=$(this).text();
1540                        wpwMsg.shopper_choice(globalwpw.settings.obj.sys_key_email.toLowerCase());
1541                        //Then ask email address
1542                        if(typeof(globalwpw.hasNameCookie)=='undefined'|| globalwpw.hasNameCookie==''){
1543                            var shopperName=  globalwpw.settings.obj.shopper_demo_name;
1544                        }else{
1545                            var shopperName=globalwpw.hasNameCookie;
1546                        }
1547                        var askEmail= wpwKits.randomMsg(globalwpw.settings.obj.hello)+' '+shopperName+'! '+ wpwKits.randomMsg(globalwpw.settings.obj.asking_email);
1548                        wpwMsg.single(askEmail);
1549                        globalwpw.supportStep='email';
1550                        globalwpw.wildCard=1;
1551                        localStorage.setItem("wildCard",  globalwpw.wildCard);
1552                        localStorage.setItem("supportStep",  globalwpw.supportStep);
1553                    }
1554                    if( globalwpw.settings.obj.sys_key_livechat && msg.toLowerCase()==globalwpw.settings.obj.sys_key_livechat.toLowerCase()){
1555                        wpwKits.enableEditor(wpwKits.randomMsg(globalwpw.settings.obj.send_a_msg));
1556                        if(globalwpw.settings.obj.is_livechat_active){
1557                            if(globalwpw.settings.obj.disable_livechat_operator_offline==1){
1558                                if(globalwpw.settings.obj.is_operator_online==1){
1559                                    $(globalwpw.settings.messageWrapper).html(localStorage.getItem("wpwHitory"));
1560                                    if($('#wbca_signup_fullname').length>0){
1561                                        if(localStorage.getItem('shopper')!==null){
1562                                            $('#wbca_signup_fullname').val(localStorage.getItem('shopper'));
1563                                        }
1564                                        if(localStorage.getItem('shopperemail')!==null){
1565                                            $('#wbca_signup_email').val(localStorage.getItem('shopperemail'));
1566                                        }
1567                                    }
1568                                    $("#wp-chatbot-board-container").removeClass('active-chat-board');
1569                                    $('.wp-chatbot-container').hide();
1570                                    $('.wpbot-saas-live-chat').show();
1571                                }
1572                            }else{
1573                                $(globalwpw.settings.messageWrapper).html(localStorage.getItem("wpwHitory"));
1574                                if($('#wbca_signup_fullname').length>0){
1575                                    if(localStorage.getItem('shopper')!==null){
1576                                        $('#wbca_signup_fullname').val(localStorage.getItem('shopper'));
1577                                    }
1578                                    if(localStorage.getItem('shopperemail')!==null){
1579                                        $('#wbca_signup_email').val(localStorage.getItem('shopperemail'));
1580                                    }
1581                                }
1582                                $("#wp-chatbot-board-container").removeClass('active-chat-board');
1583                                $('.wp-chatbot-container').hide();
1584                                $('.wpbot-saas-live-chat').show();
1585                            }
1586                        }
1587                    }
1588                }else if(allformname.indexOf(msg.toLowerCase()) > -1 || this.findkey(allformcommand, msg)> -1){
1589                    //Form builder commands form name
1590                    if(globalwpw.wildCard==7){
1591                        wpwTree.formbuilder_force_complete( msg );
1592                    }
1593                    var index = (allformname.indexOf(msg.toLowerCase()) > -1?allformname.indexOf(msg.toLowerCase()):this.findkey(allformcommand, msg));
1594                    var formid=globalwpw.settings.obj.form_ids[index];
1595                    globalwpw.wildCard=7;
1596                    globalwpw.formStep='welcome';
1597                    wpwTree.formbuilder(formid);
1598                }else if(simple_response_intent.indexOf(msg.toLowerCase()) > -1){
1599                    if(globalwpw.wildCard==7){
1600                        wpwTree.formbuilder_force_complete( msg );
1601                    }
1602                    var data = {'action':'wpbo_search_responseby_intent','name':globalwpw.hasNameCookie,'keyword':msg, 'language':globalwpw.settings.obj.language};
1603                    if($(globalwpw.settings.messageLastChild+' .wp-chatbot-comment-loader').length==0){
1604                        $(globalwpw.settings.messageContainer).append(wpwKits.botPreloader());
1605                    }
1606                    wpwKits.ajax(data).done(function (response) {
1607                        var json=$.parseJSON(response);
1608                        if(json.status=='success'){
1609                            wpwMsg.single(json.html);
1610                            var serviceOffer=wpwKits.randomMsg(globalwpw.settings.obj.wildcard_msg);
1611                            if( typeof(json.followup)!=="undefined" && json.followup!='' ){
1612                                setTimeout(function(){
1613                                    wpwMsg.single(json.followup);
1614                                }, globalwpw.settings.preLoadingTime*2);
1615                            }else{
1616                                // if(globalwpw.settings.obj.disable_repeatative!=1){
1617                                //     setTimeout(function(){
1618                                //         wpwMsg.double_nobg(serviceOffer, globalwpw.wildcards);
1619                                //     }, globalwpw.settings.preLoadingTime*2);
1620                                // }else{
1621                                    setTimeout(function(){
1622                                           $(globalwpw.settings.messageContainer).find('.wp-chatbot-msg:last .qcld-like-dislike-icon').css('display', 'block');
1623               
1624                                        wpwMsg.single_nobg('<span class="qcld-chatbot-wildcard qcld_back_to_start"  data-wildcart="back">' + wpwKits.randomMsg(globalwpw.settings.obj.back_to_start) + '</span>');
1625                                    }, globalwpw.settings.preLoadingTime*2);
1626                               // }
1627                            }
1628                        }
1629                    })
1630                }else{
1631                    /*
1632                    *   Greeting part
1633                    *   bot action
1634                    */
1635                    if(globalwpw.wildCard==0){
1636                        //When intialize 1 and don't have cookies then keep  the name of shooper in in cookie
1637                        if(globalwpw.initialize==1 && !localStorage.getItem('shopper')  && global
1637wpw.wildCard==0){
1638                            wpwTree.greeting(msg);
1639                        }else if(globalwpw.settings.obj.ai_df_enable==1 && globalwpw.df_status_lock==0){
1640                            wpwTree.greeting(msg);
1641                        }else if(localStorage.getItem('default_asking_email')){
1642                            wpwTree.greeting(msg);
1643                        }else if(localStorage.getItem('default_asking_phone')){
1644                            wpwTree.greeting(msg);
1645                        }else{
1646                            //simple text response wrapper
1647                         
1648                            var data = {'action':'wpbo_search_response','name':globalwpw.hasNameCookie,'keyword':msg, 'language':globalwpw.settings.obj.language};
1649                              if(wp_chatbot_obj.disable_site_search == 1){
1650                                if($(globalwpw.settings.messageLastChild+' .wp-chatbot-comment-loader').length==0){
1651                                    $(globalwpw.settings.messageContainer).append(wpwKits.botPreloader());
1652                                }
1653                            }
1654                            wpwKits.ajax(data).done(function (response) {
1655                                var json=$.parseJSON(response);
1656                                
1657                                if(json.status=='fail' && json.data !==''){
1658
1659                                    if(wp_chatbot_obj.disable_site_search != 1){
1660                                        wpwTree.site_search(msg)
1661                                    }
1662                                    else if( (globalwpw.settings.obj.openai_enabled == 1) || (wp_chatbot_obj.openai_enabled == 1) || (globalwpw.settings.obj.openrouter_enabled == 1) || (wp_chatbot_obj.openrouter_enabled == 1) || (globalwpw.settings.obj.gemini_enabled == 1) || (wp_chatbot_obj.gemini_enabled == 1) ){
1663                                        wpwTree.openai_reply(msg)
1664                                    }else{
1665                                        wpwMsg.single(globalwpw.settings.obj.empty_filter_msg);
1666                                    }
1667                                }else if(json.status=='success'){
1668                                    if(typeof(json.category)!=="undefined" && json.category){
1669                                        var question='';
1670                                        $.each(json.data, function (i, obj) {
1671                                            question += '<span class="qcld-chatbot-wildcard qcld_simple_txt_response"  data-strid="'+ obj.id +'">'+ obj.query +'</span>';
1672                                        });
1673                                        wpwMsg.single_nobg(question);
1674                                    }
1675                                    else if(json.multiple){
1676                                        var question='';
1677                                        $.each(json.data, function (i, obj) {
1678                                            question += '<span class="qcld-chatbot-wildcard qcld_simple_txt_response"  data-strid="'+ obj.id +'">'+ obj.query +'</span>';
1679                                        });
1680                                        wpwMsg.double_nobg(wpwKits.randomMsg(globalwpw.settings.obj.did_you_mean),question);
1681                                    }else{
1682                                            wpwMsg.single(json.data[0].response);
1683                                            var serviceOffer=wpwKits.randomMsg(globalwpw.settings.obj.wildcard_msg);
1684                                            if( typeof(json.data[0].followup)!=="undefined" && json.data[0].followup!='' ){
1685                                                setTimeout(function(){
1686                                                    wpwMsg.single(json.data[0].followup);
1687                                                }, globalwpw.settings.preLoadingTime*2);
1688                                            }else{
1689                                                // if(globalwpw.settings.obj.disable_repeatative!=1){
1690                                                //     setTimeout(function(){
1691                                                //         wpwMsg.double_nobg(serviceOffer, globalwpw.wildcards);
1692                                                //     }
1692, globalwpw.settings.preLoadingTime*2);
1693                                                // }else{
1694                                                    setTimeout(function(){
1695                                                           $(globalwpw.settings.messageContainer).find('.wp-chatbot-msg:last .qcld-like-dislike-icon').css('display', 'block');
1696               
1697                                                        wpwMsg.single_nobg('<span class="qcld-chatbot-wildcard qcld_back_to_start"  data-wildcart="back">' + wpwKits.randomMsg(globalwpw.settings.obj.back_to_start) + '</span>');
1698                                                    }, globalwpw.settings.preLoadingTime*2);
1699                                              // }
1700                                            }
1701                                    }
1702                                }else{
1703                                    //Default intents site search
1704                                    msg = wpwKits.filterStopWords(msg);
1705                                    if(globalwpw.settings.obj.woocommerce){
1706                                        var data = {'action':'qcld_wb_chatbot_keyword', 'keyword':msg};
1707                                        //Products by string search ajax handler.
1708                                        if($(globalwpw.settings.messageLastChild+' .wp-chatbot-comment-loader').length==0){
1709                                            $(globalwpw.settings.messageContainer).append(wpwKits.botPreloader());
1710                                        }
1711                                        wpwKits.ajax(data).done(function( response ) {
1712                                            if(response.product_num==0){
1713                                                if(msg!='' && globalwpw.settings.obj.disable_sitesearch==''){
1714                                                    msg = wpwKits.filterStopWords(msg);
1715                                                    var data = {'action':'wpbo_search_site','name':globalwpw.hasNameCookie,'keyword':msg};
1716                                                    if($(globalwpw.settings.messageLastChild+' .wp-chatbot-comment-loader').length==0){
1717                                                        $(globalwpw.settings.messageContainer).append(wpwKits.botPreloader());
1718                                                    }
1719                                                    wpwKits.ajax(data).done(function (response) {
1720                                                        var json=$.parseJSON(response);
1721                                                        if(json.status=='success'){
1722                                                          //  wpwMsg.single(wp_chatbot_obj.found_result_message);
1723                                                            $('span[data-wildcart="back"]').remove();
1724                                                            wpwMsg.triple_nobg(wp_chatbot_obj.found_result_message,json.html,'<span class="qcld-chatbot-wildcard"  data-wildcart="back">' + wpwKits.randomMsg(globalwpw.settings.obj.back_to_start) + '</span>');
1725                                                        }else{
1726                                                            var data = {'action':'wpbo_failed_response','name':globalwpw.hasNameCookie,'keyword':msg};
1727                                                                wpwKits.ajax(data).done(function (res) {
1728                                                                    //
1729                                                                })
1730                                                            if(globalwpw.counter == globalwpw.settings.obj.no_result_attempt_count || globalwpw.settings.obj.no_result_attempt_count == 0 ){
1731                                                                wpwMsg.single(wpwKits.randomMsg(json.html));
1732                                                                    setTimeout(function(){
1733                                                                        var serviceOffer=wpwKits.randomMsg(globalwpw.settings.obj.support_option_again);
1734                                                                        wpwMsg.single_nobg('<span class="qcld-chatbot-wildcard qcld_back_to_start"  data-wildcart="back">' + wpwKits.randomMsg(globalwpw.settings.obj.back_to_start) + '</span>');
1735                                                                    }
1735,globalwpw.settings.preLoadingTime)
1736                                                                globalwpw.counter = 0;
1737                                                            }else{
1738                                                                globalwpw.counter++;
1739                                                                wpwMsg.single(wpwKits.randomMsg(json.html));
1740                                                            }
1741                                                        }
1742                                                        globalwpw.wildCard=0;
1743                                                    });
1744                                                }else{
1745                                                    globalwpw.wildCard=0;
1746                                                    wpwMsg.single(wpwKits.randomMsg(globalwpw.settings.obj.empty_filter_msg));
1747                                                    // if(globalwpw.settings.obj.disable_repeatative!=1){
1748                                                    //     setTimeout(function(){
1749                                                    //         var serviceOffer=wpwKits.randomMsg(globalwpw.settings.obj.support_option_again);
1750                                                    //         wpwMsg.double_nobg(serviceOffer,globalwpw.wildcards);
1751                                                    //     },globalwpw.settings.preLoadingTime)
1752                                                    // }else{
1753                                                        setTimeout(function(){
1754                                                               $(globalwpw.settings.messageContainer).find('.wp-chatbot-msg:last .qcld-like-dislike-icon').css('display', 'block');
1755
1756                                                            wpwMsg.single_nobg('<span class="qcld-chatbot-wildcard qcld_back_to_start"  data-wildcart="back">' + wpwKits.randomMsg(globalwpw.settings.obj.back_to_start) + '</span>');
1757                                                        }, globalwpw.settings.preLoadingTime*2);
1758                                                   // }
1759                                                }
1760                                            }else {
1761                                            var productSucces= wpwKits.randomMsg(globalwpw.settings.obj.product_success)+" <strong>"+msg+"</strong>!";
1762                                                console.log(globalwpw.wildcards);
1763                                                wpwMsg.double_nobg(productSucces,response.html);
1764                                                if(response.per_page >= response.product_num){
1765                                                    setTimeout(function () {
1766                                                        var searchAgain = wpwKits.randomMsg(globalwpw.settings.obj.product_infinite);
1767                                                        wpwMsg.single(searchAgain);
1768                                                        //keeping value in localstorage
1769                                                        globalwpw.wildCard=20;
1770                                                        globalwpw.productStep='search';
1771                                                        localStorage.setItem("productStep",  globalwpw.productStep);
1772                                                    },globalwpw.settings.wildcardsShowTime);
1773                                                }	
1774                                            }
1775                                        });
1776                                    }else{
1777                                        if(msg!='' && globalwpw.settings.obj.disable_sitesearch==''){
1778                                            msg = wpwKits.filterStopWords(msg);
1779                                            var data = {'action':'wpbo_search_site','name':globalwpw.hasNameCookie,'keyword':msg};
1780                                            if($(globalwpw.settings.messageLastChild+' .wp-chatbot-comment-loader').length==0){
1781                                                $(globalwpw.settings.messageContainer).append(wpwKits.botPreloader());
1782                                            }
1783                                            wpwKits.ajax(data).done(function (response) {
1784                                                var json=$.parseJSON(response);
1785                                                if(json.status=='success'){
1786                                                    //wpwMsg.single();
1787                                                    $('span[data-wildcart="back"]').remove();
1788                                                    wpwMsg.triple_nobg(wp_chatbot_obj.found_result_message,json.html,'<span class="qcld-chatbot-wildcard"  data-wildcart="back">' + wpwKits.randomMsg(globalwpw.settings.obj.back_to_start) + '</span>');
1789                                                }else{
1790                                                    var data = {'action':'wpbo_failed_response','name':globalwpw.hasNameCookie,'keyword':msg};
1791                                                        wpwKits.ajax(data).done(function (res) {
1792                                                            //
1793                                                        })
1794                                                    if(globalwpw.counter == globalwpw.settings.obj.no_result_attempt_count || global
1794wpw.settings.obj.no_result_attempt_count == 0 ){
1795                                                        wpwMsg.single(wpwKits.randomMsg(json.html));
1796                                                            setTimeout(function(){
1797                                                                var serviceOffer=wpwKits.randomMsg(globalwpw.settings.obj.support_option_again);
1798                                                                wpwMsg.single_nobg('<span class="qcld-chatbot-wildcard qcld_back_to_start"  data-wildcart="back">' + wpwKits.randomMsg(globalwpw.settings.obj.back_to_start) + '</span>');
1799                                                            },globalwpw.settings.preLoadingTime)
1800                                                        globalwpw.counter = 0;
1801                                                    }else{
1802                                                        globalwpw.counter++;
1803                                                        wpwMsg.single(wpwKits.randomMsg(json.html));
1804                                                    }
1805                                                }
1806                                                globalwpw.wildCard=0;
1807                                            });
1808                                        }else{
1809                                            globalwpw.wildCard=0;
1810                                            wpwMsg.single(wpwKits.randomMsg(globalwpw.settings.obj.empty_filter_msg));
1811                                            // if(globalwpw.settings.obj.disable_repeatative!=1){
1812                                            //     setTimeout(function(){
1813                                            //         var serviceOffer=wpwKits.randomMsg(globalwpw.settings.obj.support_option_again);
1814                                            //         wpwMsg.double_nobg(serviceOffer,globalwpw.wildcards);
1815                                            //     },globalwpw.settings.preLoadingTime)
1816                                            // }else{
1817                                                setTimeout(function(){
1818                                                       $(globalwpw.settings.messageContainer).find('.wp-chatbot-msg:last .qcld-like-dislike-icon').css('display', 'block');
1819
1820                                                    wpwMsg.single_nobg('<span class="qcld-chatbot-wildcard qcld_back_to_start"  data-wildcart="back">' + wpwKits.randomMsg(globalwpw.settings.obj.back_to_start) + '</span>');
1821                                                }, globalwpw.settings.preLoadingTime*2);
1822                                           // }
1823                                        }
1824                                    }
1825                                }
1826                            })
1827                         
1828                        } //
1829                    }
1830                    if(globalwpw.settings.obj.woocommerce){
1831                        //Product
1832                        if(globalwpw.wildCard==20){
1833                            wpwTree.product(msg);
1834                        }
1835                        /*
1836                        *   order status part
1837                        *   bot action
1838                        */
1839                        if(globalwpw.wildCard==21){
1840                            wpwTree.order(msg);
1841                        }
1842                    }
1843                    if(globalwpw.wildCard==1){
1844                        wpwTree.support(msg);
1845                    }
1846                    if(globalwpw.wildCard==3){
1847                        wpwTree.subscription(msg);
1848                    }
1849                    if(globalwpw.wildCard==6){
1850                        wpwTree.unsubscription(msg);
1851                    }
1852                    if(globalwpw.wildCard==7){
1853                        wpwTree.formbuilder(msg);
1854                    }
1855                    if(globalwpw.wildCard==9){
1856                        wpwTree.bargain(msg);
1857                    }
1858                    if(globalwpw.wildCard==25){
1859                        wpwTree.reset(msg);
1860                    }
1861                    if(globalwpw.wildCard==26){
1862                        wpwTree.dfcx(msg);
1863                    }
1864                    if(globalwpw.wildCard==30){
1865                        wpwTree.ldsuggestion();
1866                    }
1867                }
1868        },
1869        clickstr: function(id){
1870            var data = {'action':'wpbo_search_response','name':globalwpw.hasNameCookie,'strid':id, 'language':globalwpw.settings.obj.language}; 
1871            
1872            wpwKits.ajax(data).done(function (response) {
1873                var json=$.parseJSON(response);
1874                if(json.status=='success'){
1875                    if(typeof(json.data)!=="undefined" && json.data){
1876                        var question='';
1877                        $.each(json.data, function (i, obj) {
1878                            
1879                            question += obj.response;
1880                        });
1881                        wpwMsg.single(question);
1882                    }
1883                }
1884            })
1885        },
1886        shopper:function (msg) {
1887            wpwMsg.shopper(msg);
1888            if(globalwpw.wildCard==1) {
1889                this.bot(msg);
1890            }
1890else if(globalwpw.settings.obj.ai_df_enable==1 && globalwpw.wildCard==0 && globalwpw.ai_step==1 && globalwpw.df_status_lock==0){
1891                this.bot(msg);
1892            } else{
1893                //Filtering the user given messages by stopwords
1894                var filterMsg=(msg);
1895                //handle empty filterMsg as repeat the message.
1896                if(filterMsg=="")  {
1897                    //if(globalwpw.emptymsghandler==0){
1898                        globalwpw.repeatQueryEmpty=wpwKits.randomMsg(globalwpw.settings.obj.empty_filter_msg);
1899                        globalwpw.emptymsghandler++;
1900                    //}
1901                    wpwMsg.single(globalwpw.repeatQueryEmpty);
1902					setTimeout(function(){
1903						var serviceOffer=wpwKits.randomMsg(globalwpw.settings.obj.support_option_again);
1904						wpwMsg.single_nobg('<span class="qcld-chatbot-wildcard qcld_back_to_start"  data-wildcart="back">' + wpwKits.randomMsg(globalwpw.settings.obj.back_to_start) + '</span>');
1905					},globalwpw.settings.preLoadingTime)
1906                }else {
1907                    globalwpw.emptymsghandler=0;
1908                    this.bot(filterMsg);
1909                }
1910            }
1911        }
1912    };
1913    /*
1914     * wpwBot Plugin Creation without selector and
1915     * wpwbot and shoppers all activities will be handled.
1916     */
1917    $.wpwbot = function(options) {
1918        //Using plugins defualts values or overwrite by options.
1919        
1920        var settings = $.extend({}, $.wpwbot.defaults, options);
1921        //Updating global settings
1922        globalwpw.settings=settings;
1923        //updating the helpkeywords
1924        globalwpw.wildcardsHelp=[globalwpw.settings.obj.sys_key_help.toLowerCase(),globalwpw.settings.obj.sys_key_product.toLowerCase(),globalwpw.settings.obj.sys_key_catalog.toLowerCase(),globalwpw.settings.obj.sys_key_support.toLowerCase(),globalwpw.settings.obj.sys_key_order.toLowerCase(),globalwpw.settings.obj.sys_key_reset.toLowerCase(),globalwpw.settings.obj.sys_key_email.toLowerCase()]
1925        //updating wildcards
1926        globalwpw.wildcards='';
1927		if(globalwpw.settings.obj.start_menu!=''){
1928            var menu_html = '';
1929            var menu_items = $.parseHTML($.trim(globalwpw.settings.obj.start_menu));
1930            $(menu_items).each(function(){
1931                if( $(this).prop('tagName') == 'SPAN' ){
1932                    if( $(this).hasClass('qcld-chatbot-suggest-email') ){
1933                        if( globalwpw.settings.obj.disable_feedback=='' ){
1934                            menu_html += $(this).prop('outerHTML');
1935                        }
1936                    }else if( $(this).hasClass('qcld-chatbot-suggest-phone') ){
1937                        if( globalwpw.settings.obj.call_gen=="" ){
1938                            menu_html += $(this).prop('outerHTML');
1939                        }
1940                    }else if( $(this).hasClass('qcld-chatbot-wildcard') && $(this).attr('data-wildcart') == 'support' ){
1941                        if( globalwpw.settings.obj.disable_faq=='' ){
1942                            menu_html += $(this).prop('outerHTML');
1943                        }
1944                    }else if( $(this).hasClass('qcld-chatbot-wildcard') && $(this).attr('data-wildcart') == 'messenger' ){
1945                        if( globalwpw.settings.obj.enable_messenger==1 ){
1946                            menu_html += $(this).prop('outerHTML');
1947                        }
1948                    }else if( $(this).hasClass('qcld-chatbot-wildcard') && $(this).attr('data-wildcart') == 'whatspp' ){
1949                        if( globalwpw.settings.obj.enable_whats==1 ){
1950                            menu_html += $(this).prop('outerHTML');
1951                        }
1952                    }else{
1953                        menu_html += $(this).prop('outerHTML');
1954                    }
1955                }
1956            })
1957            if( menu_html != '' ){
1958                globalwpw.wildcards = menu_html;
1959            }else{
1960                globalwpw.wildcards = globalwpw.settings.obj.start_menu;
1961            }
1962        }
1963        //Initialize the wpwBot with greeting and if already initialize and given name then return greeting..
1964        if(localStorage.getItem("wpwHitory") && globalwpw.initialize==0 ){
1965            var wpwHistory=localStorage.getItem("wpwHitory");
1966            $(globalwpw.settings.messageWrapper).html(wpwHistory);
1967            //Scroll to the last element.
1968            wpwKits.scrollTo();
1969            //Now mainting the current stages tokens
1970            globalwpw.initialize=1;
1971            if(localStorage.getItem("wildCard")){
1972                globalwpw.wildCard=localStorage.getItem("wildCard");
1973            }
1974            if(localStorage.getItem("productStep")){
1975                globalwpw.productStep=localStorage.getItem("productStep");
1976            }
1977            if(localStorage.getItem("orderStep")){
1978                globalwpw.orderStep=localStorage.getItem("orderStep");
1979            }
1980            if(localStorage.getItem("supportStep")){
1981                globalwpw.supportStep=localStorage.getItem("supportStep");
1982            }
1983            if(localStorage.getItem("aiStep")){
1984                globalwpw.ai_step=localStorage.getItem("aiStep");
1985            }
1986			if(localStorage.getItem("formfieldid")){
1987                globalwpw.formfieldid=localStorage.getItem("formfieldid");
1988            }
1989            if(localStorage.getItem("formentry")){
1990                globalwpw.formentry=localStorage.getItem("formentry");
1991            }
1992            if(localStorage.getItem("formStep")){
1993                globalwpw.formStep=localStorage.getItem("formStep");
1994            }
1995            if(localStorage.getItem("formid")){
1996                globalwpw.formid=localStorage.getItem("formid");
1997            }
1998            //update the value for initializing.
1999            globalwpw.initialize=1;
2000        } else {
2001            if(globalwpw.initialize==0 && globalwpw.wildCard==0 && globalwpw.settings.obj.re_target_handler==0){
2002                wpwWelcome.greeting();
2003                //update the value for initializing.
2004                globalwpw.initialize=1;
2005            }else{  // re targeting part .
2006                setTimeout(function (e) {
2007                    wpwWelcome.greeting();
2008                },8500);
2009                globalwpw.initialize=1;
2010            }
2011        }
2012        //When shopper click on send button
2013        $(document).on('click',settings.sendButton,function (e) {
2014            var shopperMsg =$(settings.messageEditor).val();
2015            if(shopperMsg != ""){
2016                wpwAction.shopper(wpwKits.htmlTagsScape(shopperMsg));
2017                $(settings.messageEditor).val('');
2018            }
2019        });
2020		$(document).on('click', '.chatbot_intent_reload', function(e){
2021			e.preventDefault();
2022            var obj = $(this);
2023            if(obj.attr('data-intent-type')=='formbuilder'){
2024                if( obj.attr('data-step')=='complete' ){
2025				globalwpw.formStep='field';
2026				localStorage.setItem("formStep",  globalwpw.formStep);
2027				}
2028                globalwpw.wildCard=obj.attr('data-wildcard');
2029                globalwpw.formfieldid = obj.attr('data-intent');
2030                wpwTree.formbuilder();
2031            }
2032		})
2033        /*
2034         * Or when shopper press the ENTER key
2035         * Then chatting functionality will be started.
2036         */
2037		$(document).on('click', '.wpb-quick-reply', function(e){
2038			e.preventDefault();
2039			$('#wp-chatbot-editor').val($(this).html());
2040			$('#wp-chatbot-send-message').trigger( "click" );
2041		})
2042        $(document).on('keypress',settings.messageEditor,function (e) {
2043            if (e.which == 13||e.keyCode==13) {
2044                e.preventDefault();
2045                var shopperMsg =$(settings.messageEditor).val();
2046                if(shopperMsg != ""){
2047                    wpwAction.shopper(wpwKits.htmlTagsScape(shopperMsg));
2048                    $(settings.messageEditor).val('');
2049                }
2050            }
2051        });
2052		$(document).on('click', '.qcld-chatbot-checkbox', function(){
2053            
2054            var value = [];
2055            $('.qcld-chatbot-checkbox').each(function(){
2056                if($(this).prop("checked") == true){
2057                    value.push($(this).val());
2058                }
2059            })
2060           $('#wp-chatbot-editor').val(value.join());
2061        })
2062        //Click on the wildcards to select a service
2063        $(document).on('click','.qcld-chatbot-wildcard',function(){
2064            var wildcardData=$(this).attr('data-form');
2065            var shooperChoice=$(this).text();
2066            wpwMsg.shopper_choice(shooperChoice);
2067            if(typeof wildcardData === "undefined"){
2068                var wildcardData=$(this).attr('data-wildcart');
2069            }
2070            //Wild cards handling for bot.
2071            if(wildcardData=='product'){
2072                globalwpw.wildCard=1;
2073                globalwpw.productStep='asking'
2074                wpwAction.bot('from wildcard product');
2075                //keeping value in localstorage
2076                localStorage.setItem("wildCard",  globalwpw.wildCard);
2077                localStorage.setItem("productStep", globalwpw.productStep);
2078            }
2079            if(wildcardData=='catalog'){
2080                wpwAction.bot(globalwpw.settings.obj.sys_key_catalog.toLowerCase());
2081            }
2082            if(wildcardData=='featured'){
2083                globalwpw.wildCard=1;
2084                globalwpw.productStep='featured'
2085                wpwAction.bot('from wildcard product');
2086                //keeping value in localstorage
2087                localStorage.setItem("wildCard",  globalwpw.wildCard);
2088                localStorage.setItem("productStep", globalwpw.productStep);
2089            }
2090            if(wildcardData=='sale'){
2091                globalwpw.wildCard=1;
2092                globalwpw.productStep='sale'
2093                wpwAction.bot('from wildcard product');
2094                //keeping value in localstorage
2095                localStorage.setItem("wildCard",  globalwpw.wildCard);
2096                localStorage.setItem("productStep", globalwpw.productStep);
2097            }
2098            if(wildcardData=='order'){
2099                globalwpw.wildCard=2;
2100                globalwpw.orderStep='welcome';
2101                wpwAction.bot('from wildcard order');
2102                //keeping value in localstorage
2103                localStorage.setItem("wildCard",  globalwpw.wildCard);
2104                localStorage.setItem("orderStep", globalwpw.orderStep);
2105            }
2106            if((wildcardData=='support ui-sortable-handle') || (wildcardData=='support')) {
2107                globalwpw.wildCard=1;
2108                globalwpw.supportStep='welcome';
2109                wpwAction.bot('from wildcard support');
2110                //keeping value in localstorage
2111                localStorage.setItem("wildCard",  globalwpw.wildCard);
2112                localStorage.setItem("supportStep", globalwpw.supportStep);
2113            }
2114            if(wildcardData=='back'){
2115                globalwpw.wildCard=0;
2116                //wpwAction.bot('start');
2117                wpwAction.bot(wp_chatbot_obj.sys_key_help.toLowerCase());
2118                //keeping value in localstorage
2119                localStorage.setItem("wildCard",  globalwpw.wildCard);
2120            }
2121            if(wildcardData=='messenger'){
2122                var url='https://www.messenger.com/t/'+globalwpw.settings.obj.fb_page_id;
2123                var win = window.open(url, '_blank');
2124                win.focus();
2125            }
2126            if(wildcardData=='whatsapp'){
2127                var url='https://api.whatsapp.com/send?phone='+globalwpw.settings.obj.whats_num;
2128                var win = window.open(url, '_blank');
2129                win.focus();
2130            }
2131        });
2132		$(document).on('click','.qcld-chatbot-form',function(e){
2133            e.preventDefault();
2134            var formid=$(this).attr('data-form');
2135            globalwpw.wildCard=7;
2136            globalwpw.formStep='welcome';
2137            wpwTree.formbuilder(formid);
2138        })
2139		$(document).on('click','.qcld_simple_txt_response',function(e){
2140            e.preventDefault();
2141            var text=$(this).text();
2142            var id = $(this).data('strid');
2143            globalwpw.wildCard=0;            
2144            wpwAction.clickstr(id);
2145        })
2146        $(document).on('click','#wp-chatbot-desktop-reload',function (e) {
2147            e.preventDefault();
2148            var actionType=$(this).attr('reset-data');
2149                $('#wp-chatbot-messages-container').html('');
2150                localStorage.removeItem('shopper');
2151                globalwpw.wildCard=0;
2152                globalwpw.ai_step=0;
2153                localStorage.setItem("wildCard",  globalwpw.wildCard);
2154                localStorage.setItem("aiStep", globalwpw.ai_step);
2155                globalwpw.formfieldid = '';
2156                localStorage.setItem("formfieldid",  globalwpw.formfieldid);
2157                globalwpw.formStep='welcome';
2158                localStorage.setItem("formStep",  globalwpw.formStep);
2159                globalwpw.formid='';
2160                localStorage.setItem("formid",  globalwpw.formid);
2161                globalwpw.formentry = 0;
2162                localStorage.setItem("formentry",  globalwpw.formentry);
2163                localStorage.removeItem("cx-name" );
2164                localStorage.removeItem("cx-diaplayname" );
2165                localStorage.removeItem("cx-languagecode" );
2166                localStorage.removeItem("cx-timezone" );
2167				var number = Math.random() // 0.9394456857981651
2168                number.toString(36); // '0.xtis06h6'
2169                var id = number.toString(36).substr(2); // 'xtis06h6'
2170                localStorage.setItem('botsessionid', id);
2171                wpwWelcome.greeting();
2172        });
2173        $(document).on('click','.qcld-chatbot-formanswer',function(e){
2174            e.preventDefault();
2175            var answer=$(this).attr('data-form-value');
2176            wpwAction.bot(answer);
2177        })
2178        //
2179        $(document).on('click','.qcld-chatbot-product-category',function(){
2180            var catType=$(this).attr('data-category-type');
2181            var shopperChoiceCatId=$(this).text()+'#'+$(this).attr('data-category-id');
2182            var shopperChoiceCategory=$(this).text();
2183            if(catType=='hasChilds'){
2184                //Now hide all categories but shopper choice.
2185                wpwMsg.shopper_choice(shopperChoiceCategory);
2186                //updating the product steps and bringing the product by category.
2187                wpwKits.subCats($(this).attr('data-category-id'));
2188                globalwpw.productStep='search';
2189                globalwpw.wildCard=1;
2190            }else{
2191                //Now hide all categories but shopper choice.
2192                wpwMsg.shopper_choice(shopperChoiceCategory);
2193                //updating the product steps and bringing the product by category.
2194                globalwpw.productStep='category';
2195                globalwpw.wildCard=1;
2196                //keeping value in localstorage
2197                localStorage.setItem("productStep",  globalwpw.productStep);
2198                wpwAction.bot(shopperChoiceCatId);
2199            }
2200        });
2201        //Product Load More features for product search or category products
2202        $(document).on('click','#wp-chatbot-loadmore',function (e) {
2203            $('#wp-chatbot-loadmore-loader').html('<img class="wp-chatbot-comment-loader" src="'+globalwpw.settings.obj.image_path+'loadmore.gif" alt="..." />');
2204            var loadMoreDom=$(this);
2205            var productOffest=loadMoreDom.attr('data-offset');
2206            var searchType=loadMoreDom.attr('data-search-type');
2207            var searchTerm=loadMoreDom.attr('data-search-term');
2208            var data = { 'action': 'qcld_wb_chatbot_load_more','offset': productOffest,'search_type': searchType,'search_term': searchTerm};
2209            //Load more ajax handler.
2210            wpwKits.ajax(data).done(function (response) {
2211                //Change button text
2212                $('#wp-chatbot-loadmore-loader').html('');
2213                $('.wp-chatbot-products').append(response.html);
2214                loadMoreDom.attr('data-search-term',response.search_term);
2215                wpwKits.wpwHistorySave();
2216                loadMoreDom.attr('data-offset',response.offset);
2217                if(response.product_num <= response.per_page){
2218                    loadMoreDom.hide();
2219                    //Now show the user infinite.
2220                    setTimeout(function () {
2221                        var searchAgain = wpwKits.randomMsg(globalwpw.settings.obj.product_infinite);
2222                        wpwMsg.single(searchAgain);
2223                        globalwpw.productStep='search';
2224                        //keeping value in localstorage
2225                        localStorage.setItem("productStep",  globalwpw.productStep);
2226                    },globalwpw.settings.wildcardsShowTime);
2227                }
2228                //scroll to the last message
2229                wpwKits.scrollTo();
2230            });
2231        });
2232                //search load more
2233                $(document).on('click', '.wp-chatbot-loadmore', function(e){
2234                    e.preventDefault();
2235                    var obj = $(this);
2236        
2237                    var keyword = obj.attr('data-keyword');
2238                    var post_type = obj.attr('data-post_type');
2239                    var page = obj.attr('data-page');
2240                    obj.text('Loading...');
2241                    var data = {'action':'wpbo_search_site_pagination','name':globalwpw.hasNameCookie,'keyword':keyword,'language': globalwpw.settings.obj.language,'type': post_type, 'page': page};
2242                    if($(globalwpw.settings.messageLastChild+' .wp-chatbot-comment-loader').length==0){
2243                        $(globalwpw.settings.messageContainer).append(wpwKits.botPreloader());
2244                    }
2245                    wpwKits.ajax(data).done(function (res) {
2246                        
2247                        var json=$.parseJSON(res);
2248                        if(json.status=='success'){
2249                            $('span[data-wildcart="back"]').remove();
2250                            wpwMsg.single(json.html);
2251                            // Hide the comment loader after response inside parent .wp-chatbot-paragraph
2252                            // Hide the entire li.wp-chatbot-msg if its .wp-chatbot-paragraph only contains the loader image (and is hidden)
2253
2254                            setTimeout(function(){
2255                                if((globalwpw.settings.obj.qcld_disable_repited_startmenu != "1")){
2256                                wpwMsg.single_nobg('<span class="qcld-chatbot-wildcard qcld_back_to_start"  data-wildcart="back">' + wpwKits.randomMsg(globalwpw.settings.obj.back_to_start) + '</span>');
2257                                }
2258                            },globalwpw.settings.preLoadingTime)
2259        
2260                            obj.remove();
2261                        }else{
2262                            
2263                            if(globalwpw.counter == globalwpw.settings.obj.no_result_attempt_count || globalwpw.settings.obj.no_result_attempt_count == 0 ){
2264                                
2265                                wpwMsg.single(json.html);
2266                                if(globalwpw.settings.obj.disable_repeatative!=1){
2267                                    if ( wpwKits.render( globalwpw.settings.obj.no_result_attempt_message ) != '' ) {
2268                                        setTimeout(function(){
2269                                            wpwMsg.single(wpwKits.render( globalwpw.settings.obj.no_result_attempt_message ));
2270                                        },globalwpw.settings.preLoadingTime)
2271                                    } else {
2272                                        setTimeout(function(){
2273                                            var serviceOffer=wpwKits.randomMsg(globalwpw.settings.obj.support_option_again);
2274                                            if((globalwpw.settings.obj.qcld_disable_start_menu != "1")){
2275                                                if(typeof(globalwpw.wildcards) != 'undefined' && (globalwpw.wildcards != '')){
2276                                                    console.log(globalwpw.wildcards);
2277                                                    wpwMsg.double_nobg(serviceOffer,globalwpw.wildcards);
2278                                                }else{
2279                                                    wpwMsg.single(serviceOffer);
2280                                                }
2281                                                
2282                                            }
2283        
2284                                        },globalwpw.settings.preLoadingTime)
2285                                    }
2286                                }
2287                                globalwpw.counter = 0;
2288                                
2289                            }else{
2290                                globalwpw.counter++;
2291                                wpwTree.df_reply(res);
2292                            }
2293        
2294                        }
2295                        globalwpw.wildCard=0;
2296                        
2297                    });
2298        
2299        
2300                })
2301        
2302                //search load more
2303                $(document).on('click', '.wp-chatbot-loadmore2', function(e){
2304                    e.preventDefault();
2305                    var obj = $(this);
2306        
2307                    var keyword = obj.attr('data-keyword');
2308                    
2309                    var page = obj.attr('data-page');
2310        
2311                    var search_type = obj.attr('data-search-type');
2312                    obj.text(globalwpw.settings.obj.loading.en_US);
2313        
2314                    if( search_type == 'default-wp-search' ){
2315                        var data = {'action':'wpbo_default_search_pagination2','name':globalwpw.hasNameCookie,'keyword':keyword, 'page': page, search_type:'default-wp-search'};
2316                    }else{
2317                        var data = {'action':'wpbo_search_site_pagination2','name':globalwpw.hasNameCookie,'keyword':keyword, 'page': page};
2318                    }
2319                    if($(globalwpw.settings.messageLastChild+' .wp-chatbot-comment-loader').length==0){
2320                        $(globalwpw.settings.messageContainer).append(wpwKits.botPreloader());
2321                    }
2322                    wpwKits.ajax(data).done(function (res) {
2323                        var json=$.parseJSON(res);
2324                        if(json.status=='success'){
2325                            $('span[data-wildcart="back"]').remove();
2326                            
2327                            wpwMsg.single_nobg(json.html);
2328        
2329                            setTimeout(function(){
2330                                if((globalwpw.settings.obj.qcld_disable_repited_startmenu != "1")){
2331                                    wpwMsg.single_nobg('<span class="qcld-chatbot-wildcard qcld_back_to_start"  data-wildcart="back">' + wpwKits.randomMsg(globalwpw.settings.obj.back_to_start) + '</span>');
2332                                }
2333                            },globalwpw.settings.preLoadingTime)
2334        
2335                            obj.remove();
2336                        }else{
2337                            
2338                            if(globalwpw.counter == globalwpw.settings.obj.no_result_attempt_count || globalwpw.settings.obj.no_result_attempt_count == 0 ){
2339                                
2340                                wpwMsg.single(json.html);
2341                                wpwTree.start_menu_settings();
2342                                globalwpw.counter = 0;
2343                                
2344                            }else{
2345                                globalwpw.counter++;
2346                                wpwTree.df_reply(res);
2347                            }
2348        
2349                        }
2350                        globalwpw.wildCard=0;
2351                    });
2352        
2353        
2354                });
2355        /*Products details part **/
2356        // if(globalwpw.settings.obj.open_product_detail!=1){
2357        // $(document).on('click','.wp-chatbot-product a',function (e) {
2358        //      e.preventDefault();
2359        //     $('.wp-chatbot-product-container').addClass('active-chatbot-product-details');
2360        //     $('.wp-chatbot-product-reload').addClass('wp-chatbot-product-loading').html('<img class="wp-chatbot-product-loader" src="'+globalwpw.settings.obj.image_path+'comment.gif" alt="Loading..." />');
2361        //     var productId=$(this).attr('wp-chatbot-pid');
2362        //     var data = { 'action':'qcld_wb_chatbot_product_details', 'wp_chatbot_pid':productId};
2363        //     //product details ajax handler.
2364        //     wpwKits.ajax(data).done(function (response) {
2365        //         $('.wp-chatbot-product-reload').removeClass('wp-chatbot-product-loading').html('');
2366        //         $('#wp-chatbot-product-title').html(response.title);
2367        //         $('#wp-chatbot-product-description').html(response.description);
2368        //         $('#wp-chatbot-product-image').html(response.image);
2369        //         $('#wp-chatbot-product-price').html(response.price);
2370        //         $('#wp-chatbot-product-quantity').html(response.quantity);
2371        //         $('#wp-chatbot-product-variable').html(response.variation);
2372        //         $('#wp-chatbot-product-cart-button').html(response.buttton);
2373        //         //Load gallery magnify
2374        //         setTimeout(function () {
2375        //             $('#wp-chatbot-product-image-large-path').magnificPopup({type:'image'});
2376        //         },1000);
2377        //         //For shortcode handle recenlty view product by ajax as
2378        //         if($('#wp-chatbot-shortcode-template-container').length > 0){
2379        //             var data = {'action':'qcld_wb_chatbot_recently_viewed_products'};
2380        //             wpwKits.ajax(data).done(function (response) {
2381        //                 $('.wp-chatbot-product-shortcode-container').html(response);
2382        //                 $('.chatbot-sidebar .wp-chatbot-products').slimScroll({height: '435px', start: 'top'});
2383        //             });
2384        //         }
2385        //     });
2386        // });
2387        // }
2388        //Image gallery.
2389        $(document).on('click','.wp-chatbot-product-image-thumbs-path',function (e) {
2390            e.preventDefault();
2391            var imagePath=$(this).attr('href');
2392            $('#wp-chatbot-product-image-large-path').attr('href',imagePath);
2393            $('#wp-chatbot-product-image-large-src').attr('src',imagePath);
2394            //handle thumb active one
2395            $('.wp-chatbot-product-image-thumbs-path').parent().removeClass('wp-chatbot-product-active-image-thumbs');
2396            $(this).parent().addClass('wp-chatbot-product-active-image-thumbs');
2397        });
2398        //Product details close
2399        $(document).on('click', '.wp-chatbot-product-close', function (e) {
2400            $('.wp-chatbot-product-container').removeClass('active-chatbot-product-details');
2401        });
2402        /*add to cart part **/
2403        $(document).on("click","#wp-chatbot-add-cart-button",function (e) {
2404            var pId=$(this).attr('wp-chatbot-product-id');
2405            var qnty=$("#vPQuantity").val();
2406            var data = {'action': 'qcld_wb_chatbot_add_to_cart','product_id': pId,'quantity': qnty };
2407            //add to cart ajax handler.
2408            wpwKits.ajax(data).done(function (response) {
2409                //Change button text
2410                if(response=="simple"){
2411                    //Showing cart.
2412                    wpwKits.showCart();
2413                    //handle the active tab on chat board.
2414                    $('.wp-chatbot-operation-option').each(function(){
2415                        if($(this).attr('data-option')=='cart'){
2416                            $(this).parent().addClass('wp-chatbot-operation-active');
2417                        }else{
2418                            $(this).parent().removeClass('wp-chatbot-operation-active');
2419                        }
2420                    });
2421                }
2422                //Hide the shortcode and chat ui product details.
2423                $('.wp-chatbot-product-container').removeClass('active-chatbot-product-details');
2424            });
2425        });
2426        //Add to cart operation for variable product.
2427        $(document).on('click','#wp-chatbot-variation-add-to-cart',function(event) {
2428            event.preventDefault();
2429            var pId=$(this).attr('wp-chatbot-product-id');
2430            var quanity=$('#vPQuantity').val();
2431            var variation_id=$(this).attr('variation_id');
2432            var attributes=new Array();
2433            $.each($("#wp-chatbot-variation-data select"), function(){
2434                var attribute = $(this).attr('name')+'#'+ $(this).find('option:selected').text();
2435                attributes.push(attribute);
2436            });
2437            var data = {
2438                'action': 'qcld_variable_add_to_cart',
2439                'p_id': pId,
2440                'quantity': quanity,
2441                'variations_id':variation_id,
2442                'attributes':attributes
2443            };
2444            //add to cart ajax handler.
2445            wpwKits.ajax(data).done(function (response) {
2446                //Change button text
2447                if(response=="variable"){
2448                    //Showing cart.
2449                    wpwKits.showCart();
2450                    //handle the active tab on chat board.
2451                    //handle the active tab on chat board.
2452                    $('.wp-chatbot-operation-option').each(function(){
2453                        if($(this).attr('data-option')=='cart'){
2454                            $(this).parent().addClass('wp-chatbot-operation-active');
2455                        }else{
2456                            $(this).parent().removeClass('wp-chatbot-operation-active');
2457                        }
2458                    });
2459                }
2460                //Hide the shortcode and chat ui product details.
2461                $('.wp-chatbot-product-container').removeClass('active-chatbot-product-details');
2462            });
2463        });
2464        //Update cart.
2465        $(document).on("change", ".qcld-wp-chatbot-cart-item-qnty", function () {
2466            //Update editor only for chat ui
2467            if($('#wp-chatbot-shortcode-template-container').length == 0) {
2468                wpwKits.disableEditor(wpwKits.randomMsg(globalwpw.settings.obj.cart_updating));
2469            }
2470            var currentItem=$(this);
2471            setTimeout(function () {
2472                var item_key=currentItem.attr('data-cart-item');
2473                var qnty=currentItem.val();
2474                var data = {'action': 'qcld_wb_chatbot_update_cart_item_number','cart_item_key':item_key,'qnty':qnty};
2475                wpwKits.ajax(data).done(function () {
2476                    //Showing cart.
2477                    wpwKits.showCart();
2478                });
2479            }, globalwpw.settings.preLoadingTime);
2480        });
2481        //remove the cart item from global cart.
2482        $(document).on("click", ".wp-chatbot-remove-cart-item", function () {
2483            //Update editor only for chat ui
2484            if($('#wp-chatbot-shortcode-template-container').length == 0) {
2485                wpwKits.disableEditor(wpwKits.randomMsg(globalwpw.settings.obj.cart_removing));
2486            }
2487            var item=$(this).attr('data-cart-item');
2488            var data = {'action': 'qcld_wb_chatbot_cart_item_remove', 'cart_item':item };
2489            wpwKits.ajax(data).done(function () {
2490                //Showing cart.
2491                wpwKits.showCart();
2492            })
2493        });
2494        /*Support query answering.. **/
2495        $(document).on('click','.qcld-chatbot-support-items',function (e) {
2496            var shopperChoose=$(this).text();
2497            var queryIndex=$(this).attr('data-query-index');
2498            wpwMsg.shopper_choice(shopperChoose);
2499            //Now answering the query.
2500            var queryAns=globalwpw.settings.obj.support_ans[queryIndex];
2501            wpwMsg.single(queryAns);
2502            //Asking email after showing answer.
2503            var orPhoneSuggest='';
2504            setTimeout(function(){
2505                if(globalwpw.settings.obj.call_sup!=1) {
2506                    orPhoneSuggest = '<span class="qcld-chatbot-suggest-phone" >' + wpwKits.randomMsg(globalwpw.settings.obj.support_phone) + '</span>';
2507                }
2508                var orEmailSuggest='<span class="qcld-chatbot-suggest-email">'+wpwKits.randomMsg(globalwpw.settings.obj.support_email)+'</span>';
2509                wpwKits.suggestEmail(orPhoneSuggest+orEmailSuggest);
2510            },globalwpw.settings.wildcardsShowTime);
2511        });
2512        /*Support Email **/
2513        $(document).on('click','.qcld-chatbot-suggest-email',function (e) {
2514            var shopperChoice=$(this).text();
2515            wpwMsg.shopper_choice(shopperChoice);
2516            //Then ask email address
2517            if(typeof(globalwpw.hasNameCookie)=='undefined'|| globalwpw.hasNameCookie==''){
2518                var shopperName=  globalwpw.settings.obj.shopper_demo_name;
2519            }else{
2520                var shopperName=globalwpw.hasNameCookie;
2521            }
2522            var askEmail= wpwKits.randomMsg(globalwpw.settings.obj.hello) + ' '+shopperName+'! '+ wpwKits.randomMsg(globalwpw.settings.obj.asking_email);
2523            wpwMsg.single(askEmail);
2524            //Now updating the support part as .
2525            globalwpw.supportStep='email';
2526            globalwpw.wildCard=1;
2527            //keeping value in localstorage
2528            localStorage.setItem("wildCard",  globalwpw.wildCard);
2529            localStorage.setItem("supportStep",  globalwpw.supportStep);
2530        });
2531		/*site Search*/
2532		$(document).on('click','.qcld-chatbot-site-search',function (e) {
2533            var shopperChoice=$(this).text();
2534            wpwMsg.shopper_choice(shopperChoice);
2535            //Then ask email address
2536            if(typeof(globalwpw.hasNameCookie)=='undefined'|| globalwpw.hasNameCookie==''){
2537                var shopperName=  globalwpw.settings.obj.shopper_demo_name;
2538            }else{
2539                var shopperName=globalwpw.hasNameCookie;
2540            }
2541            var askEmail='Hello '+shopperName+'! '+ wp_chatbot_obj.search_keyword;
2542            wpwMsg.single(askEmail);
2543            //Now updating the support part as .
2544            globalwpw.supportStep='search';
2545            globalwpw.wildCard=1;
2546            //keeping value in localstorage
2547            localStorage.setItem("wildCard",  globalwpw.wildCard);
2548            localStorage.setItem("supportStep",  globalwpw.supportStep);
2549        });
2550        /*Support Phone **/
2551        $(document).on('click','.qcld-chatbot-suggest-phone',function (e) {
2552            var shopperChoice=$(this).text();
2553            wpwMsg.shopper_choice(shopperChoice);
2554            //Then ask email address
2555            if(typeof(globalwpw.hasNameCookie)=='undefined'|| globalwpw.hasNameCookie==''){
2556                var shopperName=  globalwpw.settings.obj.shopper_demo_name;
2557            }else{
2558                var shopperName=globalwpw.hasNameCookie;
2559            }
2560            var askEmail='Hello '+shopperName+'! '+ wpwKits.randomMsg(globalwpw.settings.obj.asking_phone);
2561            wpwMsg.single(askEmail);
2562            //Now updating the support part as .
2563            globalwpw.supportStep='phone';
2564            globalwpw.wildCard=1;
2565            //keeping value in localstorage
2566            localStorage.setItem("wildCard",  globalwpw.wildCard);
2567            localStorage.setItem("supportStep",  globalwpw.supportStep);
2568        });
2569        //Show chat,cart and recently view products by click event.
2570        $(document).on('click','.wp-chatbot-operation-option',function (e) {
2571            e.preventDefault();
2572            var oppt=$(this).attr('data-option');
2573            if(oppt=='recent'  && globalwpw.wpwIsWorking==0){
2574                wpwKits.disableEditor(globalwpw.settings.obj.sys_key_product);
2575                var data = {'action':'qcld_wb_chatbot_recently_viewed_products'};
2576                wpwKits.ajax(data).done(function (response) {
2577                    $(globalwpw.settings.messageWrapper).html(response);
2578                });
2579                //First remove wp-chatbot-operation-active class from all selector
2580                $('.wp-chatbot-operation-option').parent().removeClass('wp-chatbot-operation-active');
2581                //then add the active class to current element.
2582                $(this).parent().addClass('wp-chatbot-operation-active');
2583            }else if(oppt=='chat' && globalwpw.wpwIsWorking==0){
2584                $(globalwpw.settings.messageWrapper).html(localStorage.getItem("wpwHitory"));
2585                wpwKits.scrollTo();
2586                wpwKits.enableEditor(wpwKits.randomMsg(globalwpw.settings.obj.send_a_msg));
2587                //First remove wp-chatbot-operation-active class from all selector
2588                $('.wp-chatbot-operation-option').parent().removeClass('wp-chatbot-operation-active');
2589                //then add the active class to current element.
2590                $(this).parent().addClass('wp-chatbot-operation-active');
2591            } else if(oppt=='cart' && globalwpw.wpwIsWorking==0){
2592                wpwKits.showCart();
2593                //First remove wp-chatbot-operation-active class from all selector
2594                $('.wp-chatbot-operation-option').parent().removeClass('wp-chatbot-operation-active');
2595                //then add the active class to current element.
2596                $(this).parent().addClass('wp-chatbot-operation-active');
2597            } else if(oppt=='help' && globalwpw.wpwIsWorking==0){
2598                if( $('.wp-chatbot-messages-container').length==0) {
2599                    //if from other nob then goo to the chat window
2600                    $(globalwpw.settings.messageWrapper).html(localStorage.getItem("wpwHitory"));
2601                    //Showing help message
2602                    setTimeout(function () {
2603                        wpwKits.scrollTo();
2604                        var helpWelcome = wpwKits.randomMsg(globalwpw.settings.obj.help_welcome);
2605                        var helpMsg = wpwKits.decodehtml(wpwKits.randomMsg(globalwpw.settings.obj.help_msg));
2606                        wpwMsg.double(helpWelcome,helpMsg);
2607                        //dialogflow
2608                        if(globalwpw.settings.obj.ai_df_enable==1 && globalwpw.df_status_lock==0){
2609                            globalwpw.wildCard=0;
2610                            globalwpw.ai_step=1;
2611                            localStorage.setItem("wildCard",  globalwpw.wildCard);
2612                            localStorage.setItem("aiStep", globalwpw.ai_step);
2613                        }
2614                    },globalwpw.settings.preLoadingTime);
2615                }else{
2616                    //Showing help message on chat self window.
2617                    var helpWelcome = wpwKits.randomMsg(globalwpw.settings.obj.help_welcome);
2618                    var helpMsg = wpwKits.randomMsg(globalwpw.settings.obj.help_msg);
2619                    wpwMsg.double(helpWelcome,helpMsg);
2620                    //dialogflow
2621                    if(globalwpw.settings.obj.ai_df_enable==1 && globalwpw.df_status_lock==0){
2622                        globalwpw.wildCard=0;
2623                        globalwpw.ai_step=1;
2624                        localStorage.setItem("wildCard",  globalwpw.wildCard);
2625                        localStorage.setItem("aiStep", globalwpw.ai_step);
2626                    }
2627                }
2628                //First remove wp-chatbot-operation-active class from all selector
2629                $('.wp-chatbot-operation-option').parent().removeClass('wp-chatbot-operation-active');
2630                //then add the active class to current element.
2631                $(this).parent().addClass('wp-chatbot-operation-active');
2632            } else if(oppt=='support' && globalwpw.wpwIsWorking==0){
2633                if( $('.wp-chatbot-messages-container').length==0) {
2634                    //if from other nob then goo to the chat window
2635                    $(globalwpw.settings.messageWrapper).html(localStorage.getItem("wpwHitory"));
2636                    //Showing help message
2637                    setTimeout(function () {
2638                        wpwKits.scrollTo();
2639                        globalwpw.wildCard=1;
2640                        globalwpw.supportStep='welcome';
2641                        wpwTree.support(globalwpw.settings.obj.sys_key_support.toLowerCase());
2642                    },globalwpw.settings.preLoadingTime);
2643                }else{
2644                    //Showing help message on chat self window.
2645                    globalwpw.wildCard=1;
2646                    globalwpw.supportStep='welcome';
2647                    wpwTree.support(globalwpw.settings.obj.sys_key_support.toLowerCase());
2648                }
2649                //First remove wp-chatbot-operation-active class from all selector
2650                $('.wp-chatbot-operation-option').parent().removeClass('wp-chatbot-operation-active');
2651                //then add the active class to current element.
2652                $(this).parent().addClass('wp-chatbot-operation-active');
2653            }
2654            //show chat wrapper and hide cart-checkout wrapper
2655            $(globalwpw.settings.messageWrapper).show();
2656            $('#wp-chatbot-checkout-short-code').hide();
2657            $('#wp-chatbot-cart-short-code').hide();
2658        });
2659        $(document).on('click','.qcld-chatbot-reset-btn',function (e) {
2660            e.preventDefault();
2661            var actionType=$(this).attr('reset-data');
2662            if(actionType=='yes'){
2663
2664                $('#wp-chatbot-messages-container').html('');
2665                localStorage.removeItem('shopper');
2666                globalwpw.wildCard=0;
2667                globalwpw.ai_step=0;
2668                localStorage.setItem("wildCard",  globalwpw.wildCard);
2669                localStorage.setItem("aiStep", globalwpw.ai_step);
2670                globalwpw.formfieldid = '';
2671                localStorage.setItem("formfieldid",  globalwpw.formfieldid);
2672                globalwpw.formStep='welcome';
2673                localStorage.setItem("formStep",  globalwpw.formStep);
2674                globalwpw.formid='';
2675                localStorage.setItem("formid",  globalwpw.formid);
2676                globalwpw.formentry = 0;
2677                localStorage.setItem("formentry",  globalwpw.formentry);
2678                localStorage.removeItem("cx-name" );
2679                localStorage.removeItem("cx-diaplayname" );
2680                localStorage.removeItem("cx-languagecode" );
2681                localStorage.removeItem("cx-timezone" );
2682				var number = Math.random() // 0.9394456857981651
2683                number.toString(36); // '0.xtis06h6'
2684                var id = number.toString(36).substr(2); // 'xtis06h6'
2685                localStorage.setItem('botsessionid', id);
2686                wpwWelcome.greeting();
2687            } else if(actionType=='no'){
2688                wpwAction.bot(globalwpw.settings.obj.sys_key_help.toLowerCase());
2689            }
2690        });
2691        return this;
2692    };
2693    //Deafault value for wpwbot.If nothing passes from the work station
2694    //Then defaults value will be used.
2695    $.wpwbot.defaults={
2696        obj:{},
2697        editor_handler:0,
2698        sendButton:'#wp-chatbot-send-message',
2699        messageEditor:'#wp-chatbot-editor',
2700        messageContainer:'#wp-chatbot-messages-container',
2701        messageWrapper:'.wp-chatbot-messages-wrapper',
2702        botContainer:'.wp-chatbot-ball-inner',
2703        messageLastChild:'#wp-chatbot-messages-container li:last',
2704        messageLastBot:'#wp-chatbot-messages-container .wp-chatbot-msg:last .wp-chatbot-paragraph',
2705        preLoadingTime:0,
2706        wildcardsShowTime:5000,
2707    }
2708
2709    document.addEventListener("click", function(e) {
2710  // Toggle share menu
2711  if (e.target.closest(".share-toggle")) {
2712    e.preventDefault();
2713    let menu = e.target.closest(".qcld-share").querySelector(".share-menu");
2714    menu.style.display = menu.style.display === "none" ? "block" : "none";
2715  }
2716
2717  // Find message content dynamically
2718  let msgItem = e.target.closest(".wp-chatbot-msg");
2719  if (!msgItem) return;
2720
2721  let msgContent = msgItem.querySelector(".wp-chatbot-paragraph");
2722  if (!msgContent) return;
2723
2724  // Extract plain text
2725  let msgText = msgContent.innerText.trim();
2726  let shareSite = window.location.origin; // Get the site URL dynamically (e.g., "https://www.example.com")
2727  // Ensure a trailing slash if it's meant to represent the root of the site
2728  if (!shareSite.endsWith('/')) {
2729    shareSite += '/';
2730  }
2731  let fullMsg = `${msgText}\n-- ${shareSite}`;
2732  let encodedMsg = encodeURIComponent(fullMsg);
2733
2734  // Facebook (requires App ID)
2735  if (e.target.closest(".share-fb")) {
2736    e.preventDefault();
2737
2738    // You must include a URL even if you're just sharing text
2739    const shareURL = encodeURIComponent(window.location.href); // or your chatbot page URL
2740    const fbShareURL = "https://www.facebook.com/sharer/sharer.php?u=" + shareURL + "&quote=" + encodedMsg;
2741
2742    window.open(fbShareURL, "_blank", "width=600,height=400");
2743  }
2744
2745  // WhatsApp
2746  if (e.target.closest(".share-wa")) {
2747    e.preventDefault();
2748    window.open("https://wa.me/?text=" + encodedMsg, "_blank");
2749  }
2750
2751  // X (Twitter)
2752  if (e.target.closest(".share-x")) {
2753    e.preventDefault();
2754    window.open("https://twitter.com/intent/tweet?text=" + encodedMsg, "_blank");
2755  }
2756
2757  // Email
2758  if (e.target.closest(".share-email")) {
2759    e.preventDefault();
2760    window.location.href = "mailto:?subject=Chatbot Message&body=" + encodedMsg;
2761  }
2762});
2763jQuery(document).ready(function($) {
2764
2765  let reportedMessage = "";
2766  let modalElements = {}; // Store references to modal elements
2767  let isModalInitialized = false; // Flag to prevent re-attaching listeners
2768
2769  /**
2770   * Initializes the report modal by finding its elements and attaching event listeners.
2771   * This function is designed to be called only once, the first time the report icon is clicked,
2772   * to ensure all DOM elements are available.
2773   * @returns {boolean} True if initialization was successful, false otherwise.
2774   */
2775  function setupReportModal() {
2776    if (isModalInitialized) {
2777      return true; // Already initialized
2778    }
2779
2780    const modal = document.getElementById("wpbot-report-modal");
2781    const emailInput = document.getElementById("wpbot-report-email");
2782    const textInput = document.getElementById("wpbot-report-text");
2783    const cancelBtn = document.getElementById("wpbot-report-cancel");
2784    const reportForm = document.getElementById("wpbot-report-form");
2785
2786    if (!modal || !emailInput || !textInput || !cancelBtn || !reportForm) {
2787      console.error("❌ One or more modal elements missing in DOM. Cannot initialize report modal.");
2788      return false; // Initialization failed
2789    }
2790
2791    // Store references to the elements
2792    modalElements = { modal, emailInput, textInput, cancelBtn, reportForm };
2793
2794    // Attach event listener for the cancel button
2795    modalElements.cancelBtn.addEventListener("click", function() {
2796      modalElements.modal.style.display = "none";
2797    });
2798
2799    // Attach event listener for the form submission
2800    modalElements.reportForm.addEventListener("submit", function(e) {
2801      e.preventDefault();
2802
2803      let email = modalElements.emailInput.value.trim();
2804      let reportText = modalElements.textInput.value.trim();
2805
2806      if (!email || !reportText) {
2807        alert("Please fill in both fields.");
2808        return;
2809      }
2810
2811      // Save email to localStorage
2812      localStorage.setItem("shopperemail", email);
2813
2814      // Build meta info for the report
2815      let meta = "Source URL: " + window.location.href + " | User Agent: " + navigator.userAgent;
2816
2817      // Send report via AJAX
2818      $.post(wp_chatbot_obj.ajax_url, {
2819        action: "wpbot_save_report",
2820        user_id: globalwpw.settings.obj.current_user_id,
2821        conversation_id: 3,
2822        message: reportedMessage, // Use the message captured when the icon was clicked
2823        report_text: reportText,
2824        email: email,
2825        meta_info: meta
2826      }, function(response) {
2827        if (response.success) {
2828           console.log("Report sent successfully.");
2829           // The original line `jQuery(e.target.closest(".fa fa-commenting-o")).addClass("submitted");`
2830           // was incorrect as `e.target` here refers to the form, not the original icon.
2831           // To mark the icon, a reference to it would need to be stored when it was clicked.
2832        } else {
2833          console.log("Failed to send report.");
2834        }
2835        modalElements.modal.style.display = "none"; // Hide modal after submission
2836      });
2837    });
2838
2839    isModalInitialized = true; // Mark as initialized
2840    return true; // Initialization successful
2841  }
2842
2843  // Event listener for clicks on the document to detect report icon clicks
2844  document.addEventListener("click", function(e) {
2845    if (e.target.closest(".fa-commenting-o")) {
2846      e.preventDefault();
2847      console.log("Report icon clicked");
2848
2849      // Attempt to initialize the modal elements and listeners if not already done.
2850      // This ensures elements are looked up only when needed, making it more robust
2851      // against timing issues if the modal HTML is loaded asynchronously or late.
2852      if (!setupReportModal()) {
2853        return; // If initialization failed (elements not found), stop here.
2854      }
2855
2856      // Now that we are sure modal elements are available, proceed to open the modal.
2857      let msgItem = e.target.closest(".wp-chatbot-msg");
2858      if (msgItem) {
2859        reportedMessage = msgItem.querySelector(".wp-chatbot-paragraph").innerText.trim();
2860      } else {
2861        reportedMessage = ""; // Fallback if message item not found
2862      }
2863
2864      // Prefill email from localStorage if available
2865      let shopperEmail = localStorage.getItem("shopperemail");
2866      modalElements.emailInput.value = shopperEmail ? shopperEmail : "";
2867
2868      // Clear previous report text
2869      modalElements.textInput.value = "";
2870      
2871      // Display the modal
2872      modalElements.modal.style.display = "block";
2873    }
2874  });
2875});
2876
2877document.addEventListener("click", function (e) {
2878  const likeIcon = e.target.closest(".dashicons-thumbs-up");
2879  const dislikeIcon = e.target.closest(".dashicons-thumbs-down");
2880
2881  if (!likeIcon && !dislikeIcon) return; // only handle like/dislike clicks
2882  e.preventDefault();
2883
2884  const msgItem = e.target.closest(".wp-chatbot-msg");
2885  const feedbackContainer = jQuery(msgItem).find(".qcld-like-dislike-icon");
2886  const likeAnchor = jQuery(msgItem).find(".dashicons-thumbs-up").parent("a");
2887  const dislikeAnchor = jQuery(msgItem).find(".dashicons-thumbs-down").parent("a");
2888
2889  let feedbackType = "";
2890  let isToggleOff = false;
2891
2892  if (likeIcon) {
2893    // If like is already active → toggle it off
2894    if (likeAnchor.hasClass("liked")) {
2895      likeAnchor.removeClass("liked");
2896      likeIcon.classList.remove("liked");
2897      isToggleOff = true;
2898    } else {
2899      // Activate like, deactivate dislike
2900      likeAnchor.addClass("liked");
2901      likeIcon.classList.add("liked");
2902      dislikeAnchor.removeClass("disliked");
2903      jQuery(msgItem).find(".dashicons-thumbs-down").removeClass("disliked");
2904      feedbackType = "like";
2905    }
2906  } else if (dislikeIcon) {
2907    // If dislike is already active → toggle it off
2908    if (dislikeAnchor.hasClass("disliked")) {
2909      dislikeAnchor.removeClass("disliked");
2910      dislikeIcon.classList.remove("disliked");
2911      isToggleOff = true;
2912    } else {
2913      // Activate dislike, deactivate like
2914      dislikeAnchor.addClass("disliked");
2915      dislikeIcon.classList.add("disliked");
2916      likeAnchor.removeClass("liked");
2917      jQuery(msgItem).find(".fa-thumbs-o-up").removeClass("liked");
2918      feedbackType = "dislike";
2919    }
2920  }
2921
2922  // 🔹 Only send feedback if toggled ON
2923  if (!isToggleOff && feedbackType) {
2924    let message = msgItem.querySelector(".wp-chatbot-paragraph").innerText.trim();
2925    let meta =
2926      "Source URL: " +
2927      window.location.href +
2928      " | User Agent: " +
2929      navigator.userAgent;
2930
2931    jQuery.post(
2932      wp_chatbot_obj.ajax_url,
2933      {
2934        action: "wpbot_save_feedback",
2935        user_id: globalwpw.settings.obj.current_user_id,
2936        conversation_id: 3,
2937        message: message,
2938        feedback: feedbackType,
2939        meta_info: meta,
2940      },
2941      function (response) {
2942        if (response.success) {
2943          console.log("Feedback saved:", feedbackType);
2944        } else {
2945          console.log("Failed to save feedback.");
2946        }
2947      }
2948    );
2949  } else {
2950    console.log("Feedback toggled off, not saving.");
2951  }
2952});
2953})(jQuery);

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.