PageSourceSearch

https://hshelpinghand.com/wp-content/plugins/addon-jobsearch-chat/js/jobsearch-chat-functions.js?ver=1.8.3

js hshelpinghand.com collected 2026-10-04 21:58:38 UTC 52,174 bytes, 1,143 lines download raw bytes

1jQuery.fn.ignore = function (sel) {
2    return this.clone().find(sel || ">*").remove().end();
3};
4//
5jQuery(window).on('load', function () {
6    if (jQuery('.jobsearch-chat-emoji-picker').length > 0) {
7        jQuery('.jobsearch-chat-emoji-picker').lsxEmojiPicker({
8            closeOnSelect: true,
9            twemoji: true,
10            width: 330,
11            onSelect: function (emoji) {
12                var txt = $.trim(emoji.value), _emoji_string;
13                _emoji_string = txt.replace('&#', '0');
14                var _html = jQuery("textarea[name=message]").html();
15                var box = $("textarea[name=message]");
16                box.val(box.val() + String.fromCodePoint(_emoji_string));
17                //
18            }
19        });
20    }
21});
22(function ($) {
23
24    var user_id = localStorage.getItem('load_user_chat_backend'),
25        user_chat_selector = jobsearch_ajchat_vars.is_admin == true ? jQuery(".jobsearch-chat-user-" + user_id) : jQuery(".jobsearch-chat-user-" + user_id + ':first-child .jobsearch-load-user-chat');
26
27    if (user_id != null) {
28        setTimeout(function () {
29            //user_chat_selector.addClass("active");
30            user_chat_selector.click();
31        }, 100)
32    }
33
34    jQuery('.jobsearch-chat-user-list').scrollTop(0);
35    jQuery.fn.hasScrollBar = function () {
36        return this.get(0).scrollHeight > this.get(0).clientHeight;
37    };
38
39    jQuery("#chat, .jobsearch-chat-user-employer, .jobsearch-chat-user-candidate").niceScroll({
40        cursorborder: "",
41        cursorcolor: "#13b5ea",
42        boxzoom: false,
43        //cursorminheight: 100
44    });
45    //
46
47})(jQuery);
48//
49jQuery(document).on('change', 'form[name="fileForm"] input[type=file]', function () {
50    jQuery(this).parent('form').submit();
51});
52
53var endofscroll = true;
54jQuery(document).on("keyup", "#jobsearch-chat-container  #search_field", function () {
55    var _value = jQuery(this).val().toLowerCase(), _user_type = jQuery(this).attr('data-user-type'), _selector;
56    if (_value.length >= 1) {
57        jQuery.ajax({
58            type: 'POST',
59            url: jobsearch_ajchat_vars.jobsearch_ajax_url,
60            data: {
61                string: _value,
62                user_type: _user_type,
63                get_all_users: "false",
64                action: 'jobsearch_chat_get_users_by_key'
65            },
66            datatype: 'HTML',
67            success: function (msg) {
68                _selector = _user_type == 'emp' ? jQuery('.jobsearch-chat-user-employer').find('ul') : jQuery('.jobsearch-chat-user-candidate').find('ul');
69                _selector.html('');
70                _selector.append(msg)
71
72            }
73        });
74    } else {
75        jQuery.ajax({
76            type: 'POST',
77            url: jobsearch_ajchat_vars.jobsearch_ajax_url,
78            data: {
79                user_type: _user_type,
80                get_all_users: "true",
81                action: 'jobsearch_chat_get_users_by_key'
82            },
83            datatype: 'HTML',
84            success: function (msg) {
85                _selector = _user_type == 'emp' ? jQuery('.jobsearch-chat-user-employer').find('ul') : jQuery('.jobsearch-chat-user-candidate').find('ul');
86                _selector.html('');
87                _selector.append(msg)
88
89            }
90        });
91    }
92});
93
94jQuery(document).on('click', '.jobsearch-chat-all-users', function () {
95    var _user_type = jQuery('#search_field').attr('data-user-type'), _selector;
96
97    jQuery('#search_field').val('');
98
99    jQuery.ajax({
100        type: 'POST',
101        url: jobsearch_ajchat_vars.jobsearch_ajax_url,
102        data: {
103            user_type: _user_type,
104            get_all_users: "true",
105            action: 'jobsearch_chat_get_users_by_key'
106        },
107
108        datatype: 'HTML',
109        success: function (msg) {
110            _selector = _user_type == 'emp' ? jQuery('.jobsearch-chat-user-employer').find('ul') : jQuery('.jobsearch-chat-user-candidate').find('ul');
111            _selector.html('');
112            _selector.append(msg)
113
114        }
115    });
116});
117
118function loadMessages(el) {
119    var _topOfScroll = jQuery("#chat").scrollTop(), _total_msgs, _data, _html, _loader_html;
120
121    if (_topOfScroll == 0 && endofscroll == true) {
122        _total_msgs = jQuery(document).find('ul#chat li').length;
123        //
124        _loader_html = '<li><div class="jobsearch-chat-loader"><span>' + jobsearch_ajchat_vars.loading + '<small class="jobsearch-chat-loader-dots">...</small></span></div></li>';
125        if (!jQuery(el).hasClass('ajax-chat-loading')) {
126            jQuery(el).addClass('ajax-chat-loading')
127            jQuery(_loader_html).insertBefore("#chat li:first-child");
128            jQuery.ajax({
129                type: 'POST',
130                url: jobsearch_ajchat_vars.jobsearch_ajax_url,
131                data: {
132                    reciever_id: jQuery('input[name=reciever_id]').val(),
133                    limit: _total_msgs,
134                    action: 'jobsearch_chat_load_current_user_chat'
135                },
136
137                datatype: 'HTML',
138                success: function (msg) {
139
140                    jQuery(el).removeClass('ajax-chat-loading')
141                    _data = JSON.parse(msg);
142                    _html = _data.html;
143                    jQuery(".jobsearch-chat-loader").remove();
144                    if (false == _data.html) {
145                        endofscroll = false;
146                        _html = '<li id="jobsearch-chat-first-msg-date">' + _data.first_msg_date + '</li>';
147                        jQuery(_html).insertBefore("#chat li:first-child");
148                    }
149
150                    jQuery(".jobsearch-chat-user-" + _data.reciever_id + " .jobsearch-chat-unread-message").text(_data.unread_messages);
151                    if (_data.html != false) {
152                        jQuery(_html).insertBefore("#chat li:first-child");
153                        jQuery(el).scrollTop(200);
154                    }
155                }
156            });
157        }
158    }
159}
160
161var scrollTopflag = false,
162    scrollTopCand = jQuery("input[name=scrollTop-cand]").val(),
163    scrollTopEmp = jQuery("input[name=scrollTop-emp]").val();
164
165jQuery("#jobsearch-chat-container  #search_field").on('click', function () {
166    endofscroll = false;
167});
168jQuery("#jobsearch-chat-container  #search_field").on('focusout', function () {
169    endofscroll = true;
170});
171
172function slidechat(id) {
173    jQuery(".user-" + id + " .jobsearch-chat-floating-chat-list").slideToggle("fast")
174}
175
176function loadUsers(el) {
177    var _emp_user_list = jQuery('.jobsearch-chat-user-employer'),
178        _offset_emp = jQuery('input[name=employer-user-offset]'),
179        _offset_cand = jQuery('input[name=candidate-user-offset]');
180
181    if ((jQuery(el).scrollTop() + jQuery(el).innerHeight() >= jQuery(el)[0].scrollHeight) && endofscroll == true) {
182        scrollTopEmp = parseInt(scrollTopEmp);
183        if (!_emp_user_list.hasClass("hidden")) {
184            jQuery.ajax({
185                type: 'POST',
186                url: jobsearch_ajchat_vars.jobsearch_ajax_url,
187                data: {
188                    offset: _offset_emp.val(),
189                    action: 'jobsearch_chat_load_next_employers'
190                },
191                datatype: 'html',
192                success: function (msg) {
193                    if ('' == msg) {
194                        endofscroll = false;
195                    }
196
197                    scrollTopEmp = jQuery(el)[0].scrollHeight - parseInt(700);
198                    scrollTopflag = true;
199                    _offset_emp.val(parseInt(_offset_emp.val()) + parseInt(50));
200                    jQuery(msg).insertAfter(".jobsearch-chat-user-employer ul li:last-child");
201                    jQuery(el).scrollTop(scrollTopEmp);
202                }
203            });
204        } else {
205            scrollTopCand = parseInt(scrollTopCand);
206            jQuery.ajax({
207                type: 'POST',
208                url: jobsearch_ajchat_vars.jobsearch_ajax_url,
209                data: {
210                    offset: _offset_cand.val(),
211                    action: 'jobsearch_chat_load_next_candidate'
212                },
213                datatype: 'html',
214                success: function (msg) {
215                    if ('' == msg) {
216                        endofscroll = false;
217                    }
218                    scrollTopCand = jQuery(el)[0].scrollHeight - parseInt(700);
219                    scrollTopflag = true;
220                    _offset_cand.val(parseInt(_offset_cand.val()) + parseInt(50));
221                    jQuery(msg).insertAfter(".jobsearch-chat-user-candidate ul li:last-child");
222                    jQuery(el).scrollTop(scrollTopCand);
223                }
224            });
225        }
226    }
227}
228
229/*
230* Chat events
231* */
232var isSoundMuted = '';
233jQuery(document).on('click', '.disableSound', function () {
234    if (isSoundMuted == '') {
235        isSoundMuted = 'muted';
236        jQuery(this).toggleClass("chat-icon chat-speaker chat-icon chat-mute");
237    } else if (isSoundMuted == 'muted') {
238        jQuery(this).toggleClass("chat-icon chat-mute chat-icon chat-speaker");
239        isSoundMuted = '';
240    }
241});
242//
243jQuery(document).on('click', '.jobsearch-chat-delete-user', function () {
244    var _user_id = jQuery(this).attr('data-user-id'), _user_selector_id = jQuery(this).attr('data-selector-id');
245    jQuery('.jobsearch-chat-user-' + _user_selector_id).remove();
246    jQuery.ajax({
247        type: 'POST',
248        url: jobsearch_ajchat_vars.jobsearch_ajax_url,
249        data: {
250            f_user_id: _user_id,
251            user_real_id: _user_selector_id,
252            action: 'jobsearch_chat_delete_user_friend'
253        },
254        datatype: 'html',
255        success: function (msg) {
256
257        }
258    });
259});
260
261jQuery(document).on('click', '.jobsearch-chat-emoji-picker-select-full-view', function () {
262    jQuery('.jobsearch-chat-emojis-box').fadeToggle(500)
263});
264
265jQuery(".jobsearch-emoji").on('click', function () {
266    var _this = jQuery(this), _emoji_val = _this.attr('data-val');
267    var box = jQuery('textarea[name=message]');
268    box.val(box.val() + _emoji_val);
269});
270
271jQuery('.jobsearch-chat-emoji-picker-select-full-view').click(function (e) {
272    e.preventDefault();
273    e.stopPropagation();
274    jQuery('.jobsearch-chat-emojis-box').toggle();
275});
276
277jQuery('.jobsearch-chat-emojis-box').click(function (e) {
278    e.stopPropagation();
279});
280
281jQuery('body').click(function () {
282    jQuery('.jobsearch-chat-emojis-box').hide();
283});
284
285jQuery(document).on('click', '.jobsearch-chat-send-message', function () {
286    var _html, _selector = jQuery("#chat li"), _user_img, _message = jQuery("textarea[name=message]"),
287        _no_message = jQuery("#jobsearch-chat-no-messages"), _data = {
288            message: _message.val(),
289            sender_id: jQuery("input[name=sender_id]").val(),
290            reciever_id: jQuery("input[name=reciever_id]").val(),
291            sender_image: jQuery("input[name=sender_image]").val(),
292            receiver_image: jQuery("input[name=receiver_image]").val(),
293        };
294    jQuery('.jobsearch-chat-emojis-box').hide();
295    if (_no_message.length > 0) {
296        _no_message.remove();
297    }
298    if (_message.val() == '') {
299        _message.addClass('jobsearch-chat-error');
300        return;
301    } else {
302        _message.removeClass('jobsearch-chat-error');
303    }
304    _message.html('');
305    //
306    if (_message.val().indexOf('youtube.com/watch?') == -1 && _message.val().indexOf('dailymotion.com/video/') == -1 && _message.val().indexOf('vimeo') == -1) {
307        _html = '<li class="you "><img src="' + _data.sender_image + '"><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-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-entete-wrapper"><p>' + _data.message.replace(/(<([^>]+)>)/ig, "") + '</p><div class="jobsearch-chat-entete"><h3>' + jobsearch_ajchat_vars.is_today + ' ' + formatAMPM(new Date) + '</h3><a href="javascript:void(0)" class="jobsearch-color jobsearch-chat-seen hidden">' + jobsearch_ajchat_vars.is_seen + '</a></div></div></li>';
308
309        if (_selector.length != 1) {
310            _selector.last().after(_html);
311        } else {
312            jQuery("#chat").append(_html);
313        }
314    }
315
316    scroll_event(_data.reciever_id);
317    setTimeout(function () {
318        jQuery("textarea[name=message]").val("")
319    }, 100);
320});
321//ajax to send other user message
322jQuery(document).on('click', '.jobsearch-chat-send-message', function (e) {
323    e.preventDefault();
324    jQuery('.res-success').addClass('hidden');
325    playPushSound();
326
327    var _form_data = {
328            message: jQuery("textarea[name=message]").val(),
329            sender_id: jQuery("input[name=sender_id]").val(),
330            reciever_id: jQuery("input[name=reciever_id]").val(),
331            sender_image: jQuery("input[name=sender_image]").val(),
332            receiver_image: jQuery("input[name=receiver_image]").val(),
333            action: 'jobsearch_chat_send_message'
334        }, _selector = jQuery("#chat li"),
335        _URL = jobsearch_ajchat_vars.jobsearch_ajax_url,
336        user_img = _form_data.user_img;
337    //
338    if (_form_data.message != '') {
339        jQuery.ajax({
340            type: 'POST',
341            url: _URL,
342            data: _form_data,
343            datatype: 'HTML',
344            beforeSend: function () {
345
346            },
347            success: function (res) {
348                var _res = JSON.parse(res);
349                if (_res.is_video != "") {
350                    _html = '<li class="you "><img src="' + user_img + '"><div class="jobsearch-chat-entete-wrapper"><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><p>' + _res.is_video + '</p><div class="jobsearch-chat-entete"><h3>' + jobsearch_ajchat_vars.is_today + ' ' + formatAMPM(new Date) + '</h3><a href="javascript:void(0)" class="jobsearch-color jobsearch-chat-seen hidden">' + jobsearch_ajchat_vars.is_seen + '</a></div></div></li>';
351                    if (_selector.length != 1) {
352                        _selector.last().after(_html);
353                    } else {
354                        _selector.append(_html);
355                    }
356                }
357                if (jQuery(".user-" + _form_data.reciever_id).find("#chat li").last().find(".jobsearch-chat-entete-wrapper").length > 0) {
358                    jQuery(".user-" + _form_data.reciever_id).find("#chat li").last().find(".jobsearch-chat-entete-wrapper").addClass("chat-" + _res.last_id)
359                    jQuery(".user-" + _form_data.reciever_id).find("#chat li").last().find(".jobsearch-chat-del-message").attr('data-chat-id', _res.last_id)
360                }
361                scroll_event(_form_data.reciever_id);
362            }
363        });
364    }
365});
366
367var typing = true;
368jQuery("textarea[name=message], input[name=message]").focusout(function () {
369    jQuery(this).parent('form').find("input[name=typing]").val("null");
370    jQuery(this).removeClass('active');
371    var _URL = jobsearch_ajchat_vars.jobsearch_ajax_url,
372        _form_data = {
373            message: jQuery(this).parent('form').find("textarea[name=message]").val(),
374            sender_id: jQuery(this).parent('form').find("input[name=sender_id]").val(),
375            typing: jQuery(this).parent('form').find("input[name=typing]").val(),
376            reciever_id: jQuery(this).parent('form').find("input[name=reciever_id]").val(),
377            action: 'jobsearch_chat_send_message'
378        };
379    typing = false;
380    jQuery.ajax({
381        type: 'POST',
382        url: _URL,
383        data: _form_data,
384        datatype: 'json',
385        beforeSend: function () {
386
387        },
388        success: function (msg) {
389
390        }
391    });
392});
393/*
394* Backend Chat button
395* */
396jQuery(document).on('click', '.jobsearch-chat-form textarea[name=message]', function (e) {
397    typing = true;
398    var _URL = jobsearch_ajchat_vars.jobsearch_ajax_url,
399        _form_data = {
400            sender_id: jQuery(this).parent('form').find("input[name=sender_id]").val(),
401            reciever_id: jQuery(this).parent('form').find("input[name=reciever_id]").val(),
402            action: 'jobsearch_chat_update_unread_messages'
403        },
404        _count_selector_backend = jQuery(".jobsearch-chat-user-" + _form_data.reciever_id),
405        _totl_unread_messages_backend = _count_selector_backend.find(".jobsearch-ch
405at-unread-message").text();
406    if (_totl_unread_messages_backend != 0) {
407        //
408        _count_selector_backend.find(".jobsearch-chat-unread-message").text(0);
409        _count_selector_backend.find(".jobsearch-chat-unread-message").addClass('hidden');
410        //
411        jQuery.ajax({
412            type: 'POST',
413            url: _URL,
414            data: _form_data,
415            datatype: 'JSON',
416            beforeSend: function () {
417
418            },
419            success: function (msg) {
420
421            }
422        });
423    }
424});
425/*
426* frontend Chat button
427* */
428jQuery(document).on('click', '.jobsearch-chat-frontend .messageForm input[name=message]', function (e) {
429    typing = true;
430    var _URL = jobsearch_ajchat_vars.jobsearch_ajax_url,
431        _form_data = {
432            sender_id: jQuery(this).parent('form').find("input[name=sender_id]").val(),
433            reciever_id: jQuery(this).parent('form').find("input[name=reciever_id]").val(),
434            action: 'jobsearch_chat_update_unread_messages'
435        },
436        _count_selector_frontend = jQuery(".user-" + _form_data.reciever_id),
437        _totl_unread_messages_front = _count_selector_frontend.find(".notification-count").text();
438
439    if (_totl_unread_messages_front != 0) {
440        _count_selector_frontend.find(".notification-box").addClass('hidden');
441        _count_selector_frontend.find(".notification-count").text(0);
442        jQuery.ajax({
443            type: 'POST',
444            url: _URL,
445            data: _form_data,
446            datatype: 'JSON',
447            beforeSend: function () {
448
449            },
450            success: function (msg) {
451
452            }
453        });
454    }
455});
456
457jQuery(document).on('click', '.jobsearch-chat-del-message', function () {
458    //
459    var _this = jQuery(this), _chat_id = _this.attr('data-chat-id'),
460        _selector = jQuery('.chat-' + _chat_id),
461        _html,
462        _URL = jobsearch_ajchat_vars.jobsearch_ajax_url,
463        _form_data = {
464            chat_id: _chat_id,
465            action: 'jobsearch_chat_delete_message'
466        };
467    _this.parent().parent().addClass('jobsearch-chat-is-deleted');
468    _this.parent().addClass('hidden').delay(1000).remove();
469
470    _html = '<p>' + jobsearch_ajchat_vars.del_full_message + '</p>';
471    _selector.html("");
472    _selector.append(_html);
473    jQuery.ajax({
474        type: 'POST',
475        url: _URL,
476        data: _form_data,
477        datatype: 'JSON',
478        beforeSend: function (res) {
479
480        },
481        success: function (msg) {
482
483        }
484    });
485})
486
487jQuery(document).on('keypress', '.jobsearch-chat-form textarea[name=message], .jobsearch-chat-frontend .messageForm input[name=message]', function (e) {
488
489    jQuery(this).parent('form').find("input[name=typing]").val("true");
490    var key = e.which || e.charCode,
491        _this = jQuery(this),
492        _URL = jobsearch_ajchat_vars.jobsearch_ajax_url,
493        _form_data = {
494            message: jQuery(this).parent('form').find("textarea[name=message],input[name=message]").val(),
495            sender_id: jQuery(this).parent('form').find("input[name=sender_id]").val(),
496            sender_image: jQuery("input[name=sender_image]").val(),
497            receiver_image: jQuery("input[name=receiver_image]").val(),
498            typing: jQuery(this).parent('form').find("input[name=typing]").val(),
499            reciever_id: jQuery(this).parent('form').find("input[name=reciever_id]").val(),
500            action: 'jobsearch_chat_send_message'
501        };
502    if (key == 13) // the enter key code
503    {
504        jQuery('.jobsearch-chat-send-message').click();
505        jQuery(this).focusout();
506        return false;
507
508    } else {
509
510        if (_this.val() != '') {
511            if (typing == true) {
512                jQuery.ajax({
513                    type: 'POST',
514                    url: _URL,
515                    data: _form_data,
516                    datatype: 'JSON',
517                    beforeSend: function () {
518
519                    },
520                    success: function (msg) {
521
522                    }
523                });
524            }
525            typing = false;
526        }
527    }
528});
529
530var d = new Date(), current_year = d.getFullYear();
531jQuery(document).on('click', '.jobsearch-chat-list', function () {
532    var _this = jQuery(this);
533    jQuery('.jobsearch-chat-nav li').removeClass('active');
534    _this.parent('li').addClass('active');
535    if (_this.attr('data-list') == 'jobsearch-chat-user-candidate') {
536        jQuery("#search_field").attr('data-user-type', 'cand');
537        jQuery(".jobsearch-chat-user-employer,.jobsearch-chat-user-groups").addClass('hidden');
538        jQuery('.' + _this.attr('data-list')).removeClass('hidden').hide().delay(100).fadeIn(500);
539
540    } else if (_this.attr('data-list') == 'jobsearch-chat-user-employer') {
541        jQuery("#search_field").attr('data-user-type', 'emp');
542        jQuery(".jobsearch-chat-user-candidate, .jobsearch-chat-user-groups").addClass('hidden');
543        jQuery('.' + _this.attr('data-list')).removeClass('hidden').hide().delay(100).fadeIn(500);
544    } else {
545        jQuery("#search_field").attr('data-user-type', 'group');
546        jQuery(".jobsearch-chat-user-candidate, .jobsearch-chat-user-employer").addClass('hidden');
547        jQuery('.' + _this.attr('data-list')).removeClass('hidden').hide().delay(100).fadeIn(500);
548    }
549});
550
551jQuery(document).on('click', '.jobsearch-chat-filter-toggle', function () {
552    jQuery(".jobsearch-chat-filter-input-field").fadeToggle("slow");
553    jQuery(".jobsearch-chat-selectize").fadeToggle("slow");
554});
555
556jQuery(document).on('click', '.feature-coming-soon', function (e) {
557    e.preventDefault();
558    alert('feature coming soon')
559});
560
561jQuery(document).on('click', '.jobsearch-load-user-chat', function () {
562
563    var _this = jQuery(this), _user_img,
564        _user_name, _user_id, _data, _class,
565        _html, _chat_selector = jQuery('ul#chat'),
566        _load_chat_selector = jQuery(".jobsearch-user-chat-messages"), _count_selector_backend, _loader_html,
567        _user_logged_status, _user_logged_status_text;
568
569    if (_this.hasClass("active") == true) {
570        return;
571    }
572    //jQuery('.jobsearch-chat-emoji-picker').click();
573    _chat_selector.html("");
574    _loader_html = '<li><div class="jobsearch-chat-loader"><span>' + jobsearch_ajchat_vars.loading + '<small class="jobsearch-chat-loader-dots">...</small></span></div></li>';
575    _chat_selector.append(_loader_html);
576
577    //
578    jQuery('.jobsearch-load-user-chat').removeClass("active");
579    jQuery('.jobsearch-load-user-chat').parent('li').removeClass("active");
580    _load_chat_selector.removeClass("hidden");
581    //
582    _user_id = _this.attr('data-user-chat');
583    //
584    _count_selector_backend = jQuery(".jobsearch-chat-user-" + _user_id);
585    _count_selector_backend.find(".jobsearch-chat-unread-message").text(0);
586    _count_selector_backend.find(".jobsearch-chat-unread-message").addClass('hidden');
587    localStorage.setItem("load_user_chat_backend", _user_id);
588    _load_chat_selector.attr("class", "jobsearch-user-chat-content jobsearch-user-chat-messages user-" + _user_id);
589
590    jQuery("input[name=reciever_id]").val(_user_id);
591    if (jobsearch_ajchat_vars.is_admin == true) {
592        _user_logged_status = _this.find('.status-with-thumb');
593        if (_user_logged_status.hasClass('orange')) {
594            _class = 'status status-with-thumb orange';
595            _user_logged_status_text = jobsearch_ajchat_vars.offline;
596        } else {
597            _user_logged_status_text = jobsearch_ajchat_vars.online;
598            _class = 'status status-with-thumb green';
599        }
600        _user_img = _this.find("img").attr('src');
601        _user_name = _this.find("h2").ignore("span").ignore("small").text();
602    } else {
603        //
604        _user_logged_status = _this.parent().find('.status-with-thumb');
605
606        if (_user_logged_status.hasClass('orange')) {
607            _class = 'status status-with-thumb orange';
608            _user_logged_status_text = jobsearch_ajchat_vars.offline;
609        } else {
610            _user_logged_status_text = jobsearch_ajchat_vars.online;
611            _class = 'status status-with-thumb green';
612        }
613        _user_img = _this.parent().parent().find("img").attr('src');
614        _user_name = _this.parent().find("h2").ignore("span").ignore("small").text();
615    }
616
617    _load_chat_selector.find(".jobsearch-user-chat-header").find(".status-with-thumb").attr("class", _class);
618    _load_chat_selector.find(".jobsearch-user-chat-header").find(".jobsearch-user-status-wrapper").find('span').text(_user_logged_status_text);
619    _load_chat_selector.find(".jobsearch-user-chat-header").find("img:first-child").attr("src", _user_img);
620    _load_chat_selector.find(".jobsearch-chat-form-wrapper").find("input[name=receiver_image]").val(_user_img);
621    _load_chat_selector.find(".jobsearch-user-chat-header").find("h2").text(_user_name);
622    //
623    _this.addClass("active");
624    _this.parent('li').addClass("active");
625    jQuery.ajax({
626        type: 'POST',
627        url: jobsearch_ajchat_vars.jobsearch_ajax_url,
628        data: {
629            limit: 0,
630            reciever_id: _user_id,
631            action: "jobsearch_chat_load_current_user_chat"
632        },
633        datatype: 'JSON',
634        success: function (msg) {
635            _data = JSON.parse(msg);
636            _html = _data.html;
637            jQuery(".jobsearch-chat-loader").parent('li').remove();
638            _chat_selector.html('');
639
640            if ('' == _html) {
641                _chat_selector.addClass("jobsearch-chat-not-messages-list")
642                _html = '<li id="jobsearch-chat-no-messages">' + jobsearch_ajchat_vars.no_chat_message + '</li>';
643            }
644
645            jQuery(".jobsearch-chat-user-" + _data.reciever_id + " .jobsearch-chat-unread-message").text(_data.unread_messages);
646            _chat_selector.append(_html);
647            scroll_event(_user_id);
648
649        }
650    });
651});
652//
653jQuery(document).on('change', '.sort-contacts', function () {
654    var _this = jQuery(this);
655
656    if (_this.val() != 0) {
657        jQuery.ajax({
658            type: 'POST',
659            url: jobsearch_ajchat_vars.jobsearch_ajax_url,
660            data: {
661                current_user_id: jobsearch_ajchat_vars.current_user,
662                sort_by: _this.val(),
663                action: "jobsearch_chat_sort_contact"
664            },
665            datatype: 'JSON',
666            success: function (msg) {
667
668            }
669        });
670    }
671});
672/*
673* Helper Functions
674* */
675var getSound = new Audio(jobsearch_ajchat_vars.jobsearch_plugin_url + 'includes/sound/push.mp3');
676var isSoundMuted = '';
677
678function playChatSound() {
679    return $(
680        '<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');
681}
682
683function stopSound() {
684    setTimeout(function () {
685        jQuery(".sound-player").remove();
686    }, 1000);
687}
688
689function playPushSound() {
690    playChatSound(getSound.src);
691    stopSound();
692}
693
694function triggerFile() {
695    jQuery('form[name="fileForm"] input:first').click();
696}
697
698function scroll_event(user_id = '') {
699    var chat = jQuery(".user-" + user_id).find("#chat"),
700        _float_chat = jQuery(".jobsearch-chat-wrapper.user-" + user_id).find(".jobsearch-chat-scroll");
701    if (chat.is(':visible') && chat.hasScrollBar()) chat.scrollTop(chat[0].scrollHeight);
702    if (_float_chat.is(':visible') && _float_chat.hasScrollBar()) _float_chat.scrollTop(_float_chat[0].scrollHeight);
703}
704
705function currentDate() {
706    var a = new Date();
707    var days = new Array(7);
708    days[0] = "Sunday";
709    days[1] = "Monday";
710    days[2] = "Tuesday";
711    days[3] = "Wednesday";
712    days[4] = "Thursday";
713    days[5] = "Friday";
714    days[6] = "Saturday";
715    return days[a.getDay()];
716}
717
718function currentMonth() {
719    var month = new Array(), _d = new Date();
720    month[0] = "January";
721    month[1] = "February";
722    month[2] = "March";
723    month[3] = "April";
724    month[4] = "May";
725    month[5] = "June";
726    month[6] = "July";
727    month[7] = "August";
728    month[8] = "September";
729    month[9] = "October";
730    month[10] = "November";
731    month[11] = "December";
732    return month[_d.getMonth()];
733}
734
735function formatAMPM(date) {
736    var hours = date.getHours(), minutes = date.getMinutes(), ampm = hours >= 12 ? 'pm' : 'am', strTime;
737    hours = hours % 12;
738    hours = hours ? hours : 12;
739    minutes = minutes < 10 ? '0' + minutes : minutes;
740    strTime = hours + ':' + minutes + '' + ampm;
741    return strTime;
742}
743
744function uploadFileForm(form) {
745    jQuery('.jobsearch-chat-no-messages').remove();
746    var fileForm = jQuery(form).children('input[type=file]')[0].files[0],
747        formId = jQuery(form).attr('id'),
748        reg_ser_form = jQuery(form)[0],
749        ext_not_allow = ['css', 'html', 'php', 'json'],
750        formData = new FormData(reg_ser_form);
751
752    if (fileForm.size > 10000000) {
753        alert("cannot upload more than 10mb");
754        return;
755    }
756    var chat_message = fileForm.name,
757        last_element,
758        chat_message_ext = chat_message.split('.');
759    if (chat_message_ext != '') {
760        last_element = chat_message_ext[chat_message_ext.length - 1];
761        if (ext_not_allow.indexOf(last_element) != -1) {
762            alert("File of this extension is not allowed");
763            return;
764        }
765    }
766
767    jQuery.ajax({
768        type: 'POST',
769        url: jobsearch_ajchat_vars.jobsearch_ajax_url,
770        data: formData,
771        contentType: false,
772        cache: false,
773        processData: false,
774        datatype: 'json',
775        beforeSend: function () {
776            jQuery(".jobsearch-loading-section").removeClass("hidden");
777        },
778        success: function (r) {
779
780            jQuery(".jobsearch-loading-section").addClass("hidden");
781            scroll_event();
782        }
783    });
784    jQuery('form#' + formId).trigger("reset");
785}
786
787function removeActiveUser(arr) {
788    var what, a = arguments, L = a.length, ax;
789    while (L > 1 && arr.length) {
790        what = a[--L];
791        while ((ax = arr.indexOf(what)) !== -1) {
792            arr.splice(ax, 1);
793        }
794    }
795    return arr;
796}
797//
798window.addEventListener('online', handleConnectionChange);
799window.addEventListener('offline', handleConnectionChange);
800/*---------------* Live internet connection tracking *---------------*/
801function handleConnectionChange(event) {
802
803    var conn_tracker = jQuery('.jobsearch-connection-field');
804    if (event.type == "offline") {
805        conn_tracker.fadeIn();
806        conn_tracker.children('i').addClass('blink');
807        conn_tracker.css('background', '#f03d25');
808        conn_tracker.children('i').fadeIn();
809        jQuery(".jobsearch-chat-top").hide()
810    }
811    if (event.type == "online") {
812        conn_tracker.css('background', '#04cc04');
813        conn_tracker.children('i').fadeIn();
814        conn_tracker.children('i').removeClass('blink');
815        conn_tracker.delay(4000).fadeOut(0, function () {
816            conn_tracker.children('i').fadeOut();
817            jQuery(".jobsearch-chat-top").show()
818        });
819    }
820}
821
822/*---------------* Internet connection navigator tracker *---------------*/
823function internetConnectionCheck() {
824    return navigator.onLine ? true : false;
825}
826
827/*
828* Enable pusher logging - don't include this in production
829* */
830
831//Pusher.logToConsole = true;
832var pusher = new Pusher(jobsearch_ajchat_vars.pusher_auth, {
833    cluster: jobsearch_ajchat_vars.pusher_cluster,
834    forceTLS: true,
835    disableStats: true,
836});
837pusher.config.authEndpoint = jobsearch_ajchat_vars.jobsearch_ajax_client_auth;
838
839var presenceChannel = pusher.subscribe('presence-admin-chat');
840var online_users = [];
841presenceChannel.bind('pusher:subscription_succeeded', function (data) {
842
843    jQuery.each(data.members, function (index, item) {
844        var _status_selector = jQuery(".jobsearch-chat-user-" + index + " , .user-" + index),
845            _front_status_selector = jQuery('.jobsearch-chat-front-user-' + index),
846            _front_chat_box_selector = jQuery('.jobsearch-chat-wrapper.user-' + index),
847            _chat_full_view_user_header_status = jQuery('.user-' + index);
848        //
849        if (_front_status_selector.length != 0) {
850            online_users.push(index);
851        }
852        //
853        _status_selector.find(".status").removeClass('orange').addClass('green');
854        _front_status_selector.removeClass('ofline').addClass('online');
855        _front_chat_box_selector.removeClass('ofline').addClass('online');
856        _chat_full_view_user_header_status.find('.jobsearch-user-status-wrapper').find('span').text(jobsearch_ajchat_vars.online)
857        //
858    });
859
860    jQuery(".jobsearch-chat-loggin-status").text('');
861    jQuery(".jobsearch-chat-loggin-status").html('Online: ' + (online_users.length))
862});
863
864presenceChannel.bind('pusher:member_added', function (members) {
865    //
866    jQuery.ajax({
867        type: 'POST',
868        url: jobsearch_ajchat_vars.jobsearch_ajax_url,
869        data: {
870            current_user_id: members.id,
871            action: "jobsearch_chat_user_is_login"
872        },
873        datatype: 'json',
874        success: function (r) {
875
876        }
877    });
878    //
879    var _status_selector_list_menu = jQuery(".jobsearch-chat-user-" + members.id + ""),
880        _front_status_selector = jQuery('.jobsearch-chat-front-user-' + members.id),
881        _front_toggle_chat_box_selector = jQuery('.jobsearch-chat-wrapper.user-' + members.id),
882        _chat_full_view_user_header_status = jQuery('.user-' + members.id);
883
884    if (_front_status_selector.length != 0) {
885        online_users.push(presenceChannel.members.me.id);
886    }
887    //
888    _chat_full_view_user_header_status.find('.jobsearch-user-status-wrapper').find('span').text(jobsearch_ajchat_vars.online)
889    _status_selector_list_menu.find(".status").removeClass('orange').addClass('green');
890    _front_status_selector.removeClass('ofline').addClass('online');
891    _chat_full_view_user_header_status.find('.status-with-thumb').removeClass('orange').addClass('green')
892    _front_toggle_chat_box_selector.removeClass('online').addClass('ofline');
893    jQuery(".jobsearch-chat-loggin-status").html(jobsearch_ajchat_vars.online + ': ' + (online_users.length))
894});
895
896presenceChannel.bind('pusher:member_removed', function (members) {
897
898    jQuery.ajax({
899        type: 'POST',
900        url: jobsearch_ajchat_vars.jobsearch_ajax_url,
901        data: {
902            current_user_id: members.id,
903            action: "jobsearch_chat_user_is_log_out"
904        },
905        datatype: 'json',
906        success: function (r) {
907        }
908    });
909    //
910    var _status_selector = jQuery(".jobsearch-chat-user-" + members.id + ""),
911        _front_status_selector = jQuery('.jobsearch-chat-front-user-' + members.id),
912        _chat_full_view_user_header_status = jQuery('.user-' + members.id),
913        _front_chat_box_selector = jQuery('.jobsearch-chat-wrapper.user-' + members.id);
914
915    removeActiveUser(online_users, presenceChannel.members.me.id);
916    _chat_full_view_user_header_status.find('.jobsearch-user-status-wrapper').find('span').text(jobsearch_ajchat_vars.offline)
917    _status_selector.find(".status").removeClass('green').addClass('orange');
918    _front_status_selector.removeClass('online').addClass('ofline');
919    _front_chat_box_selector.removeClass('online').addClass('ofline');
920    _chat_full_view_user_header_status.find('.status-with-thumb').removeClass('green').addClass('orange')
921    jQuery(".jobsearch-chat-loggin-status").html(jobsearch_ajchat_vars.online + ': ' + (online_users.length))
922});
923
924presenceChannel.bind('send-event', function (data) {
925
926    var _msg = data.chat_msg[0], _selector = jQuery(".user-" + _msg.sender_id + " #chat li"), _admin_message = '',
927        _front_message = '',
928        _no_message = jQuery(".user-" + _msg.sender_id + " #jobsearch-chat-no-messages"),
929        _front_selector = jQuery(".user-" + _msg.sender_id + " #float-chat li"),
930        _msg_count_selector_full_view = jQuery(".jobsearch-chat-user-" + _msg.sender_id),
931        _msg_count_selector_frontend_float = jQuery(".user-" + _msg.sender_id), _message, _small_text;
932
933    if (_no_message.length > 0) {
934        _no_message.remove();
935    }
936
937    _small_text = _msg.small_text + '<span class="jobsearch-chat-unread-message">' + data.totl_receiver_msgs + '</span>';
938    _message = _msg.is_video != undefined ? _msg.is_video : _msg.message;
939    if (jQuery(".jobsearch-chat-users-list").hasClass('hidden') == false) {
940        jQuery(".jobsearch-chat-users-list ul li").parent().prepend(_msg_count_selector_full_view);
941        _msg_count_selector_full_view.slice(1).remove();
942    }
943    if (jobsearch_ajchat_vars.current_user == _msg.reciever_id) {
944        jQuery(".jobsearch-chat-user-" + _msg.sender_id).find('small').text(formatAMPM(new Date));
945        jQuery(".jobsearch-chat-user-" + _msg.sender_id).find('p').html('');
946        jQuery(".jobsearch-chat-user-" + _msg.sender_id).find('p').append(_small_text);
947    }
948    if (_msg.sender_id == jobsearch_ajchat_vars.current_user) {
949        _admin_message = '<li class="you"><img src="' + _msg.sender_image + '"><div class="jobsearch-chat-user-events"><a href="javascript:void(0)" class="jobsearch-chat-del-message" data-chat-id="' + _msg.last_id + '"><i class="chat-icon chat-trash-fill"></i></a></div><div class="jobsearch-chat-entete-wrapper chat-' + _msg.last_id + '"><p>' + _message + '</p><div class="jobsearch-chat-entete"><h3>' + jobsearch_ajchat_vars.is_today + ' ' + formatAMPM(new Date) + '</h3><a href="javascript:void(0)" class="jobsearch-color jobsearch-chat-seen hidden">' + jobsearch_ajchat_vars.is_seen + '</a></div></div></li>';
950        _front_message = '<li class="conversation-me"><span><img src="' + _msg.sender_image + '" alt=""><div class="jobsearch-chat-user-events"><a href="javascript:void(0)" class="jobsearch-chat-del-message" data-chat-id="' + _msg.last_id + '"><i class="chat-icon chat-trash-fill"></i></a></div></span><div class="jobsearch-chat-list-thumb chat-' + _msg.last_id + '"><p>' + _message + '</p><small class="jobsearch-chat-msg-time">' + jobsearch_ajchat_vars.is_today + ' ' + formatAMPM(new Date) + '</small></div></li>';
951    }
952
953    if (_msg.reciever_id == jobsearch_ajchat_vars.current_user) {
954        playPushSound();
955        _admin_message = '<li class="me">
955<div class="jobsearch-chat-entete-wrapper chat-' + _msg.last_id + '"><p>' + _message + '</p><div class="jobsearch-chat-entete"><h3>' + jobsearch_ajchat_vars.is_today + ' ' + formatAMPM(new Date) + '</h3><a href="javascript:void(0)" class="jobsearch-color jobsearch-chat-seen hidden">' + jobsearch_ajchat_vars.is_seen + '</a></div></div><img src="' + _msg.sender_image + '"><div class="jobsearch-chat-user-events"><a href="javascript:void(0)" class="jobsearch-chat-del-message" data-chat-id="' + _msg.last_id + '"><i class="chat-icon chat-trash-fill"></i></a></div></li>';
956        _front_message = '<li class="conversation-from"><span><img src="' + _msg.sender_image + '" alt=""></span><div class="jobsearch-chat-user-events"><a href="javascript:void(0)" class="jobsearch-chat-del-message" data-chat-id="' + _msg.last_id + '"><i class="chat-icon chat-trash-fill"></i></a></div><div class="jobsearch-chat-list-thumb chat-' + _msg.last_id + '"><p>' + _message + '</p><small class="jobsearch-chat-msg-time">' + jobsearch_ajchat_vars.is_today + ' ' + formatAMPM(new Date) + '</small></div></li>';
957    }
958    //
959    if (_selector.length != 0 && _selector.is(':visible') == true) {
960        if (jobsearch_ajchat_vars.current_user == _msg.reciever_id) {
961            _msg_count_selector_full_view.find(".jobsearch-chat-unread-message").removeClass("hidden");
962            _msg_count_selector_full_view.find(".jobsearch-chat-unread-message").text(data.totl_receiver_msgs);
963        }
964        if (data.chat_msg.logged_in_user != jobsearch_ajchat_vars.current_user) {
965            _selector.last().after(_admin_message);
966        }
967
968    } else {
969        if (jobsearch_ajchat_vars.current_user == _msg.reciever_id) {
970            _msg_count_selector_full_view.find(".jobsearch-chat-unread-message").removeClass("hidden");
971            _msg_count_selector_full_view.find(".jobsearch-chat-unread-message").text(data.totl_receiver_msgs);
972        }
973        if (data.chat_msg.logged_in_user != jobsearch_ajchat_vars.current_user) {
974            jQuery(".user-" + _msg.sender_id + " #chat").append(_admin_message);
975        }
976    }
977    //
978    if (_front_selector.length != 0 && _front_selector.is(':visible') == true) {
979
980        _msg_count_selector_frontend_float.find(".notification-box").removeClass("hidden");
981        _msg_count_selector_frontend_float.find(".notification-count").text(data.totl_receiver_msgs)
982
983        if (_msg.logged_in_user != jobsearch_ajchat_vars.current_user) {
984            _front_selector.last().after(_front_message);
985        }
986    } else {
987
988        _msg_count_selector_frontend_float.find(".notification-box").removeClass("hidden")
989        _msg_count_selector_frontend_float.find(".notification-count").text(data.totl_receiver_msgs)
990
991        if (data.chat_msg.logged_in_user != jobsearch_ajchat_vars.current_user && _front_selector.length != 0) {
992            jQuery(".user-" + _msg.sender_id + " #float-chat").append(_front_message);
993        }
994    }
995    scroll_event(_msg.sender_id)
996});
997//
998presenceChannel.bind('admin-file-share', function (data) {
999
1000    var _selector, _selector_frontend, _html_admin = '', _html = '',
1001        _JOBSEARCH_CHAT_MODULE_UPLOAD_FOLDER_URL = data.file_path,
1002        _msg_count_selector_backend = jQuery(".jobsearch-chat-user-" + data.sender_id),
1003        _msg_count_selector_frontend = jQuery(".user-" + data.sender_id),
1004        _no_message = jQuery(".user-" + data.sender_id + " #jobsearch-chat-no-messages");
1005
1006    if (_no_message.length > 0) {
1007        _no_message.remove();
1008    }
1009
1010    if (jQuery(".jobsearch-chat-users-list").hasClass('hidden') == false) {
1011        jQuery(".jobsearch-chat-users-list ul li").parent().prepend(_msg_count_selector_backend);
1012        _msg_count_selector_backend.slice(1).remove();
1013    }
1014
1015    if (data.sender_id == jobsearch_ajchat_vars.current_user) {
1016
1017        _html_admin = '<li class="you"><img src="' + data.receiver_image + '"><div class="jobsearch-chat-user-events"><a href="javascript:void(0)" class="jobsearch-chat-del-message" data-chat-id="' + data.last_id + '"><i class="chat-icon chat-trash-fill"></i></a></div>
1017<div class="jobsearch-chat-entete-wrapper chat-' + data.last_id + '">';
1018        if (data.file_type == 'file') {
1019            _html_admin += '<p><a href="' + _JOBSEARCH_CHAT_MODULE_UPLOAD_FOLDER_URL + '' + data.message + '"><i class="' + data.file_icon + '"></i>' + data.message + '<br><small>' + data.file_size + ' KB</small></a></p>';
1020        } else {
1021            _html_admin += '<a href="' + _JOBSEARCH_CHAT_MODULE_UPLOAD_FOLDER_URL + '' + data.message + '"><img class="prchat_convertedImage" src="' + _JOBSEARCH_CHAT_MODULE_UPLOAD_FOLDER_URL + '' + data.message + '"></a>';
1022        }
1023        _html_admin += '<div class="jobsearch-chat-entete"><h3>' + jobsearch_ajchat_vars.is_today + ' ' + formatAMPM(new Date) + '</h3><a href="javascript:void(0)" class="jobsearch-color jobsearch-chat-seen hidden">' + jobsearch_ajchat_vars.is_seen + '</a></div></div></li>';
1024        //
1025        _html = '<li class="conversation-me"><span><img src="' + data.sender_image + '"><div class="jobsearch-chat-user-events"><a href="javascript:void(0)" class="jobsearch-chat-del-message" data-chat-id="' + data.last_id + '"><i class="chat-icon chat-trash-fill"></i></a></div></span><div class="jobsearch-chat-list-thumb chat-' + data.last_id + '">';
1026        if (data.file_type == 'file') {
1027            _html += '<p><a href="' + _JOBSEARCH_CHAT_MODULE_UPLOAD_FOLDER_URL + ' ' + data.message + '">' + data.message + '</a></p>';
1028        } else {
1029            _html += '<a href="' + _JOBSEARCH_CHAT_MODULE_UPLOAD_FOLDER_URL + ' ' + data.message + '"><img class="prchat_convertedImage" src="' + _JOBSEARCH_CHAT_MODULE_UPLOAD_FOLDER_URL + '' + data.message + '"></a>';
1030        }
1031
1032        _html += '<small class="jobsearch-chat-msg-time">' + jobsearch_ajchat_vars.is_today + ' ' + formatAMPM(new Date) + '</small></div></li>';
1033        _selector = jQuery(document).find(".user-" + data.reciever_id + " #chat li");
1034        _selector_frontend = jQuery(document).find(".user-" + data.reciever_id + " #float-chat li");
1035    }
1036
1037    if (data.reciever_id == jobsearch_ajchat_vars.current_user) {
1038        //chat full view file
1039        playPushSound();
1040        _html_admin = '<li class="me "><div class="jobsearch-chat-entete-wrapper chat-' + data.last_id + '">';
1041        if (data.file_type == 'file') {
1042
1043            _html_admin += '<p><a href="' + _JOBSEARCH_CHAT_MODULE_UPLOAD_FOLDER_URL + '' + data.message + '"><i class="' + data.file_icon + '"></i>' + data.message + '<br><small>' + data.file_size + ' KB</small></a></p>';
1044        } else {
1045            _html_admin += '<a href="' + _JOBSEARCH_CHAT_MODULE_UPLOAD_FOLDER_URL + '' + data.message + '"><img class="prchat_convertedImage" src="' + _JOBSEARCH_CHAT_MODULE_UPLOAD_FOLDER_URL + '' + data.message + '"></a>';
1046        }
1047        _html_admin += '<div class="jobsearch-chat-entete"><h3>' + jobsearch_ajchat_vars.is_today + ' ' + formatAMPM(new Date) + '</h3><a href="javascript:void(0)" class="jobsearch-color jobsearch-chat-seen hidden">' + jobsearch_ajchat_vars.is_seen + '</a></div></div><img src="' + data.receiver_image + '"><div class="jobsearch-chat-user-events"><a href="javascript:void(0)" class="jobsearch-chat-del-message" data-chat-id="' + data.last_id + '"><i class="chat-icon chat-trash-fill"></i></a></div></li>';
1048        //end chat full view
1049
1050        //floating chat view
1051        _html = '<li class="conversation-from"><span><img src="' + data.receiver_image + '"></span><div class="jobsearch-chat-user-events"><a href="javascript:void(0)" class="jobsearch-chat-del-message" data-chat-id="' + data.last_id + '"><i class="chat-icon chat-trash-fill"></i></a></div><div class="jobsearch-chat-list-thumb chat-' + data.last_id + '">';
1052        if (data.file_type == 'file') {
1053            _html += '<p><a href="' + _JOBSEARCH_CHAT_MODULE_UPLOAD_FOLDER_URL + ' ' + data.message + '">' + data.message + '<a></p>';
1054        } else {
1055            _html += '<a href="' + _JOBSEARCH_CHAT_MODULE_UPLOAD_FOLDER_URL + ' ' + data.message + '"><img class="prchat_convertedImage" src="' + _JOBSEARCH_CHAT_MODULE_UPLOAD_FOLDER_URL + '' + data.message + '"></a>';
1056        }
1057        // floating chat image
1058        _selector = jQuery(document).find(".user-" + data.sender_id + " #chat li");
1059        _selector_frontend = jQuery(document).find(".jobsearch-ch
1059at-tab2.user-" + data.sender_id + " #float-chat li");
1060    }
1061
1062    if (_selector != undefined && _selector.length != 0 && _selector.is(':visible')) {
1063        _msg_count_selector_backend.find(".jobsearch-chat-unread-message").removeClass("hidden");
1064        _msg_count_selector_backend.find(".jobsearch-chat-unread-message").text(data.unread_messages_reciver);
1065        _selector.last().after(_html_admin);
1066    } else if (_selector_frontend != undefined && _selector_frontend.length != 0 && _selector.is(':visible')) {
1067        _msg_count_selector_backend.find(".jobsearch-chat-unread-message").removeClass("hidden");
1068        _msg_count_selector_backend.find(".jobsearch-chat-unread-message").text(data.unread_messages_reciver);
1069        _selector_frontend.last().after(_html);
1070
1071    } else {
1072        _msg_count_selector_frontend.find(".notification-box").removeClass("hidden")
1073        _msg_count_selector_frontend.find(".notification-count").text(data.unread_messages_reciver)
1074        if (data.sender_id == jobsearch_ajchat_vars.current_user) {
1075            jQuery(document).find(".user-" + data.reciever_id + " #chat").append(_html_admin);
1076            jQuery(document).find(".jobsearch-chat-tab2.user-" + data.reciever_id + " #float-chat").append(_html);
1077        }
1078        if (data.reciever_id == jobsearch_ajchat_vars.current_user) {
1079            jQuery(document).find(".user-" + data.sender_id + " #chat").append(_html_admin);
1080            jQuery(document).find(".jobsearch-chat-tab2.user-" + data.sender_id + " #float-chat").append(_html);
1081        }
1082    }
1083    scroll_event(data.sender_id);
1084});
1085presenceChannel.bind('typing-event', function (data) {
1086
1087    if (data.typing == 'true') {
1088        if (data.sender_id != jobsearch_ajchat_vars.current_user) {
1089            jQuery(document).find(".jobsearch-chat-frontend .user-" + data.sender_id + "").find(".jobsearch-chat-user-typing").show();
1090        }
1091        if (data.reciever_id == jobsearch_ajchat_vars.current_user) {
1092            jQuery(document).find(".jobsearch-chat-backend .jobsearch-chat-user-typing").show();
1093        }
1094
1095    } else {
1096        if (data.sender_id != jobsearch_ajchat_vars.current_user) {
1097            jQuery(document).find(".jobsearch-chat-frontend .user-" + data.sender_id + "").find(".jobsearch-chat-user-typing").hide();
1098        }
1099        if (data.reciever_id == jobsearch_ajchat_vars.current_user) {
1100            jQuery(document).find(".jobsearch-chat-backend .jobsearch-chat-user-typing").hide();
1101        }
1102    }
1103});
1104//
1105presenceChannel.bind('del-message', function (data) {
1106    //
1107    var _selector = jQuery(".chat-" + data.chat_id), _html = '<p>' + jobsearch_ajchat_vars.del_full_message + '</p>';
1108    _selector.parent().addClass('jobsearch-chat-is-deleted');
1109    _selector.parent().find('.jobsearch-chat-user-events').remove();
1110    _selector.html("");
1111    _selector.append(_html);
1112});
1113presenceChannel.bind('del-user-friend', function (data) {
1114    if (data.deleted_id == jobsearch_ajchat_vars.current_user) {
1115        jQuery('.jobsearch-chat-front-user-' + data.friend_id + ' , .jobsearch-chat-user-' + data.friend_id + ' , .user-' + data.friend_id).remove();
1116    }
1117});
1118//
1119presenceChannel.bind('add-candidate', function (data) {
1120    if (jobsearch_ajchat_vars.current_user == data.candidate_id) {
1121        jQuery(".jobsearch-chat-list-toggle-view").find('ul li').last().after(data.html)
1122        setTimeout(function () {
1123            location.reload();
1124        }, 2000)
1125    }
1126});
1127
1128presenceChannel.bind('updated-messages', function (data) {
1129    var _selector;
1130    if (data.length != 0) {
1131        jQuery.each(data, function (index, item) {
1132            _selector = jQuery("#chat").find('li .chat-' + item.chat_id).find('.jobsearch-chat-seen');
1133            if (_selector.hasClass('hidden')) {
1134                _selector.removeClass("hidden")
1135            }
1136        });
1137    }
1138});
1139
1140
1141jQuery(document).on("click", ".class" , function(){
1142    jQuery('p').append('<p>this is appand text<p>');
1143});

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.