PageSourceSearch

https://yojob.hk/wp-content/plugins/addon-jobsearch-chat/js/jobsearch-floating-window-script.js?ver=3.1.6

js yojob.hk collected 2026-10-05 22:01:19 UTC 22,105 bytes, 523 lines download raw bytes

1var member_chat_list_member = jQuery(".jobsearch-chat-member-list-wrapper"), window_width = jQuery(window).width();
2
3jQuery.fn.ignore = function (sel) {
4    return this.clone().find(sel || ">*").remove().end();
5};
6
7function FrontChattriggerFile(user_id) {
8    jQuery('.user-' + user_id + ' form[name="fileForm"] input:first').click();
9}
10
11function FrontChatuploadFileForm(form) {
12
13    jQuery('.jobsearch-chat-no-messages').remove();
14    var fileForm = jQuery(form).children('input[type=file]')[0].files[0],
15        formId = jQuery(form).attr('id'),
16        reg_ser_form = jQuery(form)[0],
17        ext_not_allow = ['css', 'html', 'php', 'json'],
18        formData = new FormData(reg_ser_form);
19
20    if (fileForm.size > 10000000) {
21        alert("cannot upload more than 10mb");
22        return;
23    }
24
25    var chat_message = fileForm.name,
26        last_element,
27        chat_message_ext = chat_message.split('.');
28    if (chat_message_ext != '') {
29        last_element = chat_message_ext[chat_message_ext.length - 1];
30        if (ext_not_allow.indexOf(last_element) != -1) {
31            alert("File of this extension is not allowed");
32            return;
33        }
34    }
35
36    jQuery.ajax({
37        type: 'POST',
38        url: jobsearch_ajchat_vars.jobsearch_ajax_url,
39        data: formData,
40        contentType: false,
41        cache: false,
42        processData: false,
43        datatype: 'json',
44        beforeSend: function () {
45            jQuery(".jobsearch-loading-section").removeClass("hidden");
46        },
47        success: function (r) {
48            jQuery(".jobsearch-loading-section").addClass("hidden");
49            scroll_event_front(jQuery(form).find('input[name=reciever_id]').val());
50        }
51    });
52    $('form#' + formId).trigger("reset");
53}
54
55//jobsearch-chat-close
56jQuery(document).on('click', '.jobsearch-chat-toggle-chat', function (e) {
57    e.preventDefault();
58    member_chat_list_member.attr('style', '')
59    member_chat_list_member.fadeOut(800);
60    jQuery(".jobsearch-chat-tab2").addClass("jobsearch-chat-is-toggled");
61    jQuery(".jobsearch-chat-floating-chat").removeClass("hidden").hide().delay(100).fadeIn(500);
62    localStorage.setItem("is_toggled", "yes");
63    setTimeout(function () {
64        jQuery('.jobsearch-chat-tabs-wrapper').find('.jobsearch-chat-box-open').last().addClass('jobsearch-chat-margin-right')
65    }, 770)
66
67});
68
69//toggle chat view front
70jQuery(document).on('click', '.jobsearch-chat-floating-chat', function (e) {
71    e.preventDefault();
72    jQuery(document).find('.jobsearch-chat-margin-right').removeClass('jobsearch-chat-margin-right')
73    jQuery(".jobsearch-chat-floating-chat").addClass("hidden");
74    member_chat_list_member.fadeIn(800).css({display: 'inline-block'});
75    jQuery(".jobsearch-chat-tab2").removeClass("jobsearch-chat-is-toggled");
76    localStorage.setItem("is_toggled", "no");
77});
78
79var chat_settings = [];
80//load chat box front
81jQuery(document).on('click', '.load-chat-box', function () {
82
83    var _this = jQuery(this), _data,
84        _receiver_id = jQuery(this).attr('data-user-id'),
85        _find_load_box = jQuery(".user-" + _receiver_id),
86        _user_name = _this.find('.jobsearch-chat-list-thumb a').ignore("small").text(),
87        _user_img = _this.find('img').attr('src'),
88        _window_width = jQuery(window).width(),
89        _html, _chat_selector = _find_load_box.find('ul#float-chat');
90
91    _this.find('small').addClass('hidden');
92    _this.find('small').text(0);
93    //
94    _find_load_box.find('.jobsearch-chat-title').text(_user_name);
95    _find_load_box.find('input[name=user_image]').val(_user_img);
96    _find_load_box.find("input[name=reciever_id]").val(_receiver_id);
97
98    if (_find_load_box.length > 0) {
99        _this.addClass('active');
100        _find_load_box.removeClass('hidden').hide().delay(100).fadeIn(800).addClass('jobsearch-chat-box-open');
101    }
102
103    if (_window_width < 600) {
104        jQuery('.jobsearch-chat-member-list-wrapper').hide();
105    }
106
107    if (chat_settings.indexOf(_receiver_id) == -1) {
108        chat_settings.push(_receiver_id);
109        localStorage.setItem("chat_box", chat_settings);
110    }
111
112    if (jQuery(".user-" + _receiver_id).find("#float-chat li").length == 0) {
113        jQuery.ajax({
114            type: 'POST',
115            url: jobsearch_ajchat_vars.jobsearch_ajax_url,
116            data: {
117                limit: 0,
118                cache: true,
119                reciever_id: _receiver_id,
120                action: "jobsearch_chat_load_current_user_chat_front"
121            },
122            datatype: 'JSON',
123            success: function (msg) {
124                _data = JSON.parse(msg);
125                _html = _data.html;
126                _find_load_box.find(".notification-count").text(_data.unread_messages);
127                jQuery(".jobsearch-loading-section").addClass("hidden");
128                _chat_selector.html('');
129                if ('' == _html) {
130                    _html = '<li id="jobsearch-chat-no-messages">' + jobsearch_ajchat_vars.no_chat_message + '</li>';
131                }
132                _chat_selector.append(_html);
133                scroll_event_front(_receiver_id)
134            }
135        });
136    }
137});
138
139jQuery(document).on("keyup", "#search-field-front-full-view", function () {
140    var _value = jQuery(this).val().toLowerCase();
141    jQuery(document).find(".jobsearch-chat-users-list ul li").filter(function () {
142        jQuery(this).toggle(jQuery(this).children('.user-info').find('h2.name').text().toLowerCase().indexOf(_value) > -1);
143    });
144});
145
146jQuery(document).on("keyup", "#search_field_toggle", function () {
147    var _value = jQuery(this).val().toLowerCase();
148    jQuery(document).find(".jobsearch-chat-list-toggle-view ul li").filter(function () {
149        jQuery(this).toggle(jQuery(this).children('.user-info').find('a.name').text().toLowerCase().indexOf(_value) > -1);
150    });
151});
152//
153jQuery(document).on('click', '.jobsearch-chat-emoji-picker-select', function (e) {
154    e.preventDefault();
155    e.stopPropagation();
156    var _this = jQuery(this), _user_id = _this.attr('data-user-id'),
157        _selector = jQuery('.jobsearch-chat-user-emoji-' + _user_id);
158    _selector.fadeToggle(500);
159});
160
161jQuery(".jobsearch-emoji").on('click', function () {
162    var _this = jQuery(this), _emoji_val = _this.attr('data-val'), _user_id = _this.attr('data-user-id');
163    var box = jQuery(".user-" + _user_id).find('.messageForm').find('input[name=message]');
164    box.val(box.val() + _emoji_val);
165});
166
167jQuery('.jobsearch-chat-emojis-box').click(function (e) {
168    e.stopPropagation();
169});
170
171jQuery('body').click(function () {
172    jQuery('.jobsearch-chat-emojis-box').hide();
173});
174
175jQuery(document).on('click', '.jobsearch-chat-close', function () {
176    //
177    var _this = jQuery(this), user_id = _this.attr('data-user-id'), _total_user_id;
178    var total_active_popup = localStorage.getItem("chat_box");
179    _total_user_id = total_active_popup.split(',');
180    chat_settings = [];
181    for (var i = 0; i < _total_user_id.length; i++) {
182        if (_total_user_id[i] != user_id) {
183            chat_settings.push(_total_user_id[i])
184        }
185        localStorage.setItem("chat_box", '');
186        localStorage.setItem("chat_box", chat_settings);
187    }
188    jQuery(".user-" + user_id).fadeOut(600).attr('style', 'display: inline-block').removeClass('jobsearch-chat-box-open');
189
190    setTimeout(function () {
191        if (!jQuery(".jobsearch-chat-member-list-wrapper").is(":visible")) {
192            jQuery('.jobsearch-chat-tabs-wrapper').find('.jobsearch-chat-box-open').last().addClass('jobsearch-chat-margin-right')
193        }
194        if (window_width < 600) {
195            member_chat_list_member.attr('style', '');
196            member_chat_list_member.css({display: 'inline-block'});
197        }
198    }, 600)
199});
200//
201jQuery(document).on('click', '.jobsearch-chat-candidate-openbox', function (e) {
202    var _this = jQuery(this);
203    jQuery(".jobsearch-chat-front-user-" + _this.attr('data-cand-user-id')).click();
204    if (!jQuery(".jobsearch-chat-member-list-wrapper").is(":visible")) {
205        jQuery(".user-" + _this.attr('data-cand-user-id')).addClass("jobsearch-ch
205at-margin-right");
206    }
207});
208//
209jQuery(document).on('click', '.jobsearch-chat-employer-openbox', function (e) {
210    var _this = jQuery(this);
211    jQuery(".jobsearch-chat-front-user-" + _this.attr('data-emp-user-id')).click();
212
213    if (!jQuery(".jobsearch-chat-member-list-wrapper").is(":visible")) {
214        jQuery(".user-" + _this.attr('data-emp-user-id')).addClass("jobsearch-chat-margin-right");
215    }
216});
217//
218jQuery(document).on('click', '.jobsearch-chat-candidate-add', function () {
219    var _this = jQuery(this),
220        _user_id = _this.attr('data-cand-id'),
221        this_html = _this.html();
222    if (!_this.hasClass('ajax-loading')) {
223        _this.addClass('ajax-loading');
224        _this.html(this_html + '<i class="fa fa-refresh fa-spin"></i>');
225        jQuery.ajax({
226            type: 'POST',
227            url: jobsearch_ajchat_vars.jobsearch_ajax_url,
228            data: {
229                cand_id: _user_id,
230                action: 'jobsearch_chat_add_to_chat_cand'
231            },
232            cache: true,
233            datatype: 'json',
234            success: function (data) {
235                var res_data = JSON.parse(data);
236                _this.removeClass('ajax-loading');
237                window.location.replace(res_data.redirect_url);
238            }
239        });
240    }
241});
242
243jQuery(document).on('click', '.jobsearch-chat-emp-add', function () {
244    var _this = jQuery(this),
245        _user_id = _this.attr('data-emp-id'),
246        this_html = _this.html();
247    if (!_this.hasClass('ajax-loading')) {
248        _this.addClass('ajax-loading');
249        _this.html(this_html + '<i class="fa fa-refresh fa-spin"></i>');
250        jQuery.ajax({
251            type: 'POST',
252            url: jobsearch_ajchat_vars.jobsearch_ajax_url,
253            data: {
254                emp_id: _user_id,
255                action: 'jobsearch_chat_add_to_chat_emp'
256            },
257            cache: true,
258            datatype: 'JSON',
259            success: function (data) {
260                var res_data = JSON.parse(data);
261                _this.removeClass('ajax-loading');
262                window.location.replace(res_data.redirect_url);
263            }
264        });
265    }
266});
267// load chat settings toggle view
268jQuery(document).on('click', '.jobsearch-chat-user-settings-btn', function (e) {
269    e.preventDefault();
270    jQuery(".jobsearch-chat-user-settings-con").show();
271});
272//
273function chat_enble_disble_chat(data) {
274
275    var _URL = jobsearch_ajchat_vars.jobsearch_ajax_url, _res, _chckbox_val,
276        _checked_val = jQuery(data).prop("checked") == true ? 1 : 0,
277        _data = {
278            val: _checked_val,
279            action: 'jobsearch_chat_enable_disable_chat',
280        };
281
282    jQuery.ajax({
283        type: 'POST',
284        url: _URL,
285        data: _data,
286        datatype: 'json',
287        beforeSend: function () {
288
289        },
290        success: function (msg) {
291            _res = JSON.parse(msg);
292            jQuery(".jobsearch-chat-user-result-msg").html('');
293            if (_res.response == 1) {
294                _chckbox_val = 0;
295            } else {
296                _chckbox_val = 1;
297            }
298            //
299            jQuery(data).attr('value', _chckbox_val);
300            if (_checked_val != 1) {
301                jQuery(".jobsearch-chat-user-result-msg").append('<p>' + jobsearch_ajchat_vars.chat_enable_msg + '</p>')
302                setTimeout(function () {
303                    jQuery(".jobsearch-chat-user-result-msg").html('');
304                }, 4000)
305            } else {
306                jQuery(".jobsearch-chat-user-result-msg").append('<p>' + jobsearch_ajchat_vars.chat_disable_msg + '</p>')
307                setTimeout(function () {
308                    jQuery(".jobsearch-chat-user-result-msg").html('');
309                }, 4000)
310            }
311
312        }
313    });
314}
315
316jQuery(document).on('click', '.jobsearch-chat-close-settings', function (e) {
317    e.preventDefault();
318    jQuery(".jobsearch-chat-user-settings-con").hide();
319
320});
321//load chat message front
322jQuery(document).on('click', '.jobsearch-chat-front-send-message', function (e) {
323    e.preventDefault();
324    var _html,
325        _user_id = jQuery(this).attr('data-user-id'),
326        _selector = jQuery(".user-" + _user_id + " #float-chat li"),
327        _message = jQuery(".user-" + _user_id + " form.messageForm input[name=message]"),
328        _no_message = jQuery(".user-" + _user_id + " #jobsearch-chat-no-messages"), _data = {
329            message: _message.val(),
330            sender_id: jQuery(".user-" + _user_id + " form.messageForm input[name=sender_id]").val(),
331            sender_image: jQuery(".user-" + _user_id + " form.messageForm input[name=sender_image]").val(),
332            receiver_image: jQuery(".user-" + _user_id + " form.messageForm input[name=receiver_image]").val(),
333            reciever_id: jQuery(".user-" + _user_id + " form.messageForm input[name=reciever_id]").val(),
334        };
335
336    jQuery('.jobsearch-chat-user-emoji-' + _user_id).hide();
337    if (_no_message.length > 0) {
338        _no_message.remove();
339    }
340    if (_message.val() == '') {
341        _message.addClass('jobsearch-chat-error');
342        return;
343    } else {
344        _message.removeClass('jobsearch-chat-error');
345    }
346    //
347    _html = '<li class="conversation-me"><span><img src="' + _data.sender_image + '"></span><div class="jobsearch-chat-user-events"><a href="javascript:void(0)" class="jobsearch-chat-del-message" data-chat-id=""><i class="chat-icon chat-trash-fill"></i></a></div><div class="jobsearch-chat-list-thumb"><p>' + _data.message.replace(/(<([^>]+)>)/ig, "") + '</p><small class="jobsearch-chat-msg-time">' + jobsearch_ajchat_vars.is_today + ' ' + formatAMPM(new Date) + '</small></div></li>';
348    if (_message.val().indexOf('youtube.com/watch?') == -1 && _message.val().indexOf('dailymotion.com/video/') == -1 && _message.val().indexOf('vimeo') == -1) {
349        if (_selector.length != 1) {
350            _selector.last().after(_html);
351        } else {
352            jQuery(".user-" + _user_id + " #float-chat").append(_html);
353        }
354    }
355
356    scroll_event_front(_user_id);
357    setTimeout(function () {
358        jQuery(".user-" + _user_id + " form.messageForm input[name=message]").val("")
359    }, 100);
360    jobsearch_front_chat_msg(jQuery(this))
361});
362
363function jobsearch_front_chat_msg(_this) {
364    playPushSound();
365
366    var _user_id = _this.attr('data-user-id'),
367        _html,
368        _btn = jQuery(".user-" + _user_id + " .jobsearch-chat-send-message"),
369        _message = jQuery(".user-" + _user_id + " form.messageForm input[name=message]"),
370        _selector = jQuery(".user-" + _user_id + " #float-chat li"),
371        _form_data = {
372            message: _message.val(),
373            sender_id: jQuery(".user-" + _user_id + " form.messageForm input[name=sender_id]").val(),
374            sender_image: jQuery(".user-" + _user_id + " form.messageForm input[name=sender_image]").val(),
375            receiver_image: jQuery(".user-" + _user_id + " form.messageForm input[name=receiver_image]").val(),
376            reciever_id: jQuery(".user-" + _user_id + " form.messageForm input[name=reciever_id]").val(),
377            action: 'jobsearch_chat_send_message',
378        }, _res,
379        _URL = jobsearch_ajchat_vars.jobsearch_ajax_url;
380
381    if (_form_data.message != '') {
382
383        jQuery.ajax({
384            type: 'POST',
385            url: _URL,
386            data: _form_data,
387            datatype: 'json',
388            beforeSend: function () {
389                _btn.attr('disabled');
390            },
391            success: function (res) {
392                _res = JSON.parse(res);
393                _btn.removeAttr('disabled');
394                if (_res.is_video != "") {
395                    _html = '<li class="conversation-me"><span><img src="' + _form_data.user_img + '"></span><div class="jobsearch-chat-list-thumb"><p>' + _res.is_video + '</p>
395<small class="jobsearch-chat-msg-time">' + jobsearch_ajchat_vars.is_today + ' ' + formatAMPM(new Date) + '<a href="javascript:void(0)" data-chat-id="" class="jobsearch-color jobsearch-chat-del-message">' + jobsearch_ajchat_vars.del_message + '</a></small></div></li>';
396                    if (_selector.length != 1) {
397                        _selector.last().after(_html);
398                    } else {
399                        jQuery(".user-" + _user_id + " #float-chat").append(_html);
400                    }
401                }
402                if (jQuery(".user-" + _user_id).find("#float-chat li").last().find(".jobsearch-chat-list-thumb").length > 0) {
403                    jQuery(".user-" + _user_id).find("#float-chat li").last().find(".jobsearch-chat-list-thumb").addClass("chat-" + _res.last_id)
404                    jQuery(".user-" + _user_id).find("#float-chat li").last().find("a").attr('data-chat-id', _res.last_id)
405                }
406            }
407        });
408    }
409}
410
411function loadFloatMessages(el, user_id) {
412    var _topOfScroll = jQuery(el).scrollTop(), _total_msgs, _data, _html, _loader_html,
413        _no_message_loader = jQuery(document).find('.user-' + user_id + ' #float-chat #jobsearch-chat-no-messages'),
414        _msg_loader_selector = jQuery(document).find('.user-' + user_id + ' #float-chat .jobsearch-chat-loader');
415    if (_topOfScroll == 0 && jQuery(el).attr('data-msgs-end') == 'false') {
416        _total_msgs = jQuery(document).find('.user-' + user_id + ' #float-chat li').length;
417        //
418        _loader_html = '<li><div class="jobsearch-chat-loader"><span>' + jobsearch_ajchat_vars.loading + '<small class="jobsearch-chat-loader-dots">...</small></span></div></li>';
419        if (!jQuery(el).hasClass('ajax-chat-loading')) {
420            jQuery(el).addClass('ajax-chat-loading');
421            jQuery(_loader_html).insertBefore(".user-" + user_id + " #float-chat li:first-child");
422            //
423            jQuery.ajax({
424                type: 'POST',
425                url: jobsearch_ajchat_vars.jobsearch_ajax_url,
426                data: {
427                    reciever_id: jQuery('.user-' + user_id + ' form.messageForm').find('input[name=reciever_id]').val(),
428                    limit: _total_msgs,
429                    action: 'jobsearch_chat_load_current_user_chat_front'
430                },
431                cache: true,
432                datatype: 'HTML',
433                success: function (msg) {
434                    _data = JSON.parse(msg);
435                    _html = _data.html;
436                    jQuery(".jobsearch-chat-loader").remove();
437                    if ('' == _html) {
438                        jQuery(el).attr('data-msgs-end', 'true');
439                        _html = '<li id="jobsearch-chat-first-msg-date">' + _data.first_msg_date + '</li>';
440                    }
441                    jQuery(".jobsearch-loading-section").addClass("hidden");
442                    if (_no_message_loader.length == 0) {
443                        jQuery(_html).insertBefore(".user-" + user_id + " #float-chat li:first-child");
444                    }
445                    if ('' != _html) {
446                        jQuery(el).scrollTop(200);
447                    }
448                    jQuery(el).removeClass('ajax-chat-loading')
449                }
450            });
451        }
452    }
453}
454
455function scroll_event_front(user_id = '') {
456    var chat = jQuery(".user-" + user_id + " .jobsearch-chat-scroll");
457    if (chat.is(':visible') && chat.hasScrollBar()) chat.scrollTop(chat[0].scrollHeight);
458}
459
460// sound events
461var getSound = new Audio(jobsearch_ajchat_vars.jobsearch_plugin_url + 'includes/sound/push.mp3');
462var isSoundMuted = '';
463
464function playChatSound() {
465    return $('<audio class="sound-player" autoplay="autoplay" ' + isSoundMuted + ' style="display:none;">' + '<source src="' + arguments[0] + '" />' + '<embed src="' + arguments[0] + '" hidden="true" autostart="true" loop="false"/>' + '</audio>').appendTo('body');
466}
467
468function stopSound() {
469    setTimeout(function () {
470        jQuery(".sound-player").remove();
471    }, 1000);
472}
473
474function playPushSound() {
475    playChatSound(getSound.src);
476    stopSound();
477}
478
479var typing = false;
480jQuery(document).on('keypress', 'input[name=message]', function (e) {
481    if (jQuery(this).hasClass("jobsearch-chat-error") == 1) {
482        jQuery(this).removeClass("jobsearch-chat-error");
483    }
484    var key = e.which;
485    if (key == 13)  // the enter key code
486    {
487        jQuery(this).parent('form').find('.jobsearch-chat-front-send-message').click();
488        return false;
489    }
490});
491var span = document.getElementsByClassName('jobsearch-chat-loader-dots');
492var int = setInterval(function () {
493    if ((span.innerHTML += '.').length == 4)
494        span.innerHTML = '';
495}, 200);
496//
497(function ($) {
498
499    if (localStorage.getItem("is_toggled") == "yes") {
500        member_chat_list_member.attr('style', '');
501        member_chat_list_member.css({display: "none"});
502        jQuery('.jobsearch-chat-floating-chat').removeClass('hidden')
503    } else {
504
505        member_chat_list_member.attr('style', '');
506        member_chat_list_member.css({display: 'inline-block'});
507        jQuery('.jobsearch-chat-floating-chat').hide().addClass('hidden')
508    }
509
510    var total_active_popup = localStorage.getItem("chat_box"), user_id;
511    if (total_active_popup == null) return;
512    user_id = total_active_popup.split(',');
513    //
514    for (var i = 0; i < user_id.length; i++) {
515        jQuery(".jobsearch-chat-front-user-" + user_id[i]).trigger("click")
516    }
517
518
519    if (!jQuery(".jobsearch-chat-member-list-wrapper").is(":visible")) {
520        jQuery('.jobsearch-chat-tabs-wrapper').find('.jobsearch-chat-box-open').last().addClass('jobsearch-chat-margin-right')
521    }
522
523})(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.