PageSourceSearch

https://lgcassociates.com/wp-content/plugins/wp-jobsearch/modules/…/js/login-registration.js?ver=7.0.5

js lgcassociates.com collected 2026-10-01 16:32:57 UTC 27,703 bytes, 623 lines download raw bytes

1jQuery(document).ready(function ($) {
2
3    // Login Signup Password Show Hide
4    jQuery('input[name="pt_user_pass"]').siblings('.jobsearch-user-showpass').on('click', function(e){
5        e.preventDefault();
6        var $passwordField = jQuery(this).siblings('input[name="pt_user_pass"]');
7        var fieldType = $passwordField.attr('type');
8        if (fieldType === 'password') {
9            $passwordField.attr('type', 'text');
10            jQuery(this).addClass('jobsearch-user-hidepass');
11        } else {
12            $passwordField.attr('type', 'password');
13            jQuery(this).removeClass('jobsearch-user-hidepass');
14        }
15    });
16
17    // Function to toggle password visibility for confirmation password field
18    jQuery('input[name="pt_user_cpass"]').siblings('.jobsearch-user-showpass').on('click', function(e){
19        e.preventDefault();
20        var $passwordField = jQuery(this).siblings('input[name="pt_user_cpass"]');
21        var fieldType = $passwordField.attr('type');
22        if (fieldType === 'password') {
23            $passwordField.attr('type', 'text');
24            jQuery(this).addClass('jobsearch-user-hidepass');
25        } else {
26            $passwordField.attr('type', 'password');
27            jQuery(this).removeClass('jobsearch-user-hidepass');
28        }
29    });
30
31    // Check if password field has a value on page load
32    jQuery('input[name="pt_user_pass"], input[name="pt_user_cpass"]').on('keyup', function() {
33        var $passwordField = jQuery(this);
34        var $icon = $passwordField.siblings('.jobsearch-user-showpass');
35        if ($passwordField.val().trim() !== '') {
36            $icon.show();
37        } else {
38            $icon.hide();
39        }
40    }).trigger('keyup');
41
42
43
44
45
46    // demo login
47    $(document).on('click', '.jobsearch-demo-login-btn', function () {
48        var _this = jQuery(this);
49        var user_type = 'candidate';
50        var icon_class = 'jobsearch-icon jobsearch-user';
51        if (_this.hasClass('employer-login-btn')) {
52            user_type = 'employer';
53            icon_class = 'jobsearch-icon jobsearch-building';
54        }
55
56        _this.find('i').attr('class', 'fa fa-refresh fa-spin');
57
58        var request = $.ajax({
59            url: jobsearch_login_register_common_vars.ajax_url,
60            method: "POST",
61            data: {
62                'user_type': user_type,
63                '_nonce': jobsearch_comon_script_vars.nonce,
64                'action': 'jobsearch_demo_user_login',
65            },
66            dataType: "json"
67        });
68        request.done(function (response) {
69            if (typeof response.redirect !== 'undefined') {
70                window.location.href = response.redirect;
71                return false;
72            }
73            window.location.reload(true);
74        });
75
76        request.fail(function (jqXHR, textStatus) {
77            _this.find('i').attr('class', icon_class);
78        });
79    });
80
81    // Post login form
82    $(document).on('click', '.jobsearch-login-submit-btn', function (e) {
83        e.preventDefault();
84        var _this = $(this),
85                this_id = $(this).data('id'),
86                login_form = $('#login-form-' + this_id),
87                msg_con = login_form.find('.login-reg-errors'),
88                loader_con = login_form.find('.form-loader');
89        var button = $(this).find('button');
90        var btn_html = button.html();
91        msg_con.hide();
92        _this.addClass('disabled-btn');
93        _this.attr('disabled', 'disabled');
94        //button.html('loading');
95        loader_con.show();
96        loader_con.html('<i class="fa fa-refresh fa-spin"></i>');
97        $.post(jobsearch_login_register_common_vars.ajax_url, login_form.serialize(), function (data) {
98
99            var obj = $.parseJSON(data);
100            msg_con.html(obj.message);
101
102            loader_con.hide();
103            loader_con.html('');
104            _this.removeClass('disabled-btn');
105            _this.removeAttr('disabled');
106            msg_con.slideDown('slow');
107            if (obj.error == false) {
108                // $('#pt-user-modal .modal-dialog').addClass('loading');
109                //window.location.reload(true);
110                if (typeof obj.redirect !== 'undefined') {
111                    window.location.href = obj.redirect;
112                }
113                button.hide();
114            }
115
116            button.html(btn_html);
117        });
118    });
119    // end login post
120
121    // Reset Password
122    // Switch forms login/register
123    $(document).on('click', '.lost-password', function (e) {
124        e.preventDefault();
125        var this_id = $(this).data('id');
126        $('.login-form-' + this_id).slideUp();
127        $('.reset-password-' + this_id).slideDown();
128    });
129    $(document).on('click', '.login-form-btn', function (e) {
130        e.preventDefault();
131        var this_id = $(this).data('id');
132        $('.login-form-' + this_id).slideDown();
133        $('.reset-password-' + this_id).slideUp();
134    });
135    $(document).on('click', '.register-form', function (e) {
136        e.preventDefault();
137        var login_form = jQuery('#JobSearchModalLogin').find('form[id^="login-form-"]');
138        var rgistr_form = jQuery('#JobSearchModalLogin').find('form[id^="registration-form-"]');
139        var this_id = $(this).data('id');
140        $('.reset-password-' + this_id).slideUp();
141        $('.register-' + this_id).slideDown();
142        $('.login-form-' + this_id).slideUp();
143        
144        // for redirect url
145        var redrct_hiden_field = login_form.find('input[name="jobsearch_wredirct_url"]');
146        if (redrct_hiden_field.length > 0) {
147            var redrct_hiden_val = redrct_hiden_field.val();
148            rgistr_form.append('<input type="hidden" name="jobsearch_wredirct_url" value="' + redrct_hiden_val + '">');
149            if (rgistr_form.find('input[name="jobsearch_job_id"]').length == 0) {
150                var form_job_id = rgistr_form.attr('data-jid');
151                rgistr_form.append('<input type="hidden" name="jobsearch_job_id" value="' + form_job_id + '">');
152            }
153            redrct_hiden_field.remove();
154        }
155
156        // for packages
157        var pkginfo_hiden_field = login_form.find('input[name="extra_login_params"]');
158        if (pkginfo_hiden_field.length > 0) {
159            var pkginfo_hiden_val = pkginfo_hiden_field.val();
160            rgistr_form.append('<input type="hidden" name="extra_login_params" value="' + pkginfo_hiden_val + '">');
161            pkginfo_hiden_field.remove();
162        }
163    });
164    $(document).on('click', '.reg-tologin-btn', function (e) {
165        e.preventDefault();
166        var login_form = jQuery('#JobSearchModalLogin').find('form[id^="login-form-"]');
167        var rgistr_form = jQuery('#JobSearchModalLogin').find('form[id^="registration-form-"]');
168        var this_id = $(this).data('id');
169        $('.reset-password-' + this_id).slideUp();
170        $('.register-' + this_id).slideUp();
171        $('.login-form-' + this_id).slideDown();
172        
173        // for redirect url
174        var redrct_hiden_field = rgistr_form.find('input[name="jobsearch_wredirct_url"]');
175        if (redrct_hiden_field.length > 0) {
176            var redrct_hiden_val = redrct_hiden_field.val();
177            login_form.append('<input type="hidden" name="jobsearch_wredirct_url" value="' + redrct_hiden_val + '">');
178            redrct_hiden_field.remove();
179        }
180
181        // for packages
182        var pkginfo_hiden_field = rgistr_form.find('input[name="extra_login_params"]');
183        if (pkginfo_hiden_field.length > 0) {
184            var pkginfo_hiden_val = pkginfo_hiden_field.val();
185            login_form.append('<input type="hidden" name="extra_login_params" value="' + pkginfo_hiden_val + '">');
186            pkginfo_hiden_field.remove();
187        }
188    });
189
190    $(document).on('click', '.user-type-chose-btn', function () {
191        var this_type = $(this).attr('data-type');
192        if (this_type != 'jobsearch_employer' && this_type != 'jobsearch_candidate') {
193            $('.user-candidate-spec-field').slideUp();
194            $('.user-employer-spec-field').slideUp();
195            $('.employer-cus-field').slideUp();
196            $('.candidate-cus-field').slideUp();
197            
198            $('.' + this_type + '-spec-field').slideDown();
199        } else {
200            if (this_type == 'jobsearch_employer') {
201                $('.user-candidate-spec-field').slideUp();
202                $('.user-employer-spec-field').slideDown();
203                $('.employer-cus-field').slideDown();
204                $('.candidate-cus-field').slideUp();
205                
206                $('.jobsearch_recruiter-spec-field').slideUp();
207                
208                $('.jobsearch-register-form').find('.jobsearch-box-title-sub').slideUp();
209                $('.jobsearch-register-form').find('.jobsearch-login-media').slideUp();
210            } else {
211                $('.user-candidate-spec-field').slideDown();
212                $('.user-employer-spec-field').slideUp();
213                $('.employer-cus-field').slide
213Up();
214                $('.candidate-cus-field').slideDown();
215                
216                $('.jobsearch_recruiter-spec-field').slideUp();
217                
218                $('.jobsearch-register-form').find('.jobsearch-box-title-sub').slideDown();
219                $('.jobsearch-register-form').find('.jobsearch-login-media').slideDown();
220            }
221        }
222        $(this).parents('.jobsearch-user-type-choose').find('li').removeClass('active');
223        $(this).parent('li').addClass('active');
224        $(this).parents('form').find('input[name="pt_user_role"]').val(this_type);
225    });
226
227    $(document).on('change', 'input[type="radio"][name="pt_user_role"], select[name="pt_user_role"]', function () {
228        var this_type = $(this).val();
229        if (this_type != 'jobsearch_employer' && this_type != 'jobsearch_candidate') {
230            $('.user-candidate-spec-field').slideUp();
231            $('.user-employer-spec-field').slideUp();
232            $('.employer-cus-field').slideUp();
233            $('.candidate-cus-field').slide
233Up();
234            
235            $('.' + this_type + '-spec-field').slideDown();
236        } else {
237            if (this_type == 'jobsearch_employer') {
238                $('.user-candidate-spec-field').slideUp();
239                $('.user-employer-spec-field').slideDown();
240                $('.employer-cus-field').slideDown();
241                $('.candidate-cus-field').slideUp();
242                $('.jobsearch_recruiter-spec-field').slideUp();
243            } else {
244                $('.user-candidate-spec-field').slideDown();
245                $('.user-employer-spec-field').slideUp();
246                $('.employer-cus-field').slideUp();
247                $('.candidate-cus-field').slideDown();
248                $('.jobsearch_recruiter-spec-field').slideUp();
249            }
250        }
251    });
252
253    $(document).on('click', '.jobsearch-reset-password-submit-btn', function (e) {
254        e.preventDefault();
255        var _this = $(this),
256                this_id = $(this).data('id'),
257                reset_password_form = $('#reset-password-form-' + this_id),
258                msg_con = reset_password_form.find('.reset-password-errors'),
259                loader_con = reset_password_form.find('.form-loader');
260        var button = $(this).find('button');
261        var btn_html = button.html();
262        //button.html('loading');
263        msg_con.hide();
264        _this.addClass('disabled-btn');
265        _this.attr('disabled', 'disabled');
266        loader_con.show();
267        loader_con.html('<i class="fa fa-refresh fa-spin"></i>');
268        
269        var reset_password_form_o = $('#reset-password-form-' + this_id)[0];
270        var formData = new FormData(reset_password_form_o);
271        formData.append('_nonce', jobsearch_comon_script_vars.nonce);
272        var request = $.ajax({
273            url: jobsearch_login_register_common_vars.ajax_url,
274            method: "POST",
275            processData: false,
276            contentType: false,
277            data: formData,
278            dataType: "json"
279        });
280        request.done(function (response) {
281            msg_con.html(response.message);
282
283            msg_con.slideDown('slow');
284
285            _this.removeClass('disabled-btn');
286            _this.removeAttr('disabled');
287
288            loader_con.hide();
289            loader_con.html('');
290
291            button.html(btn_html);
292        });
293        request.fail(function (jqXHR, textStatus) {
294            _this.removeClass('disabled-btn');
295            _this.removeAttr('disabled');
296            loader_con.hide();
297            loader_con.html('');
298        });
299    });
300    // end reset password
301
302    // Post register form
303    $(document).on('click', '.jobsearch-register-submit-btn', function (e) {
304        e.preventDefault();
305        var _this = $(this),
306                this_id = $(this).data('id'),
307                registration_form = $('#registration-form-' + this_id),
308                msg_con = registration_form.find('.registration-errors'),
309                loader_con = registration_form.find('.form-loader');
310               
311        var reg_user_role = 'jobsearch_candidate';
312        var user_role_con = registration_form.find('input[name=pt_user_role]');
313        if (user_role_con.attr('type') == 'radio') {
314            reg_user_role = registration_form.find('input[name=pt_user_role]:checked').val();
315        } else {
316            reg_user_role = user_role_con.val();
317        }
318
319        if (registration_form.find('input[class="jobsearch-check-userph-check"]').length > 0) {
320            if (typeof confirmationResult === 'undefined') {
321                return false;
322            }
323        }
324        
325        var _form_error = false;
326        
327        var form_req_fields = registration_form.find('.jobsearch-regrequire-field');
328        if (form_req_fields.length > 0) {
329            jQuery.each(form_req_fields, function () {
330                var _this_obj = jQuery(this);
331                if (typeof _this_obj.attr('name') !== undefined && _this_obj.attr('name') != '' && _this_obj.attr('name') != 'undefined' && !_this_obj.hasClass('selectize-control') && !_this_obj.hasClass('selectize-dropdown')) {
332                    var field_type = 'text';
333                    if (_this_obj.parent('.jobsearch-profile-select').length > 0) {
334                        field_type = 'select';
335                    }
336                    if (_this_obj.attr('type') == 'checkbox' || _this_obj.attr('type') == 'radio') {
337                        var chek_field_name = _this_obj.attr('name');
338                        if ((jQuery('input[name="' + chek_field_name + '"]:checked').length) <= 0) {
339                            _form_error = true;
340                            _this_obj.parents('.jobsearch-cusfield-checkbox').css({"border": "1p
340x solid #ff0000"});
341                        } else {
342                            _this_obj.parents('.jobsearch-cusfield-checkbox').css({"border": "none"});
343                        }
344                    } else {
345                        if (_this_obj.val() == '' || _this_obj.val() === null) {
346                            if (field_type == 'select') {
347                                if (_this_obj.parents('li').is(':visible')) {
348                                    _form_error = true;
349                                    _this_obj.parent('.jobsearch-profile-select').css({"border": "1px solid #ff0000"});
350                                }
351                            } else {
352                                if (_this_obj.parents('li').is(':visible')) {
353                                    _form_error = true;
354                                    _this_obj.css({"border": "1px solid #ff0000"});
355                                }
356                            }
357                        } else {
358                            if (field_type == 'select') {
359                                _this_obj.parent('.jobsearch-profile-select').css({"border": "none"});
360                            } else {
361                                if (!_this_obj.hasClass('phone-input-error')) {
362                                    _this_obj.css({"border": "1px solid #efefef"});
363                                }
364                            }
365                        }
366                    }
367                }
368            });
369        }
370        var req_li_fields = registration_form.find('.regrequire-field-li');
371        if (req_li_fields.length > 0) {
372            jQuery.each(req_li_fields, function () {
373                var _this_li = jQuery(this);
374                var _this_obj = _this_li.find('input[type="text"],select');
375                if (typeof _this_obj.attr('name') !== undefined && _this_obj.attr('name') != '' && _this_obj.attr('name') != 'undefined' && !_this_obj.hasClass('selectize-control') && !_this_obj.hasClass('selectize-dropdown')) {
376                    var field_type = 'text';
377                    if (_this_obj.parent('.jobsearch-profile-select').length > 0) {
378                        field_type = 'select';
379                    }
380                    if (_this_obj.val() == '' || _this_obj.val() === null) {
381                        if (field_type == 'select') {
382                            if (_this_obj.parents('li').is(':visible')) {
383                                _form_error = true;
384                                _this_obj.parent('.jobsearch-profile-select').css({"border": "1px solid #ff0000"});
385                            }
386                        } else {
387                            if (_this_obj.parents('li').is(':visible')) {
388                                _form_error = true;
389                                _this_obj.css({"border": "1px solid #ff0000"});
390                            }
391                        }
392                    } else {
393                        if (field_type == 'select') {
394                            _this_obj.parent('.jobsearch-profile-select').css({"border": "none"});
395                        } else {
396                            if (!_this_obj.hasClass('phone-input-error')) {
397                                _this_obj.css({"border": "1px solid #efefef"});
398                            }
399                        }
400                    }
401                }
402            });
403        }
404        
405        var user_email = registration_form.find('input[name=pt_user_email]');
406        
407        var cv_file = registration_form.find('input[name="candidate_cv_file"]');
408        
409        if (cv_file.length > 0 && cv_file.val() == '' && cv_file.hasClass('cv_is_req') && reg_user_role == 'jobsearch_candidate') {
410            _form_error = true;
411            jQuery('#jobsearch-upload-cv-main' + this_id).css({"border": "1px solid #ff0000"});
412        } else {
413            jQuery('#jobsearch-upload-cv-main' + this_id).css({"border": "none"});
414        }
415        
416        if (!_form_error) {
417
418            var user_phone = registration_form.find('input[name="pt_user_phone"]');
419
420            var get_terr_val = jobsearch_accept_terms_cond_pop(registration_form);
421            if (get_terr_val != 'yes') {
422                return false;
423            }
424            
425            if (registration_form.find('.other-conds-con').length > 0) {
426                var other_func = registration_form.find('.other-conds-con').attr('data-key');
427                if (!jobsearch_js_call_user_func(other_func, [_this])) {
428                    return false;
429                }
430            }
431
432            var error = 0;
433            //
434            if (user_phone.hasClass('phone-input-error')) {
435                jQuery('.phone-input-error').css({"border": "1px solid #ff0000"});
436                error = 1;
437            }
438
439            if (error == 0) {
440                var button = $(this).find('button');
441                var btn_html = button.html();
442                //button.html('loading');
443                msg_con.hide();
444                _this.addClass('disabled-btn');
445                _this.attr('disabled', 'disabled');
446                loader_con.show();
447                loader_con.html('<i class="fa fa-refresh fa-spin"></i>');
448                //var form_data = registration_form.serialize();
449                var reg_ser_form = $('#registration-form-' + this_id)[0];
450                var formData = new FormData(reg_ser_form);
451
452                var request = $.ajax({
453                    url: jobsearch_login_register_common_vars.ajax_url,
454                    method: "POST",
455                    processData: false,
456                    contentType: false,
457                    data: formData,
458                    dataType: "json"
459                });
460                request.done(function (response) {
461                    if (typeof response.message !== 'undefined') {
462                        msg_con.html(response.message);
463                        msg_con.slideDown('slow');
464                        button.html(btn_html);
465                        _this.removeClass('disabled-btn');
466                        _this.removeAttr('disabled');
467
468                        if (typeof response.error !== 'undefined' && response.error == true) {
469                            loader_con.hide();
470                            loader_con.html('');
471                            return false;
472                        }
473
474                        if (typeof response.redirect !== 'undefined') {
475                            window.location.href = response.redirect;
476                        } else {
477                            if (typeof response.email_auth !== 'undefined' && response.email_auth == '1') {
478                                var closePopOpnVrify = setInterval(function() {
479                                    loader_con.html('');
480                                    jQuery('.jobsearch-modal').removeClass('fade-in').addClass('fade');
481                                    jQuery('body').removeClass('jobsearch-modal-active');
482                                    jQuery('#JobSearchModalAccountActivationForm').find('input[name="user_email"]').val(user_email.val());
483                                    jQuery('#JobSearchModalAccountActivationForm').find('input[name="user_email"]').attr('value', user_email.val());
484                                    jobsearch_modal_popup_open('JobSearchModalAccountActivationForm');
485                                    clearInterval(closePopOpnVrify);
486                                }, 2000);
487                            } else {
488                                loader_con.html('');
489                            }
490                        }
491                    }
492                });
493                request.fail(function (jqXHR, textStatus) {
494                    _this.removeClass('disabled-btn');
495                    _this.removeAttr('disabled');
496                    loader_con.hide();
497                    loader_con.html('');
498                });
499            }
500        }
501    });
502});
503
504jQuery(document).on('click', '.jobsearch-resend-accactbtn', function (e) {
505    e.preventDefault();
506    var _this = jQuery(this);
507    var user_login = _this.attr('data-login');
508    _this.find('i').remove();
509    var _this_html = _this.html();
510    //
511    var thisemail_err_con = _this.parents('.login-reg-errors').find('.email-exceed-err');
512    thisemail_err_con.hide();
513    //
514    _this.html(_this_html + '<i class="fa fa-refresh fa-spin"></i>');
515    var request = jQuery.ajax({
516        url: jobsearch_plugin_vars.ajax_url,
517        method: "POST",
518        data: {
519            user_login: user_login,
520            _nonce: jobsearch_comon_script_vars.nonce,
521            action: 'jobsearch_resend_user_acc_approval_email',
522        },
523        dataType: "json"
524    });
525
526    request.done(function (response) {
527        if (typeof response.success !== 'undefined' && response.success == '1') {
528            _this.html(_this_html + '<i class="fa fa-check"></i>');
529            window.location.reload(true);
530        } else {
531            _this.html(_this_html + '<i class="fa fa-times"></i>');
532            if (thisemail_err_con.length > 0) {
533                thisemail_err_con.html(response.msg);
534            } else {
535                _this.parents('.login-reg-errors').append('<div class="alert alert-danger email-exceed-err">' + response.msg + '</div>');
536            }
537            thisemail_err_con.removeAttr('style');
538        }
539    });
540
541    request.fail(function (jqXHR, textStatus) {
542        _this.html(_this_html + '<i class="fa fa-times"></i>');
543    });
544});
545
546jQuery(document).on('click', '.user-passreset-submit-btn', function (e) {
547    e.preventDefault();
548    var _this = jQuery(this);
549    var _user_id = _this.attr('data-id');
550    var _user_key = _this.attr('data-key');
551
552    var this_form = _this.parents('form');
553    var this_loader = this_form.find('.loader-box');
554    var this_msg_con = this_form.find('.message-box');
555
556    var new_pass = this_form.find('input[name="new_pass"]');
557    var conf_pass = this_form.find('input[name="conf_pass"]');
558    var password_nonce = this_form.find('input[name="password_nonce"]');
559    
560    var error = 0;
561    if (new_pass.val() == '') {
562        error = 1;
563        new_pass.css({"border": "1px solid #ff0000"});
564    } else {
565        new_pass.css({"border": "1px solid #d3dade"});
566    }
567    if (conf_pass.val() == '') {
568        error = 1;
569        conf_pass.css({"border": "1px solid #ff0000"});
570    } else {
571        conf_pass.css({"border": "1px solid #d3dade"});
572    }
573
574    if (error == 0) {
575
576        this_msg_con.hide();
577        this_loader.html('<i class="fa fa-refresh fa-spin"></i>');
578        var request = jQuery.ajax({
579            url: jobsearch_plugin_vars.ajax_url,
580            method: "POST",
581            data: {
582                user_id: _user_id,
583                user_key: _user_key,
584                new_pass: new_pass.val(),
585                conf_pass: conf_pass.val(),
586                password_nonce: password_nonce.val(),
587                action: 'jobsearch_pass_reseting_by_redirect_url',
588            },
589            dataType: "json"
590        });
591
592        request.done(function (response) {
593            var msg_before = '';
594            var msg_after = '';
595            if (typeof response.error !== 'undefined') {
596                if (response.error == '1') {
597                    msg_before = '<div class="alert alert-danger"><i class="fa fa-times"></i>';
598                    msg_after = '</div>';
599                } else if (response.error == '0') {
600                    msg_before = '<div class="alert alert-success"><i class="fa fa-check"></i>';
601                    msg_after = '</div>';
602                }
603            }
604            if (typeof response.msg !== 'undefined') {
605                this_msg_con.html(msg_before + response.msg + msg_after);
606                this_msg_con.slideDown();
607                if (typeof response.error !== 'undefined' && response.error == '0') {
608                    new_pass.val('');
609                    conf_pass.val('');
610                    this_form.find('ul.email-fields-list').slideUp();
611                }
612            } else {
613                this_msg_con.html(jobsearch_plugin_vars.error_msg);
614            }
615            this_loader.html('');
616
617        });
618
619        request.fail(function (jqXHR, textStatus) {
620            this_loader.html(jobsearch_plugin_vars.error_msg);
621        });
622    }
623});

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.