PageSourceSearch

https://icats.edu.my/wp-content/plugins/chatbot/js/qcld-wp-chatbot-plugin.js?ver=8.2.7

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