PageSourceSearch

https://muaythaiontario.org/wp-content/plugins/magic-tooltips-for-…/assets/js/custom.js?ver=2.0.52.1028

js muaythaiontario.org collected 2026-10-04 05:23:22 UTC 81,123 bytes, 1,781 lines download raw bytes

1
2(function($) {
3    var mtfgfTooltipApi = null;
4
5
6    function mmattr($that, key) {
7        return $that.attr(key) || $that.attr('data-'+key);
8    }
9    // v20200220
10    var isFieldOfVisibleGForm = function($that) {
11        var gform_page = $that.closest('.gform_page');
12        if((gform_page.length > 0) && (gform_page.css('display') == 'none')) {
13            return false;
14        }
15
16        var gpnf_nested_form = $that.closest('.gpnf-nested-form');
17        if((gpnf_nested_form.length > 0) && (gpnf_nested_form.css('display') == 'none')) {
18            return false;
19        }
20
21        return true;
22    }
23
24    var isMMI = function($forceModal) {
25        return (mtfgf_settings && mtfgf_settings.add_icon) && ($forceModal || mtfgf_settings.add_icon_hover_icon || mtfgf_settings.add_icon_click_icon);
26    }
27
28    // v20200220
29    var isFieldInited = function($that) {
30        if($that.hasClass('mm-tooltip-inited')) {
31            return true;
32        }
33        return false;
34    }
35
36    // v20200220
37    var markFieldInited = function($that) {
38        $that.addClass('mm-tooltip-inited');
39    }
40
41    // v20200220
42    var isContainTooltipContent = function(tipC) {
43        // console.log('mtfgtrim', mtfgtrim($('<div>'+tipC+'</div>').text()));
44        // return !((!tipC) || (tipC.length==0) || (!/(<|>)/i.test(tipC) && (mtfgtrim($('<div>'+tipC+'</div>').text()).length==0)));
45        var hasText = !((!tipC) || (tipC.length==0) || (mtfgtrim($('<div>'+tipC+'</div>').text()).length==0));
46
47        var hasImageOrVideo = /(<iframe|<video|<img|<script|<object)/i.test(tipC);
48
49        return hasText || hasImageOrVideo;
50    }
51
52    // v20200220
53    var encodedStr = function(rawStr){
54        return rawStr.replace(/[\u00A0-\u9999<>\&]/gim, function(i) {
55            return '&#'+i.charCodeAt(0)+';';
56        });
57    };
58
59    // v20200220
60    var handle_gfield_list_column = function($that, is_reinit_price_field, tooltip_code) {
61        var $ligfield = $that.closest('.gfield');
62        $forceModal = $ligfield.hasClass('mm-enable-modal');
63        // console.log('mtfgf_settings', mtfgf_settings);
64        $desc = $that.closest('.gfield').find('.mm_tooltip_text');
65        //console.log('desc', $desc);
66        if($desc.length > 0){
67            var tipC = getTooltipContentRaw($that.closest('.gfield').find('.gfield_label'), mtfgf_settings, $that.index()+1, true);
68            var hasTooltipContent = isContainTooltipContent(tipC);
69            //console.log('hasTooltipContent', hasTooltipContent, tipC);
70            if(hasTooltipContent){
71                var ligfieldicon = $ligfield.attr('mm-fa-icon') || 'fa fa-question-circle';
72                var ligfieldiconClasses = ligfieldicon.split(' ');
73                var ligfieldiconClass = ligfieldiconClasses[ligfieldiconClasses.length-1];
74                if(mtfgf_settings && mtfgf_settings.add_icon) {
75                    $label = $that;//.find('label');
76                    if($label.find('mmi').length == 0) {
77                        if(mtfgf_settings.showIconLeft) {
78                            $label.html('<label><mmi><i class="'+ligfieldicon+'"></i></mmi> '+$label.html())+'</label>';
79                        }
80                        else {
81                            $label.html('<label>' + $label.html()+' <mmi><i class="'+ligfieldicon+'"></i></mmi></label>');
82                        }
83                    }
84                    
85                }
86                var selector001 = 'label'; // $forceModal ? 'label mmi' : 'label';
87                var targetLabel = $that.find('label');
88                var target = $that.find(selector001);
89
90                // if(mtfgf_settings && mtfgf_settings.mouse_over) {
91                //     targetLabel.addClass('mm-tooltip');
92                //     }
93                if(mtfgf_settings && mtfgf_settings.add_underline) {
94                    targetLabel.addClass('mm-tooltip-title-underline');
95                }
96
97                initHoverTooltip(target, mtfgf_settings.add_icon && $forceModal, tooltip_code, tipC, hideEvents, mtfgf_settings);
98                
99                // targetLabel.addClass('mm-tooltip-inited');
100            }
101        }
102    }
103
104    // v20200220
105    var handle_radio_or_checkbox_option = function($that, is_reinit_price_field, tooltip_code, force_index) {
106        var $ligfield = $that.closest('.gfield');
107        $forceModal = $ligfield.hasClass('mm-enable-modal') || mtfgf_settings.force_modal;
108        // console.log('mtfgf_settings', mtfgf_settings);
109        $desc = $that.closest('.gfield').find('.mm_tooltip_text');
110        // console.log('desc', $desc);
111        if($desc.length > 0){
112            var tipC = getTooltipContentRaw($that.closest('.gfield').find('.gfield_label'), mtfgf_settings, force_index ? force_index : $that.index()+1, true);
113            // console.log('tipC', tipC);
114            var hasTooltipContent = isContainTooltipContent(tipC);
115            var deschtml = $desc.html();
116            if(!hasTooltipContent && mtfgf_settings.mouse_over_input && !mtfgfHasOptionsHr(deschtml)) {
117                tipC = $desc.html();
118                hasTooltipContent = true;
119            }
120
121            // console.log('handle_radio_or_checkbox_option', $that, hasTooltipContent);
122
123            if(hasTooltipContent){
124                var ligfieldicon = $ligfield.attr('mm-fa-icon') || 'fa fa-question-circle';
125                var ligfieldiconClasses = ligfieldicon.split(' ');
126                var ligfieldiconClass = ligfieldiconClasses[ligfieldiconClasses.length-1];
127                $label = $that.find('label');
128                var hasLabel = $label.length > 0;
129                if(!hasLabel) $label = $that;
130                if(mtfgf_settings && mtfgf_settings.add_icon) {
131                    
132                    if($label.find('mmi').length == 0) {
133                        // $label.attr('tabindex', 0);
134                        if(mtfgf_settings.showIconLeft) {
135                            $label.html('<mmi><i class="'+ligfieldicon+'"></i></mmi> '+$label.html());
136                        }
137                        else {
138                            $label.html($label.html()+' <mmi><i class="'+ligfieldicon+'"></i></mmi>');
139                        }
140                    }
141                }
142                // var selector001 = (mtfgf_settings && mtfgf_settings.add_icon) && ($forceModal || mtfgf_settings.add_icon_hover_icon || mtfgf_settings.add_icon_click_icon) ? '> :nth-child(2) mmi' : '> :nth-child(2)';
143
144                var selector001 = isMMI($forceModal) ? '> label mmi' : '> label';
145                // var selector001 = (mtfgf_settings && mtfgf_settings.add_icon) && ($forceModal || mtfgf_settings.add_icon_hover_icon || mtfgf_settings.add_icon_click_icon) ? 'label mmi' : 'label';
146                var target = hasLabel ? $that.find(selector001) : (isMMI($forceModal) ? $that.find('mmi') : $that);
147                // console.log('handle_radio_or_checkbox_option', $label, target);
148
149
150                // if(mtfgf_settings.mouse_over_input || (!mtfgf_settings.focus_input)) {
151                    
152                // }
153                // else if(mtfgf_settings.focus_input) {
154                //     target =  $that.find('input:nth-child(1)');
155                // }
156
157                // console.log('target', target);
158
159                // var gf_price_fix = false;
160
161                // var gf_price_fix = (!mtfgf_settings.isMobile) && $that.closest('.gfield').hasClass('gfield_price');
162
163                // (mtfgf_settings.add_icon_hover_icon) || $forceModal ? ':nth-child(2) mmi' : ':nth-child(2)';
164
165                initHoverTooltip(target, mtfgf_settings.add_icon && $forceModal, tooltip_code, tipC, hideEvents, mtfgf_settings);
166            }
167        }
168    }
169
170    // v20200220
171    var reinit_price_field = function(formId, tooltip_code) {
172        $('#gform_'+formId+' .gfield_price .gfield_checkbox > li, #gform_'+formId+' .gfield_price .gfield_radio > li, #gform_'+formId+' .gfield_price .gfield_checkbox > div, #gform_'+formId+' .gfield_price .gfield_radio > div').each(function(index) {
173            $that = $(this);
174            var gform_page = $that.closest('.gform_page');
175            if((gform_page.length > 0) && (gform_page.css('display') == 'none')) {
176                return;
177            }
178            handle_radio_or_checkbox_option($that, true, tooltip_code);
179            
180        });
181    }
182
183    // v20200220
184    var mtfgtrim = function(s) {
185        //return this.replace(/[(^\s+)(\s+$)]/g,"");//會把字符串中間的空白符也去掉
186        //return this.replace(/^\s+|\s+$/g,""); //
187        return s.replace(/^\s+/g,"").replace(/\s+$/g,"");
188    }
189
190    // v20200220
191    var mtfgfGetValueFromRegExp = function(regex, html){
192        var m = null;
193        var result = '';
194        if ((m = regex.exec(html)) !== null) {
195            // This is necessary to avoid infinite loops with zero-width matches
196            if (m.index === regex.lastIndex) {
197                regex.lastIndex++;
198            }
199            // The result can be accessed through the `m`-variable.
200            m.forEach(function(match, groupIndex) {
201                //console.log(`Found match, group ${groupIndex}: ${match}`);
202                if(groupIndex == 1){
203                    result = match;
204                }
205            });
206        }
207        return result;
208    }
209
210    // v20200220
211    var hideEvents = {
212        hidden: function(event, api) {
213            // console.log('api000002', api, '#qtip-'+api.id+' iframe');
214            jQuery('#qtip-'+api.id+' iframe').each(function(){
215                var leg = jQuery(this).attr("src");
216                var regex =/https?:\/\/(www.)?youtube|youtu\.be/ig;
217                if(leg.match(regex)) {
218                    // console.log('api000002 youtube video, try to pause');
219                    this.contentWindow.postMessage(JSON.stringify({
220                        event: 'command',
221                        func: 'pauseVideo' }), '*'); // pauseVideo stopVideo
222                }
223                
224                // var leg=jQuery(this).attr("src");
225                // jQuery(this).attr('src', leg);
226                // console.log('api000002 leg', leg);
227            });
228          // Destroy it immediately
229          // api.destroy(false);
230        },
231        hide: function(event, api) {
232            // mtfgfTooltipApi = null;
233            // console.log('mtfgfTooltipApi hide', mtfgfTooltipApi);
234            // console.log('hidetooltip', event.tagName, event.originalEvent);
235            // if(event.originalEvent && event.originalEvent.originalEvent && event.originalEvent.originalEvent.originalTarget.tagName == 'IFRAME') {
236            //  event.preventDefault();
237            // }
238
239            // prevent auto hide for youtube video
240            if(event.type == 'mouseout' && event.originalEvent && event.originalEvent.target && event.originalEvent.target.tagName == 'IFRAME') {
241                event.preventDefault();
242            }
243            else if(event.type == 'blur' && event.originalEvent && event.originalEvent.target && event.originalEvent.target.activeElement && event.originalEvent.target.activeElement.tagName == 'IFRAME') {
244                event.preventDefault();
245            }
246        },
247        show: function(event, api) {
248
249            mtfgfTooltipApi = api; //$(this).qtip('api');
250            // console.log('mtfgfTooltipApi show', mtfgfTooltipApi);
251            setTimeout(function(){
252                // console.log('qtipshow', event, api);
253                if(jQuery().accordion) {
254                    jQuery( event.target ).find(".qtip-content .mm-accordion").each(function(){
255                        var $that = $(this);
256                        if($that.hasClass('mm-accordion-all-collapsed')) {
257                            $that.accordion({
258                                collapsible: true,
259                                active: false,
260                            });
261                        } else {
262                            $that.accordion();
263                        }
264                    });
265                    // setTimeout(function(){
266                        mtfgfTooltipApi.reposition(event);
267                    // }, 13);
268                }
269            }, 13);
270            
271        }
272    };
273
274    function mtfgfHasOptionsHr(html) {
275        var split_str_arr = ['<hr>', '<hr />', '<hr/>'];
276        for(var jj =0; jj < split_str_arr.length; jj++ ) {
277            if(html.indexOf(split_str_arr[jj])>=0) {
278                return true;
279            }
280        }
281        return false;
282    }
283
284    // v20200220
285    function getTooltipContentRaw($that, mtfgf_settings, i, isRadioOrCheckbox) {
286        var selector = mtfgf_settings.description_as_tooltip ? '.gfield_description' : '.mm_tooltip_text';
287        // var mmli = $that.parents('.mm-tooltip-li');
288        var mmli = $that.closest('.gfield');
289        var html = mmli.find(selector).html();
290        // console.log('getTooltipContentRaw001', html);
291        if(mtfgf_settings.description_as_tooltip && (!html)) {
292            selector = '.mm_tooltip_text';
293            html = mmli.find(selector).html();
294            // console.log('getTooltipContentRaw002', html);
295        }
296
297
298
299        //if(html && ($that.next().hasClass('ginput_container_radio') || $that.next().hasClass('ginput_container_checkbox'))) {
300        if((i>=0) && html && isRadioOrCheckbox) {
301            var split_str_arr = ['<hr>', '<hr />', '<hr/>'];
302            var split_str = false;
303            for(var jj =0; jj < split_str_arr.length; jj++ ) {
304                if(html.indexOf(split_str_arr[jj])>=0) {
305                    split_str = split_str_arr[jj];
306                    break;
307                }
308            }
309
310            if(split_str) {
311                var hs = html.split(split_str);
312                // console.log('getTooltipContentRaw - hs', hs);
313                if((i>=0) && (hs.length > i)) {
314                    html = hs[i];
315                }
316                else {
317                    html = false;
318                }
319            }
320            else if(i > 0) {
321                return false;
322            }
323
324        }
325
326
327        //}
328        return html;
329
330        //ginput_container_radio
331    }
332
333    // v20200220
334    function getTooltipContent($that, mtfgf_settings, isRadioOrCheckbox) {
335        var m = getTooltipContentRaw($that, mtfgf_settings, 0, isRadioOrCheckbox);
336        // console.log("getTooltipContentResult", m, $that);
337        return m;
338    }
339
340    // v20200220
341    function fixeIsHover(isHover, tooltipHTML){
342        if(mtfgf_settings.enable_lightbox && mtfgf_settings.enable_lightbox_on_click_icon) {
343            var foundImg = /<img/i.test(tooltipHTML);
344            if(tooltipHTML && foundImg) {
345                return false;
346            }
347        }
348
349        return isHover;
350    }
351
352    var mm_named_styles_added = [];
353    var mm_custom_max_width_added = [];
354    // v20200220
355    function mtfgf_maybe_custom_max_width($that){
356        var $ligfield = $that.closest('.gfield');
357        var $enalbedCustomMaxWidth = $ligfield.hasClass('mm-enable-custom-max-width');
358        if($enalbedCustomMaxWidth) {
359            var maxWidth = $ligfield.attr('mm-max-width');
360            if(mm_custom_max_width_added.indexOf(maxWidth) == -1) {
361                var $container = $('<style type="text/css"></style>').appendTo("body");
362                $container.text('.qtip.mm-custom-max-width-'+maxWidth+' {max-width: '+maxWidth+'px !important}');
363
364                mm_custom_max_width_added[mm_custom_max_width_added.length] = maxWidth;
365            }
366            return maxWidth;
367        }
368        return false
369    }
370
371    function mtfgf_handle_named_style($that, tooltip_code, style_id) {
372        
373        // console.log('window.mtfgf_named_styles', window.mtfgf_named_styles);
374        if(window.mtfgf_named_styles && window.mtfgf_named_styles[style_id]) {
375            var mtfgf_js_code = {};
376            var mtfgf_css_code = '';
377            // console.log('window.mtfgf_named_styles[style_id]', window.mtfgf_named_styles[style_id]);
378            var mtfgf = window.mtfgf_named_styles[style_id].style;
379            if(mmMobileDetect.isMobile.phone) {
380                mtfgf_js_code = mtfgf.js_code_phone ? mtfgf.js_code_phone : mtfgf.js_code;
381                mtfgf_css_code = mtfgf.css_code_phone ? mtfgf.css_code_phone : mtfgf.css_code;
382            }
383            else if(mmMobileDetect.isMobile.tablet) {
384                mtfgf_js_code = mtfgf.js_code_pad ? mtfgf.js_code_pad : mtfgf.js_code;
385                mtfgf_css_code = mtfgf.css_code_pad ? mtfgf.css_code_pad : mtfgf.css_code;
386            }
387            else {
388                mtfgf_js_code = mtfgf.js_code;
389                mtfgf_css_code = mtfgf.css_code;
390            }
391
392            eval('var named_tooltip_code = ' + mtfgf_js_code);
393
394            named_tooltip_code.style.classes = " mm-tooltip-container-" + style_id;
395            mtfgf_css_code = mtfgf_css_code.replace(/\.mm\-tooltip\-container/g, '.mm-tooltip-container-'+style_id);
396
397            if(mm_named_styles_added.indexOf(style_id) == -1) {
398                var $container = $('<style type="text/css"></style>').appendTo("body");
399                $container.text(mtfgf_css_code);
400
401                mm_named_styles_added[mm_named_styles_added.length] = style_id;
402            }
403
404            // console.log('named_tooltip_code', named_tooltip_code);
405
406            return named_tooltip_code;
407        }
408
409        return tooltip_code;
410    }
411
412    // v20200220
413    function mtfgf_get_tooltip_code($that, tooltip_code){
414        if($that.attr('tip2-ns')) {
415            var style_id = $that.attr('tip2-ns');
416            return mtfgf_handle_named_style($that, tooltip_code, style_id);
417        }
418        var $ligfield = $that.closest('.gfield');
419        var $enalbedNamedStyle = $ligfield.hasClass('mm-enable-named-style');
420        if($enalbedNamedStyle) {
421            var style_id = $ligfield.attr('mm-named-style');
422            return mtfgf_handle_named_style($that, tooltip_code, style_id);
423        }
424        return tooltip_code;
425    }
426
427    // v20200220
428    function mtfgf_open_link_in_new_window(html) {
429        return html ? html.replace(/<a(.+?>)/gi, function(match, p1, p2, offset, input_string)
430        {
431            var match2 = match.toLowerCase();
432            if(match2.indexOf('href=')>0 && match2.indexOf('target=')==-1) {
433                return '<a target="_blank"'+p1;
434            }
435            else {
436                return match;
437            }
438        }) : html;
439    }
440
441    // v20200220
442    function mtfgf_maybe_add_title(html, mmli, mmliradio) {
443        if(mmli.attr('mm-tooltip-custom-title')) {
444            var custom_title = '';
445            if(mmliradio.length > 0) {
446                var label = mmliradio.find('label').contents();
447                // custom_title = label[0].textContent;
448                if(label && label[0]) {
449                    custom_title = label[0].textContent;
450                }
451                else {
452                    custom_title = mmliradio.text();
453                    // console.log('mmliradio', mmliradio);
454                }
455                
456            }
457            else {
458                custom_title = mmli.attr('mm-tooltip-custom-title');
459            }
460
461            if(custom_title.length > 0) {
462                html = '<h6 class="mm-tooltip-title">'+ custom_title+'</h6>'+html;
463            }
464            
465        }
466
467        return html;
468    }
469
470    // v20200220
471    function initHoverTooltip($that, isModal, tooltip_code_default, tooltipHTML, hideEvents, settings1, isForce, modalHint) {
472        isModal = isModal || mtfgf_settings.force_modal;
473        if(!tooltipHTML) return;
474        if(tooltipHTML.trim().length === 0) return;
475        var mmli = $that.closest('.gfield');
476        // var pum = mmli.parents('.pum');
477        // // console.log('pumBeforeOpen isForce', isForce);
478        // if((!isForce) && pum.length > 0) {
479        //     // console.log('pumBeforeOpen发现pum');
480        //     pum.on('pumAfterOpen', function () {
481        //         // console.log('pumBeforeOpen');
482        //         var $popup = $(this);
483        //         setTimeout(function(){
484        //             initHoverTooltip($that, isModal, tooltip_code_default, tooltipHTML, hideEvents, settings1, true);
485        //         }, 200);
486        //     }); 
487        //     return;
488        // }
489
490        var maxWidth = mtfgf_maybe_custom_max_width($that);
491
492        tooltip_code = mtfgf_get_tooltip_code($that, tooltip_code_default);
493
494        
495
496        
497
498        tooltipHTML = mtfgf_open_link_in_new_window(tooltipHTML);
499
500
501        var mmliradio = $that.closest('.mm-tooltip-radio');
502        if(mmliradio.length === 0) mmliradio = $that.closest('th.mm-tooltip-list-item');
503        if(mmliradio.length === 0) {
504            var mmcell = $that.closest('td.gfield_list_cell');
505            // console.log('mmcell', mmcell);
506            if(mmcell.length > 0) {
507                var mmcellIndex = mmcell.index();
508
509                mmliradio = mmcell.closest('.gfield_list').find('th:nth-child('+(mmcellIndex+1)+')');
510                // console.log('mmcellIndex th', mmcellIndex, mmliradio);
511            }
512        }
513
514        tooltipHTML = mtfgf_maybe_add_title(tooltipHTML, mmli, mmliradio);
515
516        if(mtfgf_settings) {
517            var isHover = true;
518
519            isHover = fixeIsHover(isHover, tooltipHTML);
520            var forceShowTooltip = mmliradio.length === 0 && mmli.hasClass('mm-force-show-tooltip');
521            // console.log('forceShowTooltip', {forceShowTooltip, isModal});
522            if(isModal){
523                $that.click(function(e){
524                    e.preventDefault();
525                    var readMoreHTML = tooltipHTML.split('<!--more-->');
526
527                    if(readMoreHTML.length > 1) {
528                        var ReadMoreButtonText = mmli.attr('mm-modal-more-text') || 'Read More';
529
530
531                        readMoreHTML[0] += '<div class="mtfgf_modal_read_more_row"><a class="mtfgf_modal_read_more">'+ReadMoreButtonText+'</a></div>';
532                        readMoreHTML[0] += '<div class="mtfgf_modal_read_more_content">'+readMoreHTML[1]+'</div>';
533                    }
534
535                    //.appendTo('body');
536                    //$('#mtfgf_modal').
537                    $('<div class="mtfgf_modal">'+readMoreHTML[0]+'</div>').modalmm();
538
539                    setTimeout(function(){
540                        // console.log('qtipshow', event, api);
541                        if(jQuery().accordion) {
542                            jQuery(".mtfgf_modal .mm-accordion").each(function(){
543                                var $that = $(this);
544                                if($that.hasClass('mm-accordion-all-collapsed')) {
545                                    $that.accordion({
546                                        collapsible: true,
547                                        active: false,
548                                    });
549                                } else {
550                                    $that.accordion();
551                                }
552                            });
553                        }
554                        
555                    }, 13);
556                    return false;
557                });
558
559                var showTooltipHint = mmli.hasClass('mm-modal-enable-hint') || modalHint;
560
561
562                if(showTooltipHint){
563                    var ReadMoreButtonText1 = mmli.attr('mm-modal-hint-text') || modalHint || 'Click to show...';
564                    $that.qtip($.extend({}, tooltip_code, {
565                        content: {
566                            text:  ReadMoreButtonText1// Use the "div" element next to this for the content
567                        },
568                        show: {
569                            solo: true,
570                            ready: forceShowTooltip,
571                            event: 'hover',
572                        },
573                        hide: { //forceShowTooltip ? false :
574                            fixed: true,
575                            delay: 300
576                        },
577                        events: hideEvents
578                    }));
579                }
580            }
581            else if(isHover) { //hover to show tooltip
582                
583                if(mtfgf_settings.deviceType == 1 && mmli.hasClass('mm-tooltip-magic-position-mobile-phone')) {
584                    if(!(tooltip_code.position.my == 'top center' || tooltip_code.position.my == 'bottom center')) {
585                        tooltip_code.position.at = 'top center';
586                        tooltip_code.position.my = 'bottom center';
587                    }
588                    var leftPos  = $that[0].getBoundingClientRect().left;
589                    var winWidth = $(window).width();
590                    var domWidth = $that.width();
591                    if((leftPos + domWidth ) > winWidth / 2) {
592                        tooltip_code.style.tip = {
593                            // offset: -leftPos
594                            offset: -((winWidth-domWidth)/2 - leftPos) // offset from the center
595                        };
596                    } else {
597                        tooltip_code.style.tip = {
598                            offset: -leftPos - domWidth/2
599                        };
600                    }
601                    // console.log('tooltip_code leftPos', leftPos, domWidth, winWidth, tooltip_code)
602                }
603                
604                var showO = '';
605                var hideO = '';
606                var isInput = $that.is('input, textarea, select');
607                if(!isInput || mtfgf_settings.mouse_over_input || (!mtfgf_settings.focus_input)) {
608                    showO = mtfgf_settings.add_icon_click_icon ? 'click' : 'hover';
609                    hideO = {
610                        fixed: true,
611                        delay: 300
612                    }
613                } else if(mtfgf_settings.focus_input) {
614                    showO = mmliradio.length > 0 ? 'click' : 'focus';
615                    hideO = mmliradio.length > 0 ? {
616                        fixed: true,
617                        delay: 300
618                    } : 'unfocus';
619
620                    // if(mtfgf_settings.mouse_over) {
621                    //     showO = {
622                    //         event: mmliradio.length > 0 ? showO+' mouseenter' : showO
623                    //     };
624                    //     hideO = {
625                    //         fixed: true,
626                    //         delay: 300
627                    //     }
628                    // }
629                }
630                
631
632                // console.log('target qtip 1', mmliradio.length, $that, showO, hideO);
633                // console.log('target qtip 2', $that, showO, hideO);
634                const hasVideo = /(class="post-video")|youtube|<video|<iframe/ig.test(tooltipHTML);
635                
636
637                const tooltip_code_new = $.extend({}, tooltip_code);
638                tooltip_code_new.style.classes += maxWidth ? ' mm-custom-max-width-' + maxWidth : '';
639
640                // forceShowTooltip = true;
641
642                // console.log('tooltip_code_new', tooltip_code_new);
643                // mtfgf_settings.isMobile = true;
644                // console.log('tooltip_code_new222', $that, mtfgf_settings.isMobile ? 'click' : showO);
645                $that.qtip($.extend(tooltip_code_new, {
646                    content: {
647                        text:  tooltipHTML// Use the "div" element next to this for the content
648                    },
649                    // style: {
650                    //     classes: maxWidth ? 'mm-custom-max-width-' + maxWidth : ''
651                    // },
652                    show: {
653                        ready: forceShowTooltip,
654                        solo: true,
655                        event: (mtfgf_settings.isMobile && !mmli.hasClass('gfield_price') ? 'click' : showO),
656                    },
657                    hide: hasVideo ? 'unfocus' : hideO,
658                    events: hideEvents
659                }));
660                // $that.parent().off('click');
661                // console.log('forceShowTooltip 002', {tooltipHTML, $that, showO});
662
663                if(mtfgf_settings && mtfgf_settings.tab_stop) {
664                    $that
665                        .attr('tabindex', 0)
666                        .on('focus', function(e){
667                            // console.log('$that focused');
668                            $(this).trigger('mouseenter');
669                            // mtfgfTooltipApi = $(this).qtip('api');
670                        })
671                        .on('blur', function(e){
672                            // console.log('$that unfocused');
673                            $(this).trigger('mouseleave');
674                            // mtfgfTooltipApi = null;
675                        });
676                }
677            }
678            else { //click to show lightbox
679                if($that.attr('sb_items_id')){
680                    return;
681                }
682                var $images = $('<div>'+tooltipHTML+'</div>').find('img');
683
684                // console.log('sbItems tooltipHTML', tooltipHTML);
685                // console.log('sbItems images', $images);
686
687                mtfgf_settings['sb_items_seed'] = mtfgf_settings['sb_items_seed'] ? mtfgf_settings['sb_items_seed'] + 1 : 1;
688
689                var sbItems = [];
690                $images.each(function(index){
691                    var src = $(this).attr('data-lazy-src') || $(this).attr('src');
692                    if(src.indexOf('/plugins/') ==-1 ) {
693                        sbItems.push({
694                            href: src //, title:'My Caption'
695                        });
696                    }
697                });
698                mtfgf_settings['sb_items_'+mtfgf_settings['sb_items_seed']] = sbItems;
699                $that.addClass('mm-swipebox');
700                $that.attr('sb_items_id', mtfgf_settings['sb_items_seed']);
701                $that.click(function(e){
702                    e.preventDefault();
703                    var sbItems = mtfgf_settings['sb_items_'+$(this).attr('sb_items_id')];
704                    // console.log('sbItems', sbItems);
705                    jQuery.swipebox(sbItems);
706                    return false;
707                });
708
709                if(mtfgf_settings.enable_lightbox_hover_tooltip){
710                    $that.qtip($.extend({}, tooltip_code, {
711                        content: {
712                            text:  mtfgf_settings.lightbox_hover_tooltip// Use the "div" element next to this for the content
713                        },
714                        show: {
715                            solo: true,
716                            ready: forceShowTooltip,
717                            event: 'hover',
718                        },
719                        hide: { //forceShowTooltip ?  false : {
720                            fixed: true,
721                            delay: 300
722                        },
723                        events: hideEvents
724                    }));
725                }
726            }
727        }
728    }
729
730    // v20200220
731    function quoteattr(s, preserveCR) {
732        preserveCR = preserveCR ? '&#13;' : '\n';
733        return ('' + s) /* Forces the conversion to string. */
734            .replace(/&/g, '&amp;') /* This MUST be the 1st replacement. */
735            .replace(/'/g, '&apos;') /* The 4 other predefined entities, required. */
736            .replace(/"/g, '&quot;')
737            .replace(/</g, '&lt;')
738            .replace(/>/g, '&gt;')
739            /*
740            You may add other replacements here for HTML only
741            (but it's not necessary).
742            Or for XML, only if the named entities are defined in its DTD.
743            */
744            .replace(/\r\n/g, preserveCR) /* Must be before the next replacement. */
745            .replace(/[\r\n]/g, preserveCR);
746            ;
747    }
748
749    // v20200220
750    var handle_gfield_input_textarea_no_label_mode = function($that, hasSubLabel, placeholder, no_label_show_help_icon, $desc) {
751        $that.closest('.gfield').find('input, textarea').each(function(){
752            if(['radio', 'checkbox', 'hidden'].indexOf($(this).attr('type')) >= 0) {
753                return;
754            }
755            if($(this).attr('placeholder')){
756                placeholder = $(this).attr('placeholder');
757            }
758            else if(hasSubLabel) {
759                placeholder = $(this).parent().find('label').text();
760            }
761
762            // if(mtfgf_settings.add_underline) {
763            //  $(this).addClass('mm-tooltip-placeholder-underline');
764
765            // }
766
767            if(mtfgf_settings.add_icon && ($desc.length > 0) && (!no_label_show_help_icon)) {
768                // var newPlaceholder = placeholder+" &#xF059;";
769                // var placeholderMark = "{mtfgf-placeholder}";
770                // this.setAttribute('placeholder', "{mtfgf-placeholder}");
771                // $(this).css('font-family', "Arial, FontAwesome, \"Font Awesome 5 Free\"")
772                // console.log('testfontfamily', $('body').css('font-family'));
773                var newff = $('body').css('font-family');
774                if(!newff) {
775                    newff = "mticon";
776                } else {
777                    newff += ", mticon";
778                }
779                $(this).css('font-family', newff)
780                // &#xe85d;
781                
782                // $(this).addClass('mticon')
783                    .attr('placeholder', (placeholder+" \ue85d")); //&#xf059; " "
784            }
785            else {
786                $(this).attr('placeholder', placeholder);
787            }
788        });
789    }
790
791    // v20200220
792    var handle_gfield_select_no_label_mode = function($that, hasSubLabel, placeholder, no_label_show_help_icon, $desc) {
793        $that.closest('.gfield').find('select').each(function(){
794            var $that = $(this);
795            var firstOption = $that.find('option:first-child');
796            var selectedOption = $that.find('option:selected');
797            var hasPlaceholder = (firstOption.length == 1) && (!firstOption.attr('value'));
798
799            if(hasPlaceholder && firstOption.text()){
800                placeholder = firstOption.text();
801            }
802            else if(hasSubLabel) {
803                placeholder = $that.parent().find('label').text();
804            }
805
806            if(!hasPlaceholder) {
807                firstOption =  $('<option>');
808                // console.log('sssssss', selectedOption.attr('selected'), selectedOption.html());
809                if((selectedOption.length == 0) || (selectedOption.index()==0) ) {
810                    firstOption.attr('selected', 'selected');
811                }
812                $that.prepend(firstOption);
813            }
814
815            if(mtfgf_settings.add_icon && ($desc.length > 0) && (!no_label_show_help_icon)) {
816                firstOption.html(placeholder+" ").parent().css('font-family', "Arial, FontAwesome");
817            }
818            else {
819                firstOption.html(placeholder);
820            }
821        });
822    }
823
824    // v20200220
825    var handle_gfield_select_no_label_mode = function($ligfield, ligfieldicon, $forceModal, tooltip_code, $desc, hideEvents) {
826        var $sig = $ligfield.find('.gfield_checkbox li')
827        // setTimeout(function(){
828        if($sig.length == 1) {
829            // if($that.closest('.gfield').hasClass('gfield_price')) {
830
831            // }
832            // else {
833                var $sig0 = $($sig.get(0)).find('label')
834                if(mtfgf_settings.add_icon) {
835                    // $sig0.attr('tabindex', 0);
836                    if(mtfgf_settings.showIconLeft) {
837                        $sig0.html('<mmi><i class="'+ligfieldicon+'"></i></mmi> '+$sig0.html());
838                    }
839                    else {
840                        $sig0.html($sig0.html()+' <mmi><i class="'+ligfieldicon+'"></i></mmi>');
841                    }
842                }
843
844                // var gf_price_fix = (!mtfgf_settings.isMobile) && $that.closest('.gfield').hasClass('gfield_price');
845                var gf_price_fix = false;
846
847                var targetSig = isMMI($forceModal) && (!gf_price_fix) ? $sig0.find('mmi') : $sig0;
848                // console.log("getTooltipContentResult", "single checkbox", $sig0.find('.fa-question-circle'), $desc.html());
849
850                initHoverTooltip(targetSig, mtfgf_settings.add_icon && $forceModal, tooltip_code, $desc.html(), hideEvents, mtfgf_settings);
851            // }
852        }
853        // }, 100);
854    }
855
856    // v20200220
857    var handle_gfield_input_textarea_normal_mode = function($that, $desc, no_label_show_help_icon_item, ligfieldicon, $forceModal, hideEvents, tooltip_code) {
858        var $sig0 = $that.closest(".gfield").find('.ginput_container input, .ginput_container textarea, .ginput_container select')
859        //mtfgf_settings.add_icon && 
860        if($sig0.length > 0) {
861            
862            $sig0.each(function(){
863                var $sigLast = $(this); //$sig0.last();
864                if(['radio', 'checkbox', 'hidden'].indexOf($sigLast.attr('type')) >= 0) {
865                    return;
866                }
867
868                
869
870                if($sigLast.closest("ul").hasClass('gfield_radio')) {
871                    // console.log('handle_gfield_input_textarea_normal_mode', $sigLast);
872                    return;
873                }
874
875                // if(['radio', 'checkbox'].indexOf($sigLast.attr('type')) >= 0 && !(mtfgf_settings.mouse_over_input ||  mtfgf_settings.focus_input)) {
876                //     return;
877                // }
878
879                // if(['radio', 'checkbox'].indexOf($sigLast.attr('type')) >= 0 && mtfgf_settings.mouse_over_input) {
880                //     if($sigLast.next().is('input')) return;
881                //     $sigLast = $sigLast.parent();
882
883                //     return;
884                // }
885
886                if($sigLast.parent().hasClass('ginput_container_time') && !$sigLast.is(':last-child') ) return;
887                if($sigLast.parent().hasClass('ginput_list')) return;
888
889
890
891                var tipC = $desc.html();
892                var cell = $sigLast.closest('.gfield_list_cell');
893                if(cell.length > 0) {
894                    var celllabel = $sigLast.closest('.gfield').find('.gfield_label');
895                
896                    tipC = getTooltipContentRaw(celllabel, mtfgf_settings, cell.index()+1, true);
897                }
898
899                var hasTooltipContent = isContainTooltipContent(tipC);
900                // console.log('tipC', tipC, hasTooltipContent);
901                if(!hasTooltipContent) {
902                    return;
903                }
904
905                if(no_label_show_help_icon_item) {
906                    // $sigLast.attr('tabindex', 0)
907                    if(mtfgf_settings.showIconLeft) {
908                        $sigLast.before('<mmi><i class="'+ligfieldicon+'"></i></mmi> ');
909                    }
910                    else {
911                        $sigLast.after('  <mmi><i class="'+ligfieldicon+'"></i></mmi>');
912                    }
913                }
914
915                var targetSigLast = $sigLast.parent().find('mmi');
916                
917                if(no_label_show_help_icon_item) {
918                    initHoverTooltip(targetSigLast, mtfgf_settings.add_icon && $forceModal, tooltip_code, tipC, hideEvents, mtfgf_settings);
919                }
920                
921
922                if(mtfgf_settings && (mtfgf_settings.mouse_over_input ||  mtfgf_settings.focus_input) && !$forceModal) {
923
924                    initHoverTooltip($sigLast, mtfgf_settings.add_icon && $forceModal, tooltip_code, tipC, hideEvents, mtfgf_settings);
925                    
926                }
927            });
928        }
929    }
930
931    function reinit_global(tooltip_code) {
932        $('magic-tooltip, .magic-tooltip, .magic-tooltips').each(function(index) {
933            $that = $(this);
934            if(isFieldInited($that)) return;
935            markFieldInited($that);
936            // if(!isFieldOfVisibleGForm($that)) return;
937            // if(isFieldInited($that)) return;
938            // markFieldInited($that);
939            // var $ligfield = $that.closest('.gfield');
940            // $forceModal = $ligfield.hasClass('mm-enable-modal');
941            // console.log('mtfgf_settings', mtfgf_settings);
942            $desc = $('<textarea />').html($that.html()).text();
943
944            var tooltipContentName = mmattr($that, 'tooltip-content-name') || false;
945            var $label = mmattr($that, 'label') || '';
946            if(tooltipContentName) {
947                if($('#mtfgf-tc-'+tooltipContentName).length > 0) {
948                    $desc = $('#mtfgf-tc-'+tooltipContentName).html();
949                    if(!$label) {
950                        $label = $that.html();
951                    }
952                }
953            }
954
955            var isModal = mmattr($that, 'modal')==='true' || mmattr($that, 'modal')==='yes' || false;
956
957            var modalHint = mmattr($that, 'modal-hint');
958
959            $style = mmattr($that, 'style')  ? ' tip2-ns="'+mmattr($that, 'style')+'"' : '';
960            // console.log('desc', $desc);
961
962            if($desc.length > 0){
963                var className = mmattr($that, 'underline')==='yes' ? " mm-tooltip-title-underline" : "";
964                if(!$label || mmattr($that, 'icon')) {
965                    var ligfieldicon = mmattr($that, 'icon') || 'fa fa-question-circle';
966                    if(ligfieldicon.indexOf('fa') !== 0) {
967                        ligfieldicon = 'fa fa-question-circle'; 
968                    }
969                    var ligfieldiconClasses = ligfieldicon.split(' ');
970                    var ligfieldiconClass = ligfieldiconClasses[ligfieldiconClasses.length-1];
971                    if(mtfgf_settings.showIconLeft) {
972                        $that.before('<span'+$style+' class="mm-tooltip'+className+'"><mmi><i class="'+ligfieldicon+'"></i></mmi> '+$label+'</span>');
973                    }
974                    else {
975                        $that.before('<span'+$style+' class="mm-tooltip'+className+'">'+$label+' <mmi><i class="'+ligfieldicon+'"></i></mmi></span>');
976                    }
977                }
978                else {
979
980                    $that.before('<span'+$style+' class="mm-tooltip'+className+'">'+$label+'</span>');
981                }
982                initHoverTooltip($that.prev(), isModal, tooltip_code, $desc, hideEvents, mtfgf_settings, false, modalHint);
983            }
984        });
985    }
986
987    // v20200220
988    function reinit(tooltip_code) {
989        var shouldShowTooltip = mtfgf_settings && (mtfgf_settings.mouse_over || (mtfgf_settings.add_icon && (mtfgf_settings.add_icon_hover_icon || mtfgf_settings.add_icon_click_icon)));
990
991        // console.log('reinit 001');
992        // ----- $('.gfield_label, .mm-tooltip-label') begin ----- 
993        $('.gfield_label, .mm-tooltip-label').each(function(index) {
994            $that = $(this);
995            if($that.find(">:first-child").hasClass("gfield_label")) return;
996            if(!isFieldOfVisibleGForm($that)) return;
997            if(isFieldInited($that)) return;
998            markFieldInited($that);
999            // console.log('mtfgf_settings', mtfgf_settings);
1000            $desc = mtfgf_settings.description_as_tooltip ? $that.closest('.gfield').find('.gfield_description') : $that.closest('.gfield').find('.mm_tooltip_text');
1001
1002            if(mtfgf_settings.description_as_tooltip && $desc.length == 0 ) {
1003                $desc = $that.parents('.gfield').find('.mm_tooltip_text');
1004            }
1005
1006            // console.log('desc', $desc);
1007
1008            $forceNoLabel = $that.closest('.gfield').hasClass('mm-enable-no-label');
1009            $forceModal = $that.closest('.gfield').hasClass('mm-enable-modal');
1010            var hasSubLabel = $that.next().hasClass('ginput_complex');
1011
1012            // console.log('forceNoLabel', $forceNoLabel);
1013
1014            var no_label_show_help_icon_item = $that.closest('.gfield').hasClass('mm-enable-no-label-show-help-icon');
1015            var no_label_show_help_icon = (mtfgf_settings.no_label_show_help_icon || no_label_show_help_icon_item);
1016
1017            //No label mode begin
1018            if(mtfgf_settings && (mtfgf_settings.enable_no_label_mode || $forceNoLabel)) {
1019
1020                $that.closest('.gfield').addClass('mm-tooltip-li-no-label');
1021
1022                var $forceNoLabelPlaceholder = $that.closest('.gfield').hasClass('mm-enable-no-label-placeholder');
1023
1024                if(mtfgf_settings && (mtfgf_settings.enable_no_label_mode_placeholder || $forceNoLabelPlaceholder)) {
1025
1026                    var placeholder = '';
1027
1028                    var $forceNoLabelRequired = $that.closest('.gfield').hasClass('mm-enable-no-label-required');
1029
1030                    if(mtfgf_settings && (mtfgf_settings.no_label_show_required || $forceNoLabelRequired )) {
1031                        placeholder = $that.text();
1032                    }
1033                    else {
1034                        var $thatClone = $that.clone();
1035                        $thatClone.find('.gfield_required').remove()
1036                        placeholder = $thatClone.text();
1037                        // console.log('mtfgf_settings placeholder', placeholder);
1038                    }
1039
1040                    handle_gfield_input_textarea_no_label_mode($that, hasSubLabel, placeholder, no_label_show_help_icon, $desc);
1041
1042                    handle_gfield_select_no_label_mode($that, hasSubLabel, placeholder, no_label_show_help_icon, $desc);
1043                }
1044            }
1045            //No label mode end
1046            //
1047            
1048
1049
1050            if($desc.length > 0) {
1051                var $ligfield = $that.closest('.gfield');
1052                var $forceNoLabelAgree = $ligfield.hasClass('mm-enable-no-label-agree');
1053
1054                var ligfieldicon = $ligfield.attr('mm-fa-icon') || 'fa fa-question-circle';
1055                var ligfieldiconClasses = ligfieldicon.split(' ');
1056                var ligfieldiconClass = ligfieldiconClasses[ligfieldiconClasses.length-1];
1057
1058                //No label mode begin
1059                if(mtfgf_settings && (mtfgf_settings.enable_no_label_mode || $forceNoLabel)) {
1060                    if(mtfgf_settings.no_label_checkbox_tooltip || $forceNoLabelAgree) {
1061                        handle_gfield_select_no_label_mode($ligfield, ligfieldicon, $forceModal, tooltip_code, $desc, hideEvents);
1062                    }
1063                    if(no_label_show_help_icon) {
1064                        // $that.closest(".gfield").addClass('mm-tooltip-li-no-label-help-icon');
1065                    }
1066                }
1067                //No label mode end
1068                // if(no_label_show_help_icon_item) {
1069                    handle_gfield_input_textarea_normal_mode($that, $desc, no_label_show_help_icon_item, ligfieldicon, $forceModal, hideEvents, tooltip_code);
1070                    
1071
1072                    
1073                // }
1074                // else 
1075                if(!no_label_show_help_icon_item) {
1076                    var $ligfield = $that.closest('.gfield');
1077                    if(mtfgf_settings && (shouldShowTooltip ||  mtfgf_settings.mouse_over_input ||  mtfgf_settings.focus_input)) {
1078                        $ligfield.addClass('mm-tooltip-li');
1079
1080
1081                        if(mtfgf_settings.description_as_tooltip) {
1082                            $ligfield.addClass('mm-tooltip-li-hide-description');
1083                        }
1084                    }
1085
1086                    var tipC = getTooltipContentRaw($that, mtfgf_settings, 0, true);
1087                    var hasTooltipContent = isContainTooltipContent(tipC);
1088                    // console.log('tipC', tipC, hasTooltipContent);
1089                    if(!hasTooltipContent) {
1090                        return;
1091                    }
1092
1093                    if(shouldShowTooltip) {
1094                        $that.addClass('mm-tooltip');
1095                    }
1096                    if(mtfgf_settings && mtfgf_settings.add_underline) {
1097                        $that.addClass('mm-tooltip-title-underline');
1098                    }
1099
1100
1101                    if(mtfgf_settings && mtfgf_settings.add_icon) {
1102                        var ligfieldicon = $ligfield.attr('mm-fa-icon') || 'fa fa-question-circle';
1103                        var ligfieldicon2 = $ligfield.attr('mm-fa-icon2') || 'fa fa-question-circle';
1104                        var ligfieldiconClasses = ligfieldicon.split(' ');
1105                        var ligfieldiconClass = ligfieldiconClasses[ligfieldiconClasses.length-1];
1106                        // $that.attr('tabindex', 0)
1107                        var secondTooltip = $ligfield.hasClass('mm-enable-show-description-as-second-tooltip') ? ' 
1107<mmi2><i class="'+ligfieldicon2+'"></i></mmi2>' : '';
1108                        
1109                        if(mtfgf_settings.showIconLeft) {
1110                            $that.html('<mmi><i class="'+ligfieldicon+'"></i></mmi>'+secondTooltip+' '+$that.html());
1111                        }
1112                        else {
1113                            $that.html($that.html()+' <mmi><i class="'+ligfieldicon+'"></i></mmi>'+secondTooltip);
1114                        }
1115                    }
1116                }
1117            }
1118
1119        });
1120        // ----- $('.gfield_label, .mm-tooltip-label') end --------
1121
1122        if(shouldShowTooltip) {
1123            // var $ligfield = $that.closest('.gfield');
1124            // var ligfieldicon = $ligfield.attr('mm-fa-icon') || 'fa fa-question-circle';
1125            // var ligfieldiconClasses = ligfieldicon.split(' ');
1126            // var ligfieldiconClass = ligfieldiconClasses[ligfieldiconClasses.length-1];
1127            // var hsel = mtfgf_settings.add_icon_hover_icon ? '.mm-tooltip .'+ligfieldiconClass : '.mm-tooltip';
1128            $('.mm-tooltip').each(function() { // Notice the .each() loop, discussed below
1129                    //console.log('.mm-tooltip', $(this));
1130                var $that = $(this);
1131                var $next = $that.next();
1132                if(!isFieldOfVisibleGForm($that)) return;
1133                var $ligfield = $that.closest('.gfield');
1134                var ligfieldicon = $ligfield.attr('mm-fa-icon') || 'fa fa-question-circle';
1135                var ligfieldiconClasses = ligfieldicon.split(' ');
1136                var ligfieldiconClass = ligfieldiconClasses[ligfieldiconClasses.length-1];
1137                $forceModal = $ligfield.hasClass('mm-enable-modal');
1138                var $hsel = isMMI($forceModal) ? $that.find('mmi') : $that;
1139
1140                var gfgfield = $that.closest('.gfield');
1141                var isRadioOrCheckbox = !$next.hasClass('gpnf-nested-entries-container') && (gfgfield.hasClass('field_sublabel_below') || gfgfield.hasClass('field_sublabel_above'));
1142
1143                
1144                initHoverTooltip($hsel, $forceModal, tooltip_code, getTooltipContent($that, mtfgf_settings, isRadioOrCheckbox), hideEvents, mtfgf_settings);
1145
1146                if(isMMI($forceModal) && $ligfield.hasClass('mm-enable-show-description-as-second-tooltip') ) {
1147                    var $hsel2 = $that.find('mmi2');
1148                    if($hsel2.length > 0) {
1149                        initHoverTooltip($hsel2, $forceModal, tooltip_code, gfgfield.find('.gfield_description').html(), hideEvents, mtfgf_settings);
1150                    }
1151                }
1152            });
1153        }
1154
1155        $('.gfield_html').each(function(index) {
1156            $that = $(this);
1157            if(!isFieldOfVisibleGForm($that)) return;
1158            if(isFieldInited($that)) return;
1159
1160            if($that.find('.mm-tooltip-label').length>0) {
1161                return;
1162            }
1163
1164            markFieldInited($that);
1165
1166            // console.log('mtfgf_settings', mtfgf_settings);
1167            $desc = $that.find('.mm_tooltip_text');
1168            // console.log('desc', $desc);
1169
1170            if($desc.length > 0){
1171                initHoverTooltip($that, false, tooltip_code, $desc.html(), hideEvents, mtfgf_settings);
1172            }
1173        });
1174
1175        
1176
1177        $('.gform_wrapper tip').each(function(index) {
1178            $that = $(this);
1179
1180            if(!isFieldOfVisibleGForm($that)) return;
1181            if(isFieldInited($that)) return;
1182            markFieldInited($that);
1183            var $ligfield = $that.closest('.gfield');
1184            $forceModal = $ligfield.hasClass('mm-enable-modal');
1185
1186            // console.log('mtfgf_settings', mtfgf_settings);
1187            $desc = $that.html();
1188
1189            $label = $that.attr('title') || '';
1190            // console.log('desc', $desc);
1191
1192            if($desc.length > 0){
1193                if(!$label || (mtfgf_settings && mtfgf_settings.add_icon)) {
1194                    var ligfieldicon = $that.attr('mm-fa-icon') || 'fa fa-question-circle';
1195                    var ligfieldiconClasses = ligfieldicon.split(' ');
1196                    var ligfieldiconClass = ligfieldiconClasses[ligfieldiconClasses.length-1];
1197                    var className = $label ? " mm-tooltip-title-underline" : "";
1198                    if(mtfgf_settings.showIconLeft) {
1199                        $that.before('<label class="mm-tooltip'+className+'"><mmi><i class="'+ligfieldicon+'"></i></mmi> '+$label+'</label>');
1200                    }
1201                    else {
1202                        $that.before('<label class="mm-tooltip'+className+'">'+$label+' <mmi><i class="'+ligfieldicon+'"></i></mmi></label>');
1203                    }
1204                }
1205                else {
1206                    $that.before('<label class="mm-tooltip mm-tooltip-title-underline">'+$label+'</label>');
1207                }
1208                initHoverTooltip($that.prev(), mtfgf_settings.add_icon && $forceModal, tooltip_code, $desc, hideEvents, mtfgf_settings);
1209            }
1210        });
1211
1212        $('.gsection').each(function(index) {
1213            $that = $(this);
1214
1215            if(!isFieldOfVisibleGForm($that)) return;
1216            if(isFieldInited($that)) return;
1217            markFieldInited($that);
1218            var $ligfield = $that.closest('.gfield');
1219            $forceModal = $ligfield.hasClass('mm-enable-modal');
1220
1221            // console.log('mtfgf_settings', mtfgf_settings);
1222            $desc = $that.find('.mm_tooltip_text');
1223            // console.log('desc', $desc);
1224
1225            if($desc.length > 0){
1226                if($that.hasClass('gsection')) {
1227                    if(mtfgf_settings && mtfgf_settings.add_icon) {
1228                        var ligfieldicon = $ligfield.attr('mm-fa-icon') || 'fa fa-question-circle';
1229                        var ligfieldiconClasses = ligfieldicon.split(' ');
1230                        var ligfieldiconClass = ligfieldiconClasses[ligfieldiconClasses.length-1];
1231                        if(mtfgf_settings.showIconLeft) {
1232                            $that.find('h2').html('<span><mmi><i class="'+ligfieldicon+'"></i></mmi> '+$that.find('h2').html()+'</span>');
1233                        }
1234                        else {
1235                            $that.find('h2').html('<span>'+$that.find('h2').html()+' <mmi><i class="'+ligfieldicon+'"></i></mmi></span>');
1236                        }
1237                    }
1238                }
1239                initHoverTooltip($that.find('h2 span'), mtfgf_settings.add_icon && $forceModal, tooltip_code, $desc.html(), hideEvents, mtfgf_settings);
1240            }
1241        });
1242
1243        // console.log('gform', form);
1244            $('.gform_footer input[type="submit"], .gform_footer button[type="submit"]').each(function(index) {
1245                $that = $(this);
1246                if(!isFieldOfVisibleGForm($that)) return;
1247                if(isFieldInited($that)) return;
1248                
1249                if(!$that.hasClass('mtfgf_enable_form_button_tooltip')){
1250                    return;
1251                }
1252                if($that.hasClass('mm-tooltip-inited')) {
1253                    return;
1254                }
1255                markFieldInited($that);
1256                var $ligfield = $that.closest('.gfield');
1257                $forceModal = $ligfield.hasClass('mm-enable-modal');
1258
1259                // console.log('mtfgf_settings', mtfgf_settings);
1260                $desc = $that.parent().find('.mm_tooltip_text');
1261                // console.log('desc', $desc);
1262
1263                if($desc.length > 0){
1264                    if(mtfgf_settings && mtfgf_settings.add_icon && (!$that.hasClass('mtfgf_enable_form_button_remove_help_icon'))) {
1265                        var ligfieldicon = $ligfield.attr('mm-fa-icon') || 'fa fa-question-circle';
1266                        var ligfieldiconClasses = ligfieldicon.split(' ');
1267                        var ligfieldiconClass = ligfieldiconClasses[ligfieldiconClasses.length-1];
1268                        var $icon = null;
1269                        if(mtfgf_settings.showIconLeft) {
1270                            $icon = $('<mmi><i class="'+ligfieldicon+'"></i></mmi>').insertBefore($that);
1271                        }
1272                        else {
1273                            $icon = $('<mmi><i class="'+ligfieldicon+'"></i></mmi>').insertAfter($that);
1274                        }
1275                        // $that.find('h2').html('<span>'+$that.find('h2').html()+' </span>');
1276                        initHoverTooltip($icon, $forceModal, tooltip_code, $desc.html(), hideEvents, mtfgf_settings);
1277                    }
1278                    else {
1279                        initHoverTooltip($that, false, tooltip_code, $desc.html(), hideEvents, mtfgf_settings);
1280                    }
1281                }
1282            });
1283
1284        $('.gsurvey-likert').each(function(index0) {
1285            $(this).find('.gsurvey-likert-choice-label, tbody .gsurvey-likert-row-label').each(function(index) {
1286                $that = $(this);
1287                if(!isFieldOfVisibleGForm($that)) return;
1288                
1289                if($that.hasClass('mm-tooltip-radio')) {
1290                    return;
1291                }
1292    
1293                // var gf_price_fix = $that.closest('.gfield').hasClass('gfield_price');
1294                // if (gf_price_fix && !mtfgf_settings.isGFLoaded) {
1295                //     return;
1296                // }
1297                $that.addClass('mm-tooltip-radio');
1298                handle_radio_or_checkbox_option($that, false, tooltip_code, index+1);
1299            });
1300        });
1301        $('.gfield_checkbox > li, .gfield_radio > li, .gfield_checkbox > div, .gfield_radio > div').each(function(index) {
1302            $that = $(this);
1303            if(!isFieldOfVisibleGForm($that)) return;
1304            
1305            if($that.hasClass('mm-tooltip-radio')) {
1306                return;
1307            }
1308
1309            // var gf_price_fix = $that.closest('.gfield').hasClass('gfield_price');
1310            // if (gf_price_fix && !mtfgf_settings.isGFLoaded) {
1311            //     return;
1312            // }
1313            $that.addClass('mm-tooltip-radio');
1314            handle_radio_or_checkbox_option($that, false, tooltip_code);
1315        });
1316
1317        
1318
1319        //Add list field support
1320        $('.gfield_list thead th, .gfield_list .gfield_list_header .gfield_header_item').each(function(index) {
1321            $that = $(this);
1322            if(!isFieldOfVisibleGForm($that)) return;
1323            if($that.html().trim().length === 0) return;
1324            if($that.hasClass('mm-tooltip-list-item')) return;
1325
1326            $that.addClass('mm-tooltip-list-item');
1327            handle_gfield_list_column($that, false, tooltip_code);
1328        });
1329
1330        // console.log('magictooltips loaded again');
1331
1332            $('.mm-tooltip-li input, .mm-tooltip-li textarea, .mm-tooltip-li select').each(function() { // Notice the .each() loop, discussed below
1333                var $that = $(this);
1334                if(!isFieldOfVisibleGForm($that)) return;
1335
1336                var gfield_list = $that.closest('.gfield_list');
1337                if((gfield_list.length > 0)) {
1338                    return;
1339                }
1340
1341                // var gform_input_container_time = $that.closest('.ginput_container_time');
1342                // console.log('gform_input_container_time', gform_input_container_time);
1343                // if(gform_input_container_time.length > 0) {
1344                //     return;
1345                // }
1346
1347                // if($that.attr('type')=='hidden') {
1348                //  return;
1349                // }
1350
1351                if(['radio', 'checkbox', 'hidden'].indexOf($(this).attr('type')) >= 0) {
1352                    return;
1353                }
1354
1355                $forceNoLabel = $that.closest('.gfield').hasClass('mm-enable-no-label');
1356
1357                if(!(mtfgf_settings && (mtfgf_settings.focus_input || mtfgf_settings.mouse_over_input || $forceNoLabel))) {
1358                    return;
1359                }
1360
1361                if($that.closest('.gfield').hasClass('mm-tooltip-radio')) {
1362                    return;
1363                }
1364
1365                // console.log('forceNoLabel', $forceNoLabel, $that.html());
1366
1367                var showO = '';
1368                var hideO = '';
1369                if(mtfgf_settings.mouse_over_input || ($forceNoLabel && (!mtfgf_settings.focus_input))) {
1370                    showO = 'hover';
1371                    hideO = {
1372                        fixed: true,
1373                        delay: 300
1374                    }
1375                }
1376                else if(mtfgf_settings.focus_input) {
1377                    showO = 'focus';
1378                    hideO = 'unfocus';
1379                }
1380
1381                var index = $that.closest('.ginput_container').find('input, textarea, select').index($that);
1382                if(!$forceNoLabel) {
1383                    index += 1;
1384                }
1385                // console.log('.mm-tooltip-li input', $that.attr('id'), index);
1386                var gfgfield = $that.closest('.gfield');
1387                var isRadioOrCheckbox = gfgfield.hasClass('field_sublabel_below') || gfgfield.hasClass('field_sublabel_above');
1388                $(this).qtip($.extend({}, tooltip_code, {
1389                    content: {
1390                        text: getTooltipContentRaw($that, mtfgf_settings, index, isRadioOrCheckbox)//getTooltipContent($(this), mtfgf_settings) // Use the "div" element next to this for the content
1391                    },
1392                    show: {
1393                        solo: true,
1394                        event: showO,
1395                    },
1396                    hide: hideO,
1397                    events: hideEvents
1398                }));
1399                $(this).on('focus', function(){
1400                    $(this).closest('.mm-tooltip-li').addClass('mm-tooltip-li-focus');
1401                }).on('blur', function(){
1402                    // console.log('blur');
1403                    $(this).closest('.mm-tooltip-li').removeClass('mm-tooltip-li-focus');
1404                    if(typeof($(this).qtip('api'))!== 'undefined') {
1405                        $(this).qtip('api').hide();
1406                    }
1407                });
1408            });
1409    }
1410
1411    var mmtooltip_init = function(){
1412        // if(typeof(mtfgf_settings) == 'undefined') {
1413        //     console.log('mtfgf_settings is not undefined ');
1414        //     setTimeout(mmtooltip_init, 1000);
1415        //     return;
1416        // }
1417        //document.addEventListener('DOMContentLoaded', function () {
1418
1419        $(document).keyup(function(e) {
1420             if (e.key === "Escape") { // escape key maps to keycode `27`
1421                
1422                // <DO YOUR WORK HERE>
1423                if(mtfgfTooltipApi) {
1424                    // console.log('mtfgfTooltipApi Escape', mtfgfTooltipApi.hide);
1425                    mtfgfTooltipApi.hide();
1426                    mtfgfTooltipApi = null;
1427                }
1428            }
1429        });
1430
1431        window.mmMobileDetect = {};
1432        (function () {var a={};var g=/iPhone/i,p=/iPod/i,i=/iPad/i,f=/\bAndroid(?:.+)Mobile\b/i,h=/Android/i,d=/(?:SD4930UR|\bSilk(?:.
1432+)Mobile\b)/i,e=/Silk/i,c=/Windows Phone/i,j=/\bWindows(?:.+)ARM\b/i,k=/BlackBerry/i,l=/BB10/i,m=/Opera Mini/i,n=/\b(CriOS|Chrome)(?:.+)Mobile/i,o=/Mobile(?:.+)Firefox\b/i;function b($,a){return $.test(a)}function q($){var a=($=$||("undefined"!=typeof navigator?navigator.userAgent:"")).split("[FBAN");void 0!==a[1]&&($=a[0]),void 0!==(a=$.split("Twitter"))[1]&&($=a[0]);var r={apple:{phone:b(g,$)&&!b(c,$),ipod:b(p,$),tablet:!b(g,$)&&b(i,$)&&!b(c,$),device:(b(g,$)||b(p,$)||b(i,$))&&!b(c,$)},amazon:{phone:b(d,$),tablet:!b(d,$)&&b(e,$),device:b(d,$)||b(e,$)},android:{phone:!b(c,$)&&b(d,$)||!b(c,$)&&b(f,$),tablet:!b(c,$)&&!b(d,$)&&!b(f,$)&&(b(e,$)||b(h,$)),device:!b(c,$)&&(b(d,$)||b(e,$)||b(f,$)||b(h,$))||b(/\bokhttp\b/i,$)},windows:{phone:b(c,$),tablet:b(j,$),device:b(c,$)||b(j,$)},other:{blackberry:b(k,$),blackberry10:b(l,$),opera:b(m,$),firefox:b(o,$),chrome:b(n,$),device:b(k,$)||b(l,$)||b(m,$)||b(o,$)||b(n,$)},any:!1,phone:!1,tablet:!1};return r.any=r.apple.device||r.android.device||r.windows.device||r.other.device,r.phone=r.apple.phone||r.android.phone||r.windows.phone,r.tablet=r.apple.tablet||r.android.tablet||r.windows.tablet,r}a=q();if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=a;}else if(typeof define==="function"&&define.amd){define(function(){return a})}else{this.mmMobileDetect["isMobile"]=a}})();
1433
1434        // !function(a){var b=/iPhone/i,c=/iPod/i,d=/iPad/i,e=/(?=.*\bAndroid\b)(?=.*\bMobile\b)/i,f=/Android/i,g=/(?=.*\bAndroid\b)(?=.*\bSD4930UR\b)/i,h=/(?=.*\bAndroid\b)(?=.*\b(?:KFOT|KFTT|KFJWI|KFJWA|KFSOWI|KFTHWI|KFTHWA|KFAPWI|KFAPWA|KFARWI|KFASWI|KFSAWI|KFSAWA)\b)/i,i=/Windows Phone/i,j=/(?=.*\bWindows\b)(?=.*\bARM\b)/i,k=/BlackBerry/i,l=/BB10/i,m=/Opera Mini/i,n=/(CriOS|Chrome)(?=.*\bMobile\b)/i,o=/(?=.*\bFirefox\b)(?=.*\bMobile\b)/i,p=new RegExp("(?:Nexus 7|BNTV250|Kindle Fire|Silk|GT-P1000)","i"),q=function(a,b){return a.test(b)},r=function(a){var r=a||navigator.userAgent,s=r.split("[FBAN");if("undefined"!=typeof s[1]&&(r=s[0]),s=r.split("Twitter"),"undefined"!=typeof s[1]&&(r=s[0]),this.apple={phone:q(b,r),ipod:q(c,r),tablet:!q(b,r)&&q(d,r),device:q(b,r)||q(c,r)||q(d,r)},this.amazon={phone:q(g,r),tablet:!q(g,r)&&q(h,r),device:q(g,r)||q(h,r)},this.android={phone:q(g,r)||q(e,r),tablet:!q(g,r)&&!q(e,r)&&(q(h,r)||q(f,r)),device:q(g,r)||q(h,r)||q(e,r)||q(f,r)},this.windows={phone:q(i,r),tablet:q(j,r),device:q(i,r)||q(j,r)},this.other={blackberry:q(k,r),blackberry10:q(l,r),opera:q(m,r),firefox:q(o,r),chrome:q(n,r),device:q(k,r)||q(l,r)||q(m,r)||q(o,r)||q(n,r)},this.seven_inch=q(p,r),this.any=this.apple.device||this.android.device||this.windows.device||this.other.device||this.seven_inch,this.phone=this.apple.phone||this.android.phone||this.windows.phone,this.tablet=this.apple.tablet||this.android.tablet||this.windows.tablet,"undefined"==typeof window)return this},s=function(){var a=new r;return a.Class=r,a};"undefined"!=typeof module&&module.exports&&"undefined"==typeof window?module.exports=r:"undefined"!=typeof module&&module.exports&&"undefined"!=typeof window?module.exports=s():"function"==typeof define&&define.amd?define("isMobile",[],a.isMobile=s()):a.isMobile=s()}(window.mmMobileDetect);
1435
1436        // console.log('mmMobileDetect', mmMobileDetect);
1437
1438        if(typeof(mtfgf_settings.is_valid_license_key)=='undefined') {
1439            return;
1440        }
1441        //console.log('mtfgf_settings', mtfgf_settings);
1442        if(!(parseInt(mtfgf_settings.is_valid_license_key) == 1)) {
1443            return;
1444        }
1445
1446        mtfgf_settings.isGFLoaded = false;
1447
1448        var mtfgf_js_code = {};
1449        var mtfgf_css_code = '';
1450
1451        if(mmMobileDetect.isMobile.phone) {
1452            if(mtfgf_settings.disable_on_mobile == '1') {
1453                return;
1454            }
1455            mtfgf_settings.force_modal = mtfgf_settings.force_modal_on_mobile == '1';
1456            mtfgf_js_code = mtfgf.js_code_phone ? mtfgf.js_code_phone : mtfgf.js_code;
1457            mtfgf_css_code = mtfgf.css_code_phone ? mtfgf.css_code_phone : mtfgf.css_code;
1458            mtfgf_settings.isMobile = true;
1459            mtfgf_settings.deviceType = 1;
1460        }
1461        else if(mmMobileDetect.isMobile.tablet) {
1462            if(mtfgf_settings.disable_on_tablet == '1') {
1463                return;
1464            }
1465            mtfgf_settings.force_modal = mtfgf_settings.force_modal_on_tablet == '1';
1466            mtfgf_js_code = mtfgf.js_code_pad ? mtfgf.js_code_pad : mtfgf.js_code;
1467            mtfgf_css_code = mtfgf.css_code_pad ? mtfgf.css_code_pad : mtfgf.css_code;
1468            mtfgf_settings.isMobile = true;
1469            mtfgf_settings.deviceType = 2;
1470        }
1471        else {
1472            if(mtfgf_settings.disable_on_pc == '1') {
1473                return;
1474            }
1475            mtfgf_settings.force_modal = false;
1476            mtfgf_js_code = mtfgf.js_code;
1477            mtfgf_css_code = mtfgf.css_code;
1478            mtfgf_settings.isMobile = false;
1479            mtfgf_settings.deviceType = 3;
1480        }
1481
1482        if(mtfgf_settings && mtfgf_settings.enable_no_label_mode) {
1483            if((!mtfgf_settings.mouse_over_input) && (!mtfgf_settings.focus_input) ) {
1484                mtfgf_settings.mouse_over_input = true;
1485            }
1486        }
1487
1488        var csscodeMM = mtfgf_css_code;
1489
1490        csscodeMM = ".qtip-content h6.mm-tooltip-title {line-height: 180%; margin: 0px; color: #FFFFFF; font-size: 16px; font-weight: bold;}\r\n" + csscodeMM;
1491
1492        var regexMM = /\.mm-tooltip-container {.+z\-index\:[\s]+?([0-9]+)/g;
1493        var zIndexMM = mtfgfGetValueFromRegExp(regexMM, csscodeMM);
1494        zIndexMM = parseInt(zIndexMM)+1;
1495        // zIndexMM = zIndexMM + "";
1496        // console.log('zIndexMM', zIndexMM);
1497
1498        csscodeMM = csscodeMM + "\r\n.jquery-modalmm.blocker{\r\n"+
1499            "\tz-index: " + zIndexMM+";\r\n" +
1500        "}\r\n";
1501
1502        csscodeMM = csscodeMM + "\r\n#swipebox-overlay{\r\n"+
1503            "\tz-index: " + (zIndexMM+1)+" !important;\r\n" +
1504        "}\r\n";
1505
1506        
1507
1508        csscodeMM = csscodeMM + mtfgf_settings.custom_css;
1509
1510        if(mtfgf_settings && mtfgf_settings.help_icon_color) {
1511            csscodeMM = csscodeMM + 'mmi, mmi2 {color: '+mtfgf_settings.help_icon_color+';}';
1512        }
1513        
1514        // $('.gform_body .gfield').each(function(index) {
1515        //  $that = $(this);
1516        //      $that.find('input, select, textarea, .mtfgf_help').tooltipster({
1517  //            content: $that.find('.gfield_description').html()
1518  //        });
1519        // });
1520        // console.log('mtfgf',mtfgf);
1521        eval('var tooltip_code = ' + mtfgf_js_code);
1522
1523        var $container = $('<style type="text/css"></style>').appendTo("body");
1524        $container.text(csscodeMM);
1525
1526        if(tooltip_code.position && tooltip_code.position.at === 'left center' && tooltip_code.position.my === 'right center') {
1527            mtfgf_settings.showIconLeft = true;
1528        }
1529        else {
1530            mtfgf_settings.showIconLeft = false;
1531        }
1532
1533        // console.log('reinit tooltip_code', tooltip_code);
1534        // console.log('fontawesome', window.FontAwesome);
1535        // console.log('window.imageChoices_gformGetOptionLabel =', window.imageChoices_gformGetOptionLabel);
1536        // if(window.imageChoices_gformGetOptionLabel){
1537            jQuery(document).on('gform_page_loaded', function(){
1538                // console.log('gform_page_loaded');
1539                reinit(tooltip_code);
1540                reinit_global(tooltip_code);
1541            });
1542            // console.log('reinit_global');
1543            
1544        // } else {
1545        //     console.log('reinit and reinit_global');
1546            reinit(tooltip_code);
1547            reinit_global(tooltip_code);
1548        // }
1549
1550        if(window.gform) {
1551            if(window.gform_format_option_label) {
1552                window.mtfgf_old_gform_format_option_label = window.gform_format_option_label;
1553                // window.gform_format_option_label = function(fullLabel, fieldLabel, priceLabel, selectedPrice, price, formId, fieldId){
1554                    
1555                //     // console.log('mtfgf gform_format_option_label');
1556                //     return fullLabel;
1557                // };
1558                window.gform_format_option_label = function(i, o, s, c, a, t, n, l) {
1559                    // console.log('gform_format_option_label', i, o, s, c, a, t, n, l);
1560                    // i = i.replace(/ <mmi(.*)<\/mmi>/i, "");
1561                    var regex = mtfgf_settings.showIconLeft ? /<mmi(.*)<\/mmi> /gi :  / <mmi(.*)<\/mmi>/gi;
1562                    var arr = regex.exec(o);
1563                    // console.log('gform_format_option_label', arr);
1564                    if(arr && arr.length > 0) {
1565                        oldmmi = arr[0];
1566                        o = o.replace(regex, "");
1567                        i = i.replace(regex, "");
1568                        // console.log('gform_format_option_label o=', o);
1569                        i = mtfgf_old_gform_format_option_label(i, o, s, c, a, t, n, l);
1570                        if(mtfgf_settings.showIconLeft) {
1571                            i = oldmmi+i;
1572                        } else {
1573                            i += oldmmi;
1574                        }
1575                        
1576                        // i = i.replace("__mmi__", oldmmi);
1577                        // console.log('gform_format_option_label', i, o, s, c, a, t, n, l);
1578                    } else {
1579                        i = mtfgf_old_gform_format_option_label(i, o, s, c, a, t, n, l);
1580                    }
1581                    return i;
1582                }
1583            }
1584
1585            if(isMMI(false)) {
1586                window.gform.addFilter( 'gform_product_total', function(total, formId){
1587                    setTimeout(function(){
1588                        reinit_price_field(formId, tooltip_code);
1589                    }, 100);
1590                    return total;
1591                } );
1592            }
1593            
1594        }
1595        
1596        // console.log('mtfgf init');
1597        // This code is for GP Nested Forms plugin 
1598        jQuery(document).bind('gform_post_render', function(e, form_id){
1599            // return;
1600            // console.log('reinit gform_post_render', form_id);
1601            setTimeout(function(){
1602                mtfgf_settings.isGFLoaded = true;
1603                reinit(tooltip_code);
1604                reinit_global(tooltip_code);
1605            }, 100);
1606
1607            // reinit(tooltip_code);
1608      //    if(window.FontAwesome) {
1609            //  setTimeout(function(){
1610            //      reinit(tooltip_code);
1611            //  }, 2000);
1612            // }
1613            // else {
1614            //  reinit(tooltip_code);
1615            // }
1616            // reinit(tooltip_code);
1617            ///gform_ajax_frame_2
1618            
1619            // var message = $("#gform_ajax_frame_" + form_id).contents().find("#gform_confirmation_message_"+form_id).html();
1620            // console.log('mtfgf gform_post_render', form_id, message);
1621            // if(message) {
1622            //  console.log('addRobotChatResponse', message);
1623            //  window.ConversationalForm.addRobotChatResponse(message);
1624            //  // $('<cf-chat-response class="robot show"><thumb></thumb>
1624<text value-added="">'+message+'</text></cf-chat-response>').appendTo('#conversational-form > cf-chat');
1625            //  $('cf-input input').val(' ');
1626            //  window.mcfgf_global_submitted = true;
1627            //  mcfgf_auto_scroll(true);
1628            // }
1629            
1630            
1631        });
1632
1633        jQuery(document).on('click', '.mtfgf_modal_read_more', function(e){
1634            e.preventDefault();
1635            $(this).parent().hide().next().show();
1636            return false;
1637        });
1638        
1639        if(typeof(window.gform)!=='undefined') {
1640            window.gform.addAction( 'gform_list_post_item_add', function ( item, container ) {
1641                //console.log('gform_list_post_item_add', item, container);
1642                // item.find( 'input[type="text"]' ).on( 'change', function() {
1643                //     console.log( 'Changed!' );
1644                // } );
1645                var $sig0 = item.find('input[type="text"]');
1646                        
1647                if(mtfgf_settings.add_icon && $sig0.length > 0) {
1648                    $sig0.each(function(){
1649                        var $sigLast = $(this); //$sig0.last();
1650                        // if($sigLast.parent().hasClass('ginput_list')) return;
1651                        // if(mtfgf_settings.showIconLeft) {
1652                        //     $sigLast.before('<mmi><i class="'+ligfieldicon+'"></i></mmi> ');
1653                        // }
1654                        // else {
1655                        //     $sigLast.after('  <mmi><i class="'+ligfieldicon+'"></i></mmi>');
1656                        // }
1657
1658                        var targetSigLast = $sigLast.parent().find('mmi');
1659
1660                        var cell = $sigLast.closest('.gfield_list_cell');
1661                        var $ligfield = item.closest('.gfield');
1662                        var $forceModal = $ligfield.hasClass('mm-enable-modal');
1663                        var label = $ligfield.find('.gfield_label');
1664                        
1665                        var tipC = getTooltipContentRaw(label, mtfgf_settings, cell.index()+1, true);
1666                        
1667                        var hasTooltipContent = isContainTooltipContent(tipC);
1668                        // console.log('tipC', tipC, hasTooltipContent);
1669                        if(!hasTooltipContent) return;
1670                        initHoverTooltip(targetSigLast, mtfgf_settings.add_icon && $forceModal, tooltip_code, tipC, hideEvents, mtfgf_settings);
1671
1672                        if(mtfgf_settings && (mtfgf_settings.mouse_over_input ||  mtfgf_settings.focus_input) && !$forceModal) {
1673
1674                            initHoverTooltip($sigLast, mtfgf_settings.add_icon && $forceModal, tooltip_code, tipC, hideEvents, mtfgf_settings);
1675                            
1676                        }
1677                    });
1678                }
1679            } );
1680        }
1681        
1682
1683        if(mtfgf_settings && mtfgf_settings.enable_lightbox) {
1684            var selector = '.mtfgf_modal img';
1685            if(!mtfgf_settings.enable_lightbox_on_click_icon) {
1686                selector+=', .mm-tooltip-container';
1687            }
1688
1689            jQuery(document).on('click', selector, function(e){
1690                e.preventDefault();
1691
1692                var $images = $(this).closest('.mm-tooltip-container, .mtfgf_modal').find('img');
1693
1694                var sbItems = [];
1695                $images.each(function(index){
1696                    var src = $(this).attr('data-lazy-src') || $(this).attr('src');
1697                    if(src.indexOf('/plugins/') ==-1 ) {
1698                        sbItems.push({
1699                            href: src //, title:'My Caption'
1700                        });
1701                    }
1702                });
1703
1704                if(sbItems.length > 0) {
1705                    // console.log('sbItems', sbItems);
1706                    jQuery.swipebox(sbItems);
1707                }
1708
1709                
1710                return false;
1711            });
1712
1713            // addition for swipebox, closing img on click on bg
1714            jQuery(function(){
1715                jQuery(document.body)
1716                .on('click touchend','#swipebox-slider .current img', function(e){
1717                    return false;
1718                })
1719                .on('click touchend','#swipebox-slider .current', function(e){
1720                    jQuery('#swipebox-close').trigger('click');
1721                });
1722            });
1723        }
1724
1725        // if(window.gform_format_option_label) {
1726        //  window.mtfgf_gform_format_option_label = window.gform_format_option_label;
1727        // }
1728
1729        
1730
1731        // if(window.gformGetOptionLabel) {
1732        //  window.mtfgf_gformGetOptionLabel = window.gformGetOptionLabel;
1733        // }
1734
1735        // window.gformGetOptionLabel = function(element, selected_value, current_price, form_id, field_id) {
1736        //  var helpicon_key = 'fa-question-circle';
1737        //  var helpicon_html = ' <mmi><i class="fa fa-question-circle"></i></mmi>';
1738        //  var original_label = element.html();
1739        //  if(original_label.indexOf(helpicon_key) > 0) {
1740
1741        //      if(element.closest('.mm-tooltip-radio').index()==0) {
1742        //          setTimeout(function(){
1743        //              element.closest('.mm-tooltip-li')
1744        //                  .removeClass('mm-enable-no-label')
1745        //                  .removeClass('mm-enable-no-label-agree')
1746        //                  .removeClass('mm-tooltip-li-no-label')
1747        //                  .removeClass('mm-tooltip-li')
1748        //                  .find('.mm-tooltip-inited').removeClass('mm-tooltip-inited');
1749        //              // reinit(tooltip_code);
1750        //              // $('#field_id').;
1751        //          }, 3000);
1752        //          setTimeout(function(){
1753        //              element.closest('.mm-tooltip-radio').removeClass('mm-tooltip-radio');
1754        //          }, 100);
1755        //      }
1756                
1757        //  }
1758        //  return mtfgf_gformGetOptionLabel(element, selected_value, current_price, form_id, field_id);
1759        // }
1760
1761        // window.gform_format_option_label = function(label, original_label, price_label, current_price, price, form_id, field_id){
1762        //  var helpicon_key = 'fa-question-circle'; //
1763        //  var helpicon_html = ' <mmi><i class="fa fa-question-circle"></i></mmi>'; //mm-tooltip-tmp-option 
1764        //  if(window.mtfgf_gform_format_option_label) {
1765        //      label = mtfgf_gform_format_option_label(label, original_label, price_label, current_price, price, form_id, field_id);
1766        //  }
1767
1768        //  if(original_label.indexOf(helpicon_key) > 0) {
1769        //      return label.replace(/<i(.*)<\/i>/i, "")+helpicon_html;
1770        //  }
1771        //  else {
1772        //      return label;
1773        //  }
1774        // }
1775    };
1776
1777    $(document).ready(mmtooltip_init);
1778
1779
1780
1781})(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.