PageSourceSearch

https://s.mihnati.com/c/js/cmn.js?ver=20260929135133

js mihnati.com collected 2026-10-02 02:33:01 UTC 75,558 bytes, 2,060 lines download raw bytes

1var spinner = '<div class="spinner"></div>';
2var spin = '<div class="spinner-wrapper-gray loading center-block spinner_loader spnSeeMore" id="spinChngeUsr">'
3        + spinner;
4+'</div>';
5// Central Spinner HTML
6var spinnerHTML = '<div style="text-align:center;  margin-bottom:20px;">'
7        + '<div class="spinner-wrapper-gray loading center-block spinner_loader spnSeeMore" id="spinChngeUsr">'
8        + '<div class="spinner"></div>'
9        + '</div></div>';
10function trackAdwordsConv(google_conversion_id, google_conversion_label)
11{
12    var image = new Image(1, 1);
13    image.src = "//www.googleadservices.com/pagead/conversion/" + google_conversion_id + "/?label=" + google_conversion_label;
14}
15function ajx(method, param, path, dataType, cb) {
16
17    if (dataType == '')
18        dataType = 'json';
19    $.ajax({
20        url: ajax_url + path,
21        async: true,
22        type: method,
23        data: param,
24        dataType: dataType,
25        headers: {
26            //'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
27        },
28        success: cb,
29        error: function (resp) {
30            log(resp);
31        }
32
33    });
34}
35
36function log(obj) {
37    console.log(obj);
38}
39
40function selOpt(oln, ListVal)
41{
42    for (i = 0; i < oln.length; i++)
43    {
44        if (oln.options[i].value == ListVal)
45        {
46            oln.selectedIndex = i;
47            break;
48        }
49    }
50}
51
52function verifyEmail() {
53
54    var field = $("#email");
55    var spinner = $("#emailSpiner");
56    var params = {};
57    params.email = field.val();
58    spinner.attr("style", "display:block!important");
59    ajx('POST', params, 'user/verifyemail', '', function (resp) {
60        //alert(resp.response);
61        spinner.attr("style", "");
62        if (resp.response == 11) {
63            p_screen();
64            return true;
65        } else {
66            $('.merror').text(resp.response);
67            field.addClass("merror");
68            return false;
69        }
70    });
71}
72
73function loadCaptcha(fromPage) {
74    var captchaContainer = null;
75    captchaContainer = grecaptcha.render('captchaContainer', {
76        'sitekey': '6LdTBRUTAAAAAJfuZIS-4yMBHOgaY0yu-VigaxY3',
77        'callback': function (response) {
78            if (fromPage == 'signIn') {
79                $('#googleCaptcha').val(response);
80                return;
81            }
82            if (fromPage == 'savePAQueryData') {
83                $('#googleCaptchaQueryData').val(response);
84                $('.captchaModal').modal('toggle');
85                savePAQueryData();
86            }
87            if (fromPage == 'savePACallData') {
88                $('#googleCaptchaCallData').val(response);
89                $('.captchaModal').modal('toggle');
90                savePACallData();
91            }
92        },
93    });
94}
95
96function refreshRzTkn() {
97    var params = {};
98    ajx('GET', params, 'user/refreshtkn', '', function (resp) {
99        log(resp);
100        if (typeof resp.rzTkn !== 'undefined') {
101            $('#rzTkn').val(resp.rzTkn);
102        }
103    });
104}
105
106function signIn(confirm) { // from mihnati
107    var validator = $('#login-form').validate();
108    var validation = validator.form();
109    if (validation === false) {
110        //return Notify.info(msg_form_warning,{displayDuration:10000});
111        return commonAlert('warning', msg_form_warning, '', 'message');
112    }
113    $('#login-form .loading').show();
114    $('#messageContainer').html('');
115    $('#login-form .btn-default').hide();
116    //commonAlert('warning', msg_plz_wait);
117    // Notify.info(msg_plz_wait,{displayDuration:0});
118    var params = {};
119    let email = $('#login-form #_email').val();
120    if (typeof email == 'undefined') {
121        email = $("#login-form #email").val();
122    }
123    params.email = email;
124    params.pwd = $('#login-form #pwd').val();
125    params.rzTkn = $('#rzTkn').val();
126    var gCaptcha = $('#googleCaptcha').val();
127    if (gCaptcha != null && gCaptcha != '') {
128        params.gCaptcha = gCaptcha;
129    }
130    if (typeof confirm !== 'undefined') {
131        params.goAheadCall = confirm;
132        params.token = $('#token').val();
133    }
134    $.ajax({
135        url: ajax_url + 'user/login',
136        type: 'POST',
137        data: params,
138        dataType: 'json',
139        headers: {
140            //'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
141        },
142        success: function (resp) {
143            //console.log('========> '+typeof resp, resp);
144            if (typeof resp.status !== 'undefined' && resp.status === false) {
145                commonAlert('danger', resp.response, '', 'messageContainer');
146            }
147            if (typeof resp.captcha !== 'undefined') {
148                if (resp.captcha == 'loadCaptcha') {
149                    $('#captchaContainer').html('');
150                    $('#login-form .loading').hide();
151                    $('.btn-default').show();
152                    try {
153                        loadCaptcha('signIn');
154                    } catch (err) {
155                        grecaptcha.reset();
156                    }
157                }
158            }
159            if (typeof resp.code !== 'undefined' && resp.code === 121) {
160                $('#token').val(resp.token);
161                $('#rzTkn').val(resp.rzTkn);
162                bootbox.confirm({
163                    title: msg_duplicateLogin,
164                    message: "<h5>" + resp.message + "</h5>",
165                    //className: 'confirmLoginProceed',
166                    buttons: {
167                        confirm: {
168                            label: msg_continuelogin_btn,
169                            className: 'btn-success'
170                        },
171                        cancel: {
172                            label: msg_cancel_btn,
173                            className: 'btn-danger'
174                        }
175                    },
176                    callback: function (result) {
177                        //console.log('This was logged in the callback: ' + result);
178                        if (result) {
179                            signIn('Y');
180                        } else {
181                            $('#login-form .loading').hide();
182                            $('.btn-default').show();
183                        }
184                    }
185                });
186                return;
187            }
188            if (typeof resp.data !== 'undefined') {
189                window.location.href = (typeof resp.url === 'undefined') ? site_url + 'dashboard' : resp.url;
190                return;
191            }
192            if (resp.response == 11) {
193                window.location.href = site_url + 'dashboard';
194            } else if (resp.response == 'TknMisMatch') {
195                $('#rzTkn').val(resp.rzTkn);
196                //  Notify.info('Sorry, Token mismatch. Please try again.',{displayDuration:10000});
197                $('#login-form .loading').hide();
198                $('.btn-default').show();
199                commonAlert('danger', 'Something went wrong. Please try again.', '', 'messageContainer');
200                return false;
201            } else if (resp.response == 'N') {
202                window.location.href = site_url + 'register/verifyregister/?email=' + resp.email;
203            } else {
204                // Notify.info(resp.response,{displayDuration:10000});
205                $('#login-form .loading').hide();
206                $('.btn-default').show();
207                commonAlert('danger', resp.response, '', 'messageContainer');
208                $('#rzTkn').val(resp.rzTkn);
209                $('.merror').text(resp.response);
210                return false;
211            }
212        },
213        error: function (resp) {
214            log(resp);
215        }
216
217    });
218}
219
220function register(token) {
221
222    $('#btnContinue').hide();
223    $('#wait').css("display", "block");
224
225    var params = {};
226    params = $('#registerFrom').serialize();
227    params += '&userJetonRecaptcha=' + token;
228
229    ajx('POST', params, 'user/register', '', function (res) {
230
231
232        if (res.msg == "") {
233            (window.dataLayer = window.dataLayer || []).push({'event': 'sign_up_success', 'method': 'register'});
234            if (typeof fbq == 'function') { // if fbq is defined i.e. fbevents is loaded
235                fbq('track', 'CompleteRegistration', {
236                    RegisterStep: 1
237                });
238            }
239            var response = "register/signupquestions";
240            window.location.href = site_url + response;
241        }
242//        else if (res.msg == "CV exists") {
243//            $('.fieldc:last').find('ul.merror').remove();
244//            $('#btnContinue').show();
245//            $('#wait').css("display", "none");
246//            alert(res.response);
247//            return false;
248//        }
249        else {
250            $('#btnContinue').show();
251            $('#wait').css("display", "none");
252
253            $('.fieldc:last').find('ul.merror').remove();
254            var ul = $('.fieldc:last').append('<ul class="merror mt10 s-24"></ul>').find('ul.merror');
255            if (res.status === false) {
256                $.each(res.response, function (field, message) {
257                    ul.append('<li>' + message + '</li>');
258                });
259            } else {
260                ul.append('<li>' + res.response + '</li>');
261            }
262            setTimeout(function () {
263                $('.fieldc:last').find('ul.merror').remove();
264            }, 5000);
265        }
266        if (typeof grecaptcha == 'object') { // if grecaptcha is defined i.e. recaptcha is loaded
267            grecaptcha.reset();
268        }
269    });
270}
271
272function saveDropCv() {
273    
274    var redirectTo = seeker_url + 'dashboard';
275    $('#dropCvBtn').hide();
276    $('#wait').show();
277    var params = {};
278
279    var formData = $("#dropCvForm").serialize();
280    var params = { formData: formData };
281    
282    ajx('POST', params, 'job/dropcv1','', function (res) {
283        if (res.status === true) {
284            $('.alertdiv').show();
285            $('.alertdiv').html(res.message);
286             $('#wait').hide();
287           setTimeout(function () {
288                    window.location = redirectTo;
289                }, 15000);
290        }
291        else
292        {  $('.alertdiv').show();
293           $('.alertdiv').html(res.message);
294           $('#wait').hide();
295           $('#dropCvBtn').show();
296           
297        }
298       
299    });
300}
301
302 
303
304function registerStep2() {
305    $('#btnFinish').hide();
306    $('#wait').css("display", "block");
307    var params = {};
308    params = $('#registerFrom2').serialize();
309    ajx('POST', params, 'user/registerstep2', '', function (res) {
310        if (res.status == true) {
311            if (typeof fbq == 'function') { // if fbq is defined i.e. fbevents is loaded
312                fbq('track', 'CompleteRegistration', {
313                    RegisterStep: 2
314                });
315            }
316            //window.location.href = site_url + "home/verifyregister/?email=" + res.email + "&linkedin=" + res.linkedin;
317            window.location.href = site_url + "register/verifyregister";
318
319        } else if (res.status == false) {
320            $('#btnFinish').show();
321            $('#wait').css("display", "none");
322            $('.fieldc:last').find('ul.merror').remove();
323            var ul = $('.fieldc:last').append('<ul class="merror mt10 s-24"></ul>').find('ul.merror');
324            $.each(res.response, function (field, message) {
325                ul.append('<li>' + message + '</li>');
326            });
327
328            setTimeout(function () {
329                $('.fieldc:last').find('ul.merror').remove();
330            }, 5000);
331            return false;
332            // alert(res.msg);
333            //return false;
334        } else {
335            window.location.href = site_url + "login/";
336        }
337
338    });
339}
340
341function emailExist() {
342
343    $("#emailSp").attr("style", "display:block !important");
344    var params = {};
345    params.email = $('#email').val();
346    ajx('POST', params, 'user/emailExists', 'html', function (res) {
347
348        $("#emailSp").attr("style", "");
349        if (res != '') {
350            $("#sign-up #your_email").find("div.merror").text(res);
351            $('#email').focus();
352            return true;
353        } else {
354            MovetoNext(true);
355        }
356    });
357}
358function mobCode() {
359
360    var params = {};
361    params.cCode = $('#countryCode').val();
362    ajx('POST', params, 'site/mobileCodes', 'html', function (res) {
363        console.log(res);
364        if (res == '') {
365            $('#mobCdDiv ').hide();
366            $('#mobileCode').find('option').remove();
367            $('#mobCdDiv select').attr("data-validate", "0");
368            $('#mobile').attr("maxlength", 10);
369            $(".merror").html("");
370        } else
371        {
372            $('#mobCdDiv select').attr("data-validate", "1");
373            $('#ldMcDiv').html(res);
374            $('#mobCdDiv').show();
375            $('#mobileCode').selectpicker();
376
377            $('#mobile').attr("maxlength", 7);
378            $(".merror").html("");
379        }
380    });
381}
382
383function forgetPwdEmail(token) {
384    var validator = $('#login-form').validate();
385    var validation = validator.form();
386    //console.log('test', validation);
387    if (validation === false) {
388        return; //commonAlert('warning', msg_form_warning);
389    }
390    var params = {};
391    params.emailAddress = $('#email').val();
392    if (typeof grecaptcha == 'object') { // if grecaptcha is defined i.e. recaptcha is loaded
393        params.userJetonRecaptcha = token;
394    }
395    ajx('POST', params, 'user/forgetpwd', '', function (resp) {
396        commonAlert('info', resp.response);
397        $('.mdt').text(resp.response);
398        $('#email').val('');
399        return false;
400    });
401}
402
403$(document).ready(function () {
404    // Open Login Model Window
405    var hashValue = window.location.hash;
406    if (hashValue == "#login") {
407        //console.log('test');
408        $('#login').trigger('click');
409    }
410    // Open Signup Model Window
411    if (hashValue == "#register") {
412        $('#signup').trigger('click');
413    }
414});
415
416function xhrRequest(url, type, data, successCallback, returnType = '') {
417    if(typeof rzTkn != 'undefined') {
418        data.rzTkn = rzTkn;
419    }
420    $.ajax({
421        url: url,
422        type: type,
423        data: data,
424        headers: {
425            //'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
426        }
427    })
428            .done(function (response) {
429                if (returnType == 'jsosn') {
430                    response = JSON.parse(response);
431                }
432                return successCallback(response);
433            })
434            .fail(function (res) {
435
436                try {
437                    if (typeof grecaptcha == 'object') { // if grecaptcha is defined i.e. recaptcha is loaded
438                        grecaptcha.reset();
439                    }
440                } catch (e) {
441
442                }
443
444            });
445}
446
447
448$(document).delegate('#s4', 'click', function () {
449    if (this.checked) {
450        $('#showMobArea').css('display', 'block');
451    } else {
452        $('#showMobArea').css('display', 'none');
453    }
454});
455$(document).delegate('#searchFacetBtn', 'click', function () {
456    var checked_facets = new Array();
457    var facets_keys = new Array();
458    var facets_values = new Array();
459    var q = $('#search_keyword').val();
460    if (typeof q === "undefined" || q === null || q === "") {
461        q = 'all';
462    }
463    var search_url;
464    if (typeof searchUrl !== 'undefined' && searchUrl !== '') {
465        search_url = site_url + searchUrl + '/q/' + q;
466    } else {
467        search_url = site_url + 'job/jsearch/q/' + q;
468    }
469    //    var fcn = $('#facet_company').val();
470    //    if (typeof fcn !== "undefined" && fcn !== '' && fcn !== null) {
471    //        search_url += '/fcn/' + fcn;
472    //    }
473    //console.log(' FCO : ', fcn);
474    var fp = $('#facet_package').val();
475    if (typeof fp !== "undefined" && fp !== '' && fp !== null) {
476        search_url += '/fp/' + fp;
477    }
478    var fs = $('#salary_facet').val();
479    //console.log(' FS : ', fs);
480    if (typeof fs !== "undefined" && fs !== '' && fs !== null) {
481        search_url += '/fs/' + fs;
482    }
483    var current_page_url = $('#current_page_url').val();
484    var channel_facet = $('#channel_facet').val();
485    $('input:checkbox[class=jobFacets]:checked').each(function () {
486        var params = {};
487        params.facet_value = $(this).data('fid');
488        params.facet_id = $(this).attr('id');
489        params.facet_key = $(this).data('fkey');
490        checked_facets.push(params);
491    });
492    //console.log('checkedFacets: ', checked_facets);
493    if (typeof channel_facet !== "undefined" && channel_facet !== "") {
494        for (var i in checked_facets) {
495            if (checked_facets[i].facet_key !== 'fch' && checked_facets[i].facet_value !== channel_facet) {
496                checked_facets.push({'facet_key': 'fch', 'facet_value': channel_facet, 'facet_id': 'fch_' + channel_facet})
497            }
498        }
499    }
500    //console.log('Checked Facets: ', channel_facet);
501    //console.log('Checked Facets: ', checked_facets);
502
503    for (var i in checked_facets) {
504        if ($.inArray(checked_facets[i].facet_key, facets_keys) !== -1) {
505            //console.log('found ', checked_facets[i].facet_key);
506            //find fecet key and concatinate value
507            for (var j in facets_values) {
508                if (facets_values[j].key === checked_facets[i].facet_key) {
509                    //console.log('concat value: ', checked_facets[i].facet_value);
510                    facets_values[j].value += ":" + checked_facets[i].facet_value;
511                }
512            }
513        } else {//not found
514            //console.log('Not found ', checked_facets[i].facet_key);
515            facets_keys.push(checked_facets[i].facet_key);
516            facets_values.push({'key': checked_facets[i].facet_key, 'value': checked_facets[i].facet_value});
517        }
518    }
519    //console.log('FacetsKey : ', facets_keys);
520    //console.log('FacetsValues : ', facets_values);
521    //finalizing url
522    for (var i in facets_values) {
523        search_url += "/" + facets_values[i].key + "/" + facets_values[i].value;
524    }
525    //console.log('New Url: ', search_url);
526    clean_url = search_url.replace(/([^:]\/)\/+/g, "$1");
527    window.location = search_url;
528});
529
530function getCheckedFacetsData(json) {
531    json = (typeof json !== 'undefined') ? json : false; //serialized in default
532    var checked_facets = new Array();
533    var facets_keys = new Array();
534    var facets_values = new Array();
535    $('input:checkbox[class=jobFacets]:checked').each(function () {
536        var params = {};
537        params.facet_value = $(this).data('fid');
538        params.facet_id = $(this).attr('id');
539        params.facet_key = $(this).data('fkey');
540        checked_facets.push(params);
541    });
542    for (var i in checked_facets) {
543        if ($.inArray(checked_facets[i].facet_key, facets_keys) !== -1) {
544//console.log('found ', checked_facets[i].facet_key);
545//find fecet key and concatinate value
546            for (var j in facets_values) {
547                if (facets_values[j].key === checked_facets[i].facet_key) {
548                    //console.log('concat value: ', checked_facets[i].facet_value);
549                    facets_values[j].value += ":" + checked_facets[i].facet_value;
550                }
551            }
552        } else {//not found
553//console.log('Not found ', checked_facets[i].facet_key);
554            facets_keys.push(checked_facets[i].facet_key);
555            facets_values.push({'key': checked_facets[i].facet_key, 'value': checked_facets[i].facet_value});
556        }
557    }
558//console.log('FacetsKey : ', facets_keys);
559//console.log('FacetsValues : ', facets_values);
560
561    var q = $('input[name=keyword]').val();
562    q = (typeof q !== 'undefined' && q !== null) ? q : '';
563    if ($('.advancedSearch').attr('aria-expanded') === "true") {
564        q = (typeof $('input[name=q]').val() !== 'undefined') ? $('input[name=q]').val() : '';
565    }
566
567    var postData = 'q=' + q;
568    var jsonData = {'q': q};
569    if (facets_values.length > 0) {
570        for (var i in facets_values) {
571//console.log('=> ', facets_values[i]);
572            postData += '&' + facets_values[i].key + '=' + facets_values[i].value;
573            jsonData[facets_values[i].key] = facets_values[i].value;
574        }
575    }
576    var fDate = $('input[name=fDate]').val() || '';
577    var tDate = $('input[name=tDate]').val() || '';
578    if ((typeof fDate !== 'undefined' && fDate !== '') || (typeof tDate !== 'undefined' && tDate !== '')) {
579        postData += '&fDate=' + fDate + '&tDate=' + tDate;
580        jsonData['fDate'] = fDate;
581        jsonData['tDate'] = tDate;
582    }
583    if (q !== '' || fDate !== '' || tDate !== '' || facets_values.length > 0) {
584        //facets applied save in localstorage
585        postData += '&searchSolr=Y';
586        localStorage.setItem('searchSolr', 'Y');
587        jsonData['searchSolr'] = 'Y';
588    }
589    //console.log('POST DATA: ', postData);
590    //console.log('POST DATA JSON: ', jsonData);
591    if (json === true) {
592        return jsonData;
593    }
594    return postData;
595}
596
597
598function checkFacetStatus(facetvalues, key, value) {
599    //console.log('checkFcets: ', facetvalues);
600    for (var i in facetvalues) {
601        facetValue = facetvalues[i].value;
602        if (facetValue === null || facetValue === 'undefined') {
603            continue;
604        }
605
606        if (typeof facetValue !== 'undefined') {
607            facetValue = facetValue.toString();
608        }
609        if (typeof value !== 'undefined') {
610            value = value.toString();
611        }
612        try {
613            var valuesArr = facetValue.split(":");
614        } catch (e) {
615            //console.warn('Error: ', e);
616        }
617//        console.log(' value in array: ' + value, valuesArr);
618//        console.log(' Key : ' + key, facetvalues[i].key);
619//        console.log('In Array: => ', $.inArray(value, valuesArr));
620        if ($.inArray(value, valuesArr) !== -1 && key === facetvalues[i].key) {
621            return 'checked';
622        }
623    }
624    return '';
625
626}
627
628$(document).delegate('#resetFacetBtn', 'click', function () {
629    window.location = site_url + 'job/jsearch/q/all';
630});
631function authenticate(backUrl) {
632    var redirectTo = seeker_url + 'login';
633    var data = {};
634    if (typeof backUrl === "undefined") {
635        data.redirectUrl = location.href;
636    } else {
637        data.redirectUrl = backUrl;
638    }
639    localStorage.setItem('lastUrl', data.redirectUrl);
640    var successCallback = function (res, statusText, jqXHR) {
641        if (res.code === 200) {
642            window.location = redirectTo;
643        }
644    };
645    var url = ajax_url + 'site/saveLastURL';
646    xhrRequest(url, 'POST', data, successCallback);
647}
648
649function saveJobStartup(jobId, compId, source) {
650//console.log($('.btn_'+jobId).text());
651    //changeState('.btn_' + jobId, msg_saving, true);
652    $("#savejob_loader").removeClass('d-none');
653    $("#save_job").addClass('d-none');
654    $('.btn_' + jobId).attr('disabled', 'disabled');
655    var data = {};
656    data.jobId = jobId;
657    data.sourcePage = source;
658    data.companyId = compId;
659    var successCallback = function (res, statusText, jqXHR) {
660        //console.log('Response: ', jqXHR);
661        $("#savejob_loader").addClass('d-none');
662        var response = $.parseJSON(res);
663        try {
664            if (response.code == 200) {
665                //$("#save_job").addClass('d-none');
666                $("#save_job").parents(".save-job").append('<a href="javascript:void(0)" class="btn btn-secondary mt10 btn-block" id="saved_job">Saved</a>');
667                $('.btn_' + jobId).addClass('active').removeAttr('disabled').attr('title', msg_saved);
668                $('.btn_' + jobId).removeAttr('onclick');
669                if (source == 'jobdetail') {
670                    $('.btn_' + jobId).addClass('disabled');
671                    $('.btn_' + jobId).addClass(msg_saved);
672                }
673                $('.btn_' + jobId).attr('disabled', 'disabled');
674                $('#saveJobSuccess').slideDown();
675                setTimeout(function () {
676                    $('#saveJobSuccess').slideUp();
677                }, 10000);
678            } else if (response.code === 401) {
679                console.log('res: ', response);
680                authenticate();
681                console.log('res =>: ', response.code);
682                //var url = $('#login').data('target');
683                //openOverlay(url);
684            } else {
685                $("#save_job").removeClass('d-none');
686                changeState('.btn_' + jobId, msg_save, false);
687                $('#saveJobFailed').slideDown();
688                setTimeout(function () {
689                    $('#saveJobSuccess').slideUp();
690                }, 10000);
691            }
692        } catch (e) {
693            $("#savejob_loader").addClass('d-none');
694            $("#save_job").removeClass('d-none');
695            //console.error('Error: ', res);
696            $('.btn_' + jobId).addClass(msg_save);
697            $('.btn_' + jobId).removeClass('disabled');
698            $('#saveJobFailed').slideDown();
699            //$('.btn_' + jobId).text('Error');
700        }
701    };
702    var url = ajax_url + 'job/saveJob';
703    xhrRequest(url, 'POST', data, successCallback);
704}
705function saveJob(jobId, compId, source) {
706//console.log($('.btn_'+jobId).text());
707    //changeState('.btn_' + jobId, msg_saving, true);
708    $("#savejob_loader").removeClass('d-none');
709    $("#save_job").addClass('d-none');
710    $('.btn_' + jobId).attr('disabled', 'disabled');
711    var data = {};
712    data.jobId = jobId;
713    data.sourcePage = source;
714    data.companyId = compId;
715    var successCallback = function (res, statusText, jqXHR) {
716        //console.log('Response: ', jqXHR);
717        $("#savejob_loader").addClass('d-none');
718        var response = $.parseJSON(res);
719        try {
720            if (response.code == 200) {
721                //$("#save_job").addClass('d-none');
722                $("#save_job").parents(".save-job").append('<a href="javascript:void(0)" class="btn btn-secondary mt10 btn-block" id="saved_job">Saved</a>');
723                $('.btn_' + jobId).addClass('active').removeAttr('disabled').attr('title', msg_saved);
724                $('.btn_' + jobId).removeAttr('onclick');
725                if (source == 'jobdetail') {
726                    $('.btn_' + jobId).addClass('disabled');
727                    $('.btn_' + jobId).html(msg_saved);
728                }
729                $('.btn_' + jobId).attr('disabled', 'disabled');
730                $('#saveJobSuccess').slideDown();
731                setTimeout(function () {
732                    $('#saveJobSuccess').slideUp();
733                }, 10000);
734            } else if (response.code === 401) {
735                console.log('res: ', response);
736                authenticate();
737                console.log('res =>: ', response.code);
738                //var url = $('#login').data('target');
739                //openOverlay(url);
740            } else {
741                $("#save_job").removeClass('d-none');
742                changeState('.btn_' + jobId, msg_save, false);
743                $('#saveJobFailed').slideDown();
744                setTimeout(function () {
745                    $('#saveJobSuccess').slideUp();
746                }, 10000);
747            }
748        } catch (e) {
749            $("#savejob_loader").addClass('d-none');
750            $("#save_job").removeClass('d-none');
751            //console.error('Error: ', res);
752            $('.btn_' + jobId).text(msg_save);
753            $('.btn_' + jobId).removeClass('disabled');
754            $('#saveJobFailed').slideDown();
755            //$('.btn_' + jobId).text('Error');
756        }
757    };
758    var url = ajax_url + 'job/saveJob';
759    xhrRequest(url, 'POST', data, successCallback);
760}
761
762function showMessages(type, msg) {
763    $('#alertMessages').find('span').html(msg);
764    $('#alertMessages').addClass('alert-' + type);
765    $('#alertMessages').show();
766    setTimeout(function () {
767        $('#alertMessages').hide();
768    }, 15000);
769    $("html, body").animate({scrollTop: 0}, "slow");
770}
771
772function commonAlert(type, msg, noHide, msgDiv) {
773
774    noHide = (typeof noHide === "undefined") ? 'hide' : noHide;
775    type = (typeof type === "undefined") ? 'success' : type;
776    msgDiv = (typeof msgDiv === "undefined") ? 'messageContainer' : msgDiv;
777
778    var alertMsg = '<div class="alert alert-' + type + ' alert-dismissable" role="alert" style="position:relative;"> <p>' + msg + '  <i class="rz-cross cstm pull-right" data-dismiss="alert" style="position:absolute; top:18px; right:10px; z-index:111;" onClick="$(this).parents(\'.alert\').hide()"></i></p> </div> </div>';
779    if (msgDiv.includes('.')) {
780        $(msgDiv).html(alertMsg);
781    } else {
782        $('#' + msgDiv).html(alertMsg);
783    }
784    if (noHide == 'hide') {
785        setTimeout(function () {
786            $('#' + msgDiv).html('');
787        }, 10000);
788    }
789}
790
791function navigateMSG(id) {
792    id = (typeof id !== 'undefined') ? id : 'messageContainer';
793    $('body, html').animate({scrollTop: $('#' + id).offset().top - 100}, 600);
794}
795
796function changeState(element, text, isLoading) {
797    if (text !== null && text !== false) {
798        $(element).html(text);
799    }
800    if (isLoading === true) {
801        $(element).addClass('disabled');
802        $(element).attr('disabled', 'disabled');
803    } else {
804        $(element).removeClass('disabled');
805        $(element).removeAttr('disabled');
806        $(element).prop('disabled', false);
807    }
808}
809
810$(document).delegate('.followCompany', 'click', function () {
811    var data = {};
812    data.company_name = $(this).data('cname');
813    data.company_id = $(this).data('cid');
814    // var id = $(this).data('id');
815    var id = $(this).attr('id');
816    changeState('#' + id, msg_following + '..', true);
817    var successCallback = function (response, statusText, jqXHR) {
818            if (response.code === 200) {
819                $('#' + id).addClass('unfollowedCompany');
820                $('#' + id).removeClass('followCompany');
821                changeState('#' + id, msg_unfollow, false);
822                if($('.fCount') != undefined) {
823                    $('.fCount').html(response.tf);
824                }
825            } else if (response.code === 401) {
826                var url = $('#login').data('target');
827                openOverlay(url);
828            } else {
829                changeState('#' + id, msg_follow, false);
830                $('#' + id).removeClass('unfollowedCompany');
831                $('#' + id).removeClass('disabled');
832                showMessages('danger', response.message);
833            }
834    };
835    var url = ajax_url + 'company/follow';
836    xhrRequest(url, 'POST', data, successCallback);
837});
838//unfollowedCompany
839$(document).delegate('.unfollowedCompany', 'click', function () {
840    var data = {};
841    data.company_name = $(this).data('cname');
842    data.company_id = $(this).data('cid');
843    // var id = $(this).data('id');
844    var id = $(this).attr('id');
845    changeState('#' + id, msg_unfollowing + '...', true);
846    var successCallback = function (response, statusText, jqXHR) {
847            if (response.code === 200) {
848                changeState('#' + id, msg_follow, false);
849                $('#' + id).removeClass('unfollowedCompany');
850                $('#' + id).addClass('followCompany');
851                if($('.fCount') != undefined) {
852                    $('.fCount').html(response.tf);
853                }
854            } else if (response.code === 401) {
855                var url = $('#login').data('target');
856                openOverlay(url);
857            } else {
858                changeState('#' + id, msg_unfollow, false);
859                $('#' + id).removeClass('followCompany');
860                showMessages('danger', response.message);
861            }
862    };
863    var url = ajax_url + 'company/unfollow';
864    xhrRequest(url, 'POST', data, successCallback);
865});
866
867$(document).delegate('.followCompany1', 'click', function () {
868    var data = {};
869    data.company_name = $(this).data('cname');
870    data.company_id = $(this).data('cid');
871    var id = $(this).data('id');
872
873    // var id = $(this).attr('id');
874    changeState('.' + id, msg_following + '..', true);
875    var successCallback = function (response, statusText, jqXHR) {
876            if (response.code === 200) {
877                $('.' + id).addClass('unfollowedCompany1');
878                $('.' + id).removeClass('followCompany1');
879                changeState('.' + id, msg_unfollow, false);
880                if($('.fCount') != undefined) {
881                    $('.fCount').html(response.tf);
882                }
883            } else if (response.code === 401) {
884                var url = $('#login').data('target');
885                openOverlay(url);
886            } else {
887                changeState('.' + id, msg_follow, false);
888                $('.' + id).removeClass('unfollowedCompany1');
889                $('.' + id).removeClass('disabled');
890                showMessages('danger', response.message);
891            }
892    };
893    var url = ajax_url + 'company/follow';
894    xhrRequest(url, 'POST', data, successCallback);
895});
896//unfollowedCompany
897$(document).delegate('.unfollowedCompany1', 'click', function () {
898    var data = {};
899    data.company_name = $(this).data('cname');
900    data.company_id = $(this).data('cid');
901    var id = $(this).data('id');
902    // var id = $(this).attr('id');
903    changeState('.' + id, msg_unfollowing + '...', true);
904    var successCallback = function (response, statusText, jqXHR) {
905            if (response.code === 200) {
906                changeState('.' + id, msg_follow, false);
907                $('.' + id).removeClass('unfollowedCompany1');
908                $('.' + id).addClass('followCompany1');
909                if($('.fCount') != undefined) {
910                    $('.fCount').html(response.tf);
911                }
912            } else if (response.code === 401) {
913                var url = $('#login').data('target');
914                openOverlay(url);
915            } else {
916                changeState('.' + id, msg_unfollow, false);
917                $('.' + id).removeClass('followCompany1');
918                showMessages('danger', response.message);
919            }
920    };
921    var url = ajax_url + 'company/unfollow';
922    xhrRequest(url, 'POST', data, successCallback);
923});
924
925function jobAlertModel() {
926    var validator = $('#saveJobAlert-form').validate();
927    validator.resetForm();
928    validator.reset();
929    $('#messageContainer').html();
930
931    $('.has-error').each(function () {
932        $(this).removeClass('has-error');
933    });
934
935    $('#SaveJob').modal({
936        show: 'true'
937    });
938}
939
940function emailToFriendModal(jid, title, permaLink) {
941    $('#jobId').val(jid);
942    $('#subject').val(title);
943    $('#message').text(permaLink);
944    $('#EmailFrnd').modal({
945        show: 'true'
946    });
947}
948
949function saveJobAlert() {
950
951    if ($('input[name=keyword_search_in]:checked').length == 0) {
952        $('input[name=keyword_search_in]').closest('.form-group').addClass('has-error');
953        $('.keyword-error').next().remove();
954        requiredMessage = $('#requiredMessage').val();
955        $('.keyword_search_in').after('<div class="keyword-error clearfix"></div><span for="keyword_search_in" class="keyword-search-error help-block">' + requiredMessage + '</span>');
956        changeState('#saveJobAlert_btn', msg_save, false);
957        var flag = true;
958    } else {
959        $('input[name=keyword_search_in]').closest('.form-group').removeClass('has-error');
960        $('.keyword-error').next().remove();
961        $('input[name=keyword_search_in]').closest('.keyword-error').remove();
962        var flag = false;
963        changeState('#saveJobAlert_btn', msg_save, false);
964    }
965
966    var validator = $('#saveJobAlert-form').validate();
967    var validation = validator.form();
968    if (validation === false || flag) {
969        if (flag) {
970            $('.keyword-search-error').show();
971        }
972
973        return commonAlert('warning', msg_form_validation_warning);
974    }
975
976    changeState('#saveJobAlert_btn', msg_saving, true);
977    var data = {};
978    data.keyword_search_in = '';
979
980
981    $('input[name=keyword_search_in]:checked').each(function (i) {
982        data.keyword_search_in += $(this).val();
983    });
984
985    //console.log(data);
986    data.gender = $('select[name=gender]').val();
987    data.careerLevel = $('select[name=careerLevel]').val();
988    data.minExperience = $('select[name=minExperience]').val();
989    data.expSalary = $('select[name=expSalary]').val();
990    data.city = $('#userCity').val();
991    //console.log('city: ', data.city);
992    data.email = $('input[name=email]').val();
993    //console.log('email: ', data.email);
994
995    data.countryCode = $('select[name=countryCode]').val();
996    data.mobileCode = $('select[name=mobileCode]').val();
997    data.mobileNumber = $('input[name=mobileNumber]').val();
998    data.searchAlert = $('input[name=searchAlert]').val();
999    data.currentJobURL = $('input[name=currentJobURL]').val();
1000    data.keywords = $('input[name=keywords]').val();
1001
1002    data.rzTkn = $("input[name=rzTkn]").val();
1003    if (typeof $('input[name=currentJobAlertID]').val() !== 'undefined') {
1004        data.alertID = $('input[name=currentJobAlertID]').val();
1005    }
1006    //console.log('Data: ', data);
1007    var successCallback = function (jqXHR) {
1008        changeState('#saveJobAlert_btn', msg_save, false);
1009        if (jqXHR.status === true) {
1010            var response = jqXHR;
1011            if (response.code === 200) {
1012                $('#saveJobAlert-form')[0].reset();
1013                //console.log('messages: ', response.message);
1014                if (response.message instanceof Array) {
1015                    for (var i in response.message) {
1016                        //console.log(response.message[i]);
1017                        commonAlert('success', response.message[i]);
1018                    }
1019                } else {
1020                    var type = (typeof response.type === "undefined") ? 'success' : response.type;
1021                    var user = (typeof response.user === "undefined") ? '' : response.user;
1022                    if (type === 'success') {
1023                        showMessages(type, response.message);
1024                        commonAlert(
1025                                "success",
1026                                response.message
1027                                );
1028                        setTimeout(function () {
1029                            $('#SaveJob').modal('hide');
1030                        }, 2000);
1031                        setTimeout(function () {
1032                            if (typeof alert_id !== 'undefined') {
1033                                location = site_url + 'my-job-alerts';
1034                                commonAlert('success', msg_alert_updated);
1035                            } else if (user != 'guest') {
1036                                //window.open(site_url + 'my-job-alerts', '_blank');
1037                                window.location = site_url + 'my-job-alerts';
1038                            }
1039                        }, 3500);
1040                        return;
1041                    } else {
1042                        commonAlert(type, response.message);
1043                    }
1044                }
1045            } else if (response.code === 401) {
1046                return authenticate();
1047            } else {
1048                return commonAlert('danger', response.message);
1049            }
1050        } else {
1051            console.error("Error: ", jqXHR);
1052            return commonAlert(
1053                    "danger",
1054                    "An Error Occured! "
1055                    );
1056        }
1057    };
1058    var url = ajax_url + 'job/saveJobAlert';
1059    xhrRequest(url, 'POST', data, successCallback, 'jsosn');
1060}
1061function resendRegCode() {
1062    var params = {};
1063    params.email = $('#userEmail').val();
1064    ajx('POST', params, 'user/resendregcode', '', function (resp) {
1065        $('.incorCode').hide();
1066        commonAlert('success', resp.response);
1067
1068    });
1069}
1070function setintPA(jid, sc) {
1071
1072    $("#paCallLd").show();
1073    var params = {};
1074    params.jid = jid;
1075    params.score = sc;
1076    ajx('POST', params, 'job/expertCall', 'html', function (res) {
1077
1078        $("#paCallLd").hide();
1079        $("#paCallImg").show();
1080        if (res == 'SUC')
1081            $("#paCallMsg").show();
1082    });
1083}
1084
1085
1086
1087//===================== FORMATE CURRENCY ==================
1088function addCommas(str) {
1089    var parts = (str + "").split("."),
1090            main = parts[0],
1091            len = main.length,
1092            output = "",
1093            i = len - 1;
1094    while (i >= 0) {
1095        output = main.charAt(i) + output;
1096        if ((len - i) % 3 === 0 && i > 0) {
1097            output = "," + output;
1098        }
1099        --i;
1100    }
1101// put decimal part back
1102    if (parts.length > 1) {
1103        output += "." + parts[1];
1104    }
1105    return output;
1106}
1107
1108function savePACallData() {
1109    var formId = "#callPA-form";
1110    var validator = $(formId).validate();
1111    if (validator.form() === false) {
1112        return;
1113    }
1114    commonAlert('info', msg_plz_wait);
1115    var data = $(formId).serialize();
1116    //console.log('f1 data: ', data);
1117    var successCallback = function (res, statusText, jqXHR) {
1118
1119        if (jqXHR.status == 200) {
1120            resp = $.parseJSON(res);
1121            commonAlert(resp.type, resp.message);
1122            if (res.status == 200) {
1123                $(formId)[0].reset();
1124            }
1125        } else {
1126            console.error('Error: ', res);
1127        }
1128    };
1129    var url = ajax_url + 'site/savePAquery';
1130    xhrRequest(url, 'POST', data, successCallback);
1131}
1132
1133function captchaModal(fromPage) {
1134    var formId = '';
1135    if (fromPage == 'savePAQueryData') {
1136        formId = '#queryPA-form';
1137    }
1138    if (fromPage == 'savePACallData') {
1139        formId = '#callPA-form';
1140    }
1141    var validator = $(formId).validate();
1142    if (validator.form() === false) {
1143        return;
1144    }
1145    $('.captchaModal').modal();
1146    if (typeof grecaptcha == 'object') { // if grecaptcha is defined i.e. recaptcha is loaded
1147        container = $('#captchaContainer').html();
1148        if (container == '') {
1149            loadCaptcha(fromPage);
1150        } else {
1151            grecaptcha.reset();
1152        }
1153    }
1154}
1155
1156function savePAQueryData() {
1157    var formId = "#queryPA-form";
1158    var validator = $(formId).validate();
1159    if (validator.form() === false) {
1160        return;
1161    }
1162    var data = $(formId).serialize();
1163    commonAlert('info', msg_plz_wait);
1164    var successCallback = function (res, statusText, jqXHR) {
1165        if (jqXHR.status == 200) {
1166            resp = $.parseJSON(res);
1167            commonAlert(resp.type, resp.message);
1168            if (res.status == 200) {
1169                $(formId)[0].reset();
1170            }
1171        } else {
1172            console.error('Error: ', res);
1173        }
1174    };
1175    var url = ajax_url + 'site/savePAquery';
1176    xhrRequest(url, 'POST', data, successCallback);
1177}
1178
1179/*
1180 * Adding CV Write Packages
1181 */
1182$(document).delegate('.addCartPackagesCV', 'click', function () {
1183    changeState(this, msg_plz_wait, true);
1184    var checked_packages = [];
1185    var data = {};
1186    $('input[name="chk_executive"]:checked').each(function () {
1187        var params = {};
1188        params.spID = $(this).val();
1189        params.totalPrice = $(this).data('price');
1190        params.itemId = $(this).attr('id');
1191        params.pack_code = $(this).data('pack_code');
1192        checked_packages.push(params);
1193    });
1194    if (checked_packages.length > 0) {
1195        data.packages = checked_packages;
1196        data.rztkn_product_purchase = rztkn_product_purchase;
1197        var successCallback = function (res, statusText, jqXHR) {
1198            //console.log('Response: '+ typeof jqXHR, jqXHR);
1199            //console.log('Response: '+ typeof res, res);
1200            if (res != undefined && res.code != undefined) {
1201                if (res.code == 401) {
1202                    authenticate();
1203                    return false;
1204                }
1205                commonAlert(res.type, res.message);
1206                if (res.code === 200) {
1207                    //alert(res.url);
1208                    window.location = res.url;
1209                }
1210            } else {
1211                console.error('Error: ', res);
1212                changeState(this, msg_add_cart, false);
1213            }
1214        };
1215        var url = ajax_url + 'site/saveCVpackages';
1216        console.log(data);
1217        xhrRequest(url, 'POST', data, successCallback);
1218    } else {
1219        changeState(this, msg_add_cart, false);
1220        commonAlert('warning', msg_no_pkg_select);
1221    }
1222});
1223
1224$(document).delegate('.pkgTab', 'click', function () {
1225    $('input:checkbox[name="chk_executive"]').prop('checked', false);
1226});
1227
1228if ($('.job_title').length > 0) {
1229    jobSearchMS = $('.job_title').magicSuggest({
1230        data: ajax_url + 'job/keywordSuggestion/',
1231        queryParam: 'term',
1232        hideTrigger: true,
1233        //dataUrlParams: true,
1234        //resultAsString: true,
1235        //resultAsStringDelimeter: ', ',
1236        //allowFreeEntries: false,
1237        //strictSuggest: true,
1238        maxSelection: 2,
1239        useCommaKey: true,
1240        valueField: 'name',
1241        renderer: function (data) {
1242            //console.log('=> DATA: ', data);
1243            //$titleData =[];
1244            html = '';
1245            if (data.index == 0) {
1246                title = data.id;
1247                html = '<div class="head"><strong> SUGGESTION FOR: ' + title.toUpperCase() + '</strong></div>';
1248            }
1249            html += '<div class="' + data.id + '" data-heading=" SUGGESTION FOR: ' + data.id + '"> <p>' + data.name + '</p><div>';
1250            return html;
1251
1252        },
1253        resultAsString: true
1254    });
1255    var jobTitleHide = $('#jobTitleH').val();
1256    if (typeof jobTitleHide !== "undefined") {
1257        var titlesArr = jobTitleHide.split(',');
1258        var keywords = [];
1259        titlesArr.forEach(function (title) {
1260            keywords.push({'name': title});
1261        });
1262        jobSearchMS.addToSelection(keywords);
1263    }
1264}
1265
1266
1267// Hiring Dashbaord: Update Default Company
1268$(document).delegate('#defaultCompany', 'change', function () {
1269    //waiting state
1270    var element = this;
1271    changeState(element, null, true);
1272    var successCallback = function (res, statusText, jqXHR) {
1273        //console.log('Response: '+ typeof jqXHR, jqXHR);
1274        //console.log('Response: '+ typeof res, res);
1275        changeState(element, null, false);
1276
1277        //if (jqXHR.status === 200) {
1278        if (res.code === 200) {
1279            location.reload();
1280            //commonAlert(res.type, res.message);
1281        } else {
1282            if (res.code === 401) {
1283                authenticate();
1284            }
1285            console.error('Error: ', res);
1286        }
1287    };
1288    var url = ajax_url + 'dashboard/updateDefaultCompany';
1289    xhrRequest(url, 'POST', {'id': $(this).val()}, successCallback);
1290});
1291
1292// Handle Broken Images
1293$(function () {
1294    $('img').on('error', function () {
1295        imageError(this);
1296    });
1297});
1298
1299function getCitiesList(country, citySel, cityTxt) {
1300    citySel = (typeof citySel === "undefined" || citySel === "" ? 'citySrchAdv' : citySel);
1301    cityTxt = (typeof cityTxt === "undefined" || cityTxt === "" ? 'cityTxt' : cityTxt);
1302
1303    if (country == '114' || country == '116') { // USA OR Canada
1304        $('#' + cityTxt).val('');
1305        $('#' + cityTxt).removeClass('hide');
1306        $('#' + citySel).addClass('hide');
1307        $('#' + citySel).selectpicker('hide');
1308
1309        return;
1310    } else if (country == '') {
1311        $('#' + citySel).val('');
1312        $('#' + citySel).selectpicker('refresh');
1313        $('#' + citySel).prop('disabled', 'disabled');
1314
1315        return;
1316    } else {
1317        $('#' + citySel).removeClass('hide');
1318        $('#' + citySel).show();
1319        $('#' + citySel).selectpicker('show');
1320        $('#' + citySel).prop('disabled', false);
1321        $('#' + citySel).selectpicker('refresh');
1322        $('#' + cityTxt).addClass('hide');
1323        $('#' + cityTxt).val('');
1324    }
1325
1326    $.getJSON(site_url + 'services/site/getcitieslist/?country_id=' + country, function (response) {
1327        if (response.success) {
1328            //$('#' + citySel).find('option').not(':first').remove();
1329            $('#' + citySel).find('option').remove();
1330            $.each(response.cities, function (index, item) {
1331                $('#' + citySel).append($('<option></option>').attr('value', item.cityID).data('city', item.city).text(item.city));
1332
1333            });
1334
1335            $('#' + citySel).selectpicker('refresh');
1336        }
1337    });
1338} // get cities list
1339
1340function saveAgayBarhoSubscribe() {
1341    var validator = $('#agayBarhoSubForm').validate();
1342    var validation = validator.form();
1343    if (validation === false) {
1344        return false;
1345    }
1346    $('#btnDiv').hide();
1347    $('#agayBarhoWait').show();
1348    var params = $('#agayBarhoSubForm').serialize();
1349    var callback = function (resp) {
1350        if (resp.status === false) {
1351            $('#btnDiv').show();
1352            $('#agayBarhoWait').hide();
1353            $('#errorMsg').find('ul.merror').remove();
1354            $('#errorMsg').removeClass('hide');
1355            $('#errorMsg').addClass('alert-success');
1356            var ul = $('#errorMsg:last').append('<ul class="merror mt10 s-24"></ul>').find('ul.merror');
1357            ;
1358            $.each(resp.response, function (field, message) {
1359                ul.append('<li>' + message + '</li>');
1360            });
1361            setTimeout(function () {
1362                $('#errorMsg:last').find('ul.merror').remove();
1363                $('#errorMsg').removeClass('alert-success');
1364                $('#errorMsg').addClass('hide');
1365
1366            }, 8000);
1367            return false;
1368        } else {
1369
1370            //$('#agayBarhoWait').addClass('hide');
1371            // $('#success').removeClass('hide');
1372            window.location.href = resp.url;
1373
1374        }
1375    };
1376    ajx('POST', params, 'site/saveAgayBarhoSubscribe', '', callback);
1377}
1378function getCityByCountry() {
1379
1380    var params = {};
1381    var countryData = $('#country_id').val();
1382    var countryArr = countryData.split(",");
1383    var country;
1384    params.country_id = country = countryArr[0];
1385    if (countryArr[2] == '+92' || countryArr[2] == '+966') {
1386
1387        getMobileCodeByCountryCode(countryArr[2]);
1388        $('#mobCdDiv').show();
1389        $("#badm").hide();
1390        $("#badm").parent(".col-md-12").removeClass("col-md-12").addClass("col-md-9");
1391        $('#mobileCode option:selected').removeAttr('selected');
1392        $('#mobile').attr("maxlength", 7);
1393        $('#mobile').val('');
1394    } else {
1395        $('#mobCdDiv').hide();
1396        $("#badm").show();
1397        $("#badm").parent(".col-md-9").removeClass("col-md-9").addClass("col-md-12");
1398        $('#mobileCode option:selected').removeAttr('selected');
1399        $('#mobile').attr("maxlength", 20);
1400        $('#mobile').val('');
1401    }
1402    if (country == '') {
1403        return;
1404    } else if (country == '114' || country == '116') {
1405        $('#city_id').find('option').remove();
1406        $('.cityDD').hide();
1407        $('#cityDiv').append('<input type="text" class="form-control s-18 cityField" name="city_id" id="cityField"  placeholder="Please enter the city name">');
1408        return;
1409    }
1410    var callback = function (resp) {
1411        if (resp.success === true) {
1412            $('#cityDiv').show();
1413            $('#cityField').remove();
1414            $('#city_id').find('option').remove();
1415            $('.cityDD').show();
1416            $('#city_id').append('<option value="" id="cityLbl">' + cityLabel + '</option>');
1417            $.each(resp.cities, function (index, item) {
1418                $('#city_id').append($('<option></option>').attr('value', item.cityID).data('city', item.city).text(item.city));
1419            });
1420        } else {
1421            $('#city_id').find('option').remove();
1422            $('#cityDiv').hide();
1423        }
1424    };
1425    ajx('GET', params, 'site/getCities', '', callback);
1426
1427}
1428function validateQty(event) {
1429
1430    var key = window.event ? event.keyCode : event.which;
1431    // 110 for decimal point
1432    if (event.keyCode == 8 || event.keyCode == 9
1433            || event.keyCode == 37 || event.keyCode == 39) {
1434        return true;
1435    } else if (key < 48 || key > 57) {
1436        return false;
1437    } else
1438        return true;
1439}
1440
1441function getMobileCodeByCountryCode(cntryCode) {
1442    if (cntryCode !== '' && cntryCode !== 'undefined') {
1443        var params = {};
1444        params.cCode = cntryCode;
1445        if (cntryCode == '+966') {
1446            $('#mobile').attr("maxlength", 10);
1447        }
1448        var callback = function (resp) {
1449            if (resp.status === true) {
1450                $('#mobile').val("");
1451                $('#mobileCode').find('option').remove();
1452                $('#mobileCode').append('<option  value="">
1452Choose Code</option>');
1453                var html = '';
1454                $.each(resp.response, function (index, item) {
1455                    html += '<option value=' + item + '>' + item + '</option>';
1456                });
1457
1458                $('#mobileCode').append(html);
1459            }
1460        };
1461        ajx('POST', params, 'site/getMobileCodesByCountryCode', '', callback);
1462    }
1463}
1464
1465function getMobileCodeByCountryCodeForApp(cntryCode, form) {
1466    if (cntryCode !== '' && cntryCode !== 'undefined') {
1467        var params = {};
1468        params.cCode = cntryCode;
1469        if (cntryCode == '+966') {
1470            $('#' + form + '#mobile').attr("maxlength", 10);
1471        }
1472        var callback = function (resp) {
1473            log(resp);
1474            if (resp.status === true) {
1475                $('#' + form + ' #mobile').val("");
1476                $('#' + form + ' #mobileCode').find('option').remove();
1477                var html = '';
1478                $.each(resp.response, function (index, item) {
1479                    html += '<option value=' + item + '>' + convertToArabic(item) + '</option>';
1480                });
1481                $('#' + form + ' #mobCdDiv').show();
1482                $('#' + form + ' #mobileCode').append(html);
1483            } else {
1484                $('#' + form + ' #mobileCode').find('option').remove();
1485                $('#' + form + ' #mobCdDiv').hide();
1486                $('#' + form + ' #mobile').attr("maxlength", 20);
1487            }
1488        };
1489        ajx('POST', params, 'site/getMobileCodesByCountryCode', '', callback);
1490    }
1491}
1492
1493function checkDate() {
1494
1495    $("#dobSp").attr("style", "display:block !important");
1496    var params = {};
1497    params.day = $('#day').val();
1498    params.month = $('#month').val();
1499    params.year = $('#year').val();
1500    ajx('POST', params, 'site/checkValidDate', '', function (res) {
1501
1502        $("#dobSp").attr("style", "");
1503        if (res.status == false)
1504            $("#sign-up #your_dob").find("div.merror").text(res.response);
1505        else
1506            MovetoNext(true);
1507    });
1508}
1509
1510function changePassword() {
1511    $('#alertDiv').hide();
1512    $('#alertDiv').removeClass();
1513
1514    var oldPassword = $('#oldPassword').val();
1515    var newPassword1 = $('#newPassword1').val();
1516    var newPassword2 = $('#newPassword2').val();
1517    if (oldPassword == '' || newPassword1 == '' || newPassword2 == '') {
1518        $('#alertDiv').removeClass();
1519        $('#alertDiv').addClass('alert alert-danger');
1520        $('#alertDiv').html(site170);
1521        $('#alertDiv').show();
1522        return;
1523    }
1524    if (newPassword1 !== newPassword2) {
1525        $('#alertDiv').removeClass();
1526        $('#alertDiv').addClass('alert alert-danger');
1527        $('#alertDiv').html(site169);
1528        $('#alertDiv').show();
1529        return;
1530    }
1531    if (newPassword1.length <= 7) {
1532        $('#alertDiv').removeClass();
1533        $('#alertDiv').addClass('alert alert-danger');
1534        $('#alertDiv').html(UCCheckAllowed ? site166 : site261);
1535        $('#alertDiv').show();
1536        return;
1537    }
1538    var passMatch = (/\d/.test(newPassword1) && /[a-z]/.test(newPassword1) && (UCCheckAllowed ? (/[A-Z]/.test(newPassword1)) : true));
1539    if (!passMatch) {
1540        $('#alertDiv').removeClass();
1541        $('#alertDiv').addClass('alert alert-danger');
1542        $('#alertDiv').html(UCCheckAllowed ? site166 : site261);
1543        $('#alertDiv').show();
1544        return;
1545    }
1546    $('.loading').show();
1547    $('.btnPass').addClass('disabled');
1548    var params = {};
1549    params.oldPassword = oldPassword;
1550    params.newPassword1 = newPassword1;
1551    params.newPassword2 = newPassword2;
1552    ajx('POST', params, 'user/changepassword', '', function (res) {
1553        $('.loading').hide();
1554        $('.btnPass').removeClass('disabled');
1555        if (typeof res.status !== 'undefined' && typeof res.msg !== 'undefined') {
1556            $('#alertDiv').removeClass();
1557            $('#alertDiv').addClass('alert alert-' + res.status);
1558            $('#alertDiv').html(res.msg);
1559            $('#alertDiv').show();
1560            $('.passIP').val('');
1561            setTimeout(function () {
1562                $('#alertDiv').hide();
1563            }, 5000);
1564            if (typeof res.url !== 'undefined') {
1565                setTimeout(function () {
1566                    location = res.url;
1567                }, 3000);
1568            }
1569            return;
1570        }
1571    });
1572    return;
1573}
1574
1575function changeEmail() {
1576    $('#alertDiv').hide();
1577    $('#alertDiv').removeClass();
1578
1579    var new_email = $('#new_email').val();
1580    var rz_password = $('#rz_password').val();
1581    if (new_email === '' || rz_password === '') {
1582        $('#alertDiv').removeClass();
1583        $('#alertDiv').addClass('alert alert-danger');
1584        $('#alertDiv').html(site170);
1585        $('#alertDiv').show();
1586        return;
1587    }
1588    if (!isValidEmail(new_email)) {
1589        $('#alertDiv').removeClass();
1590        $('#alertDiv').addClass('alert alert-danger');
1591        $('#alertDiv').html(site4);
1592        $('#alertDiv').show();
1593        return;
1594    }
1595    $('.loading').show();
1596    $('.btnEmail').addClass('disabled');
1597    var params = {};
1598    params.new_email = new_email;
1599    params.rz_password = rz_password;
1600    ajx('POST', params, 'user/changeemail', '', function (res) {
1601        $('.loading').hide();
1602        $('.btnPass').removeClass('disabled');
1603        if (typeof res.code !== 'undefined' && res.code === 401) {
1604            window.location.href = site_url + 'login';
1605            return;
1606        }
1607        if (typeof res.status !== 'undefined' && typeof res.msg !== 'undefined') {
1608            $('#alertDiv').removeClass();
1609            $('#alertDiv').addClass('alert alert-' + res.status);
1610            $('#alertDiv').html(res.msg);
1611            $('#alertDiv').show();
1612            $('.passIP').val('');
1613            setTimeout(function () {
1614                $('#alertDiv').hide();
1615            }, 5000);
1616            return;
1617        }
1618    });
1619    return;
1620}
1621
1622function setPassword() {
1623    $('#alertDiv').hide();
1624    $('#alertDiv').removeClass();
1625
1626    var newPassword1 = $('#newPassword1').val();
1627    var newPassword2 = $('#newPassword2').val();
1628    if (newPassword1 == '' || newPassword2 == '') {
1629        $('#alertDiv').removeClass();
1630        $('#alertDiv').addClass('alert alert-danger');
1631        $('#alertDiv').html(site170);
1632        $('#alertDiv').show();
1633        return;
1634    }
1635    if (newPassword1 !== newPassword2) {
1636        $('#alertDiv').removeClass();
1637        $('#alertDiv').addClass('alert alert-danger');
1638        $('#alertDiv').html(site169);
1639        $('#alertDiv').show();
1640        return;
1641    }
1642    if (newPassword1.length <= 7) {
1643        $('#alertDiv').removeClass();
1644        $('#alertDiv').addClass('alert alert-danger');
1645        $('#alertDiv').html(UCCheckAllowed ? site166 : site261);
1646        $('#alertDiv').show();
1647        return;
1648    }
1649    var passMatch = (/\d/.test(newPassword1) && /[a-z]/.test(newPassword1) && (UCCheckAllowed ? (/[A-Z]/.test(newPassword1)) : true));
1650    if (!passMatch) {
1651        $('#alertDiv').removeClass();
1652        $('#alertDiv').addClass('alert alert-danger');
1653        $('#alertDiv').html(UCCheckAllowed ? site166 : site261);
1654        $('#alertDiv').show();
1655        return;
1656    }
1657    $('.loading').show();
1658    var params = {};
1659    params.newPassword1 = newPassword1;
1660    params.newPassword2 = newPassword2;
1661    ajx('POST', params, 'user/setPassword', '', function (res) {
1662        $('.loading').hide();
1663        if (typeof res.status !== 'undefined' && typeof res.msg !== 'undefined') {
1664            $('#alertDiv').removeClass();
1665            $('#alertDiv').addClass('alert alert-' + res.status);
1666            $('#alertDiv').html(res.msg);
1667            $('#alertDiv').show();
1668            $('#newPassword1,#newPassword2').val('');
1669            if (typeof res.url !== 'undefined') {
1670                setTimeout(function () {
1671                    location = res.url;
1672                }, 1000);
1673            }
1674            return;
1675        }
1676    });
1677    return;
1678}
1679
1680
1681String.prototype.replaceArray = function (findArr, replaceArr) {
1682
1683    var replaceString = this;
1684    var regex;
1685    for (var i = 0; i < findArr.length; i++) {
1686        regex = new RegExp(findArr[i], "g");
1687        replaceString = replaceString.replace(regex, replaceArr[i]);
1688    }
1689    return replaceString;
1690};
1691
1692function getmobCode() {
1693
1694    var params = {};
1695    params.cCode = $('#countryCode').val();
1696    var url = ajax_url + 'site/mobileCodesJson'
1697    xhrRequest(url, 'post', params, function (res) {
1698
1699        if (res.status == true) {
1700            var html = '';
1701            $('#mobileCode').find('option').remove();
1702            html += '<option value="">Code</option>';
1703            for (var i = 0; i < res.data.length; i++) {
1704                html += '<option value="' + res.data[i] + '">' + res.data[i] + '</option>';
1705            }
1706            $('#mobileCode').html(html);
1707            $('#mobCdDiv').show();
1708            $('#mobile').attr("maxlength", 7);
1709            $(".merror").html("");
1710        } else
1711        {
1712            $('#mobCdDiv ').hide();
1713            $('#mobileCode').find('option').remove();
1714            $('#mobile').attr("maxlength", 10);
1715            $(".merror").html("");
1716        }
1717    });
1718}
1719
1720function AppLoader(hide) {
1721
1722    if (hide == "undefined") {
1723        hide = false;
1724    }
1725    if (hide == true) {
1726        $(".AppLoader").hide();
1727    } else {
1728        $(".AppLoader").show();
1729    }
1730    return true;
1731}
1732
1733function setProfDataForAuthHome(val) {
1734    console.log('value: ', val);
1735    if (val != '') {
1736        localStorage.setItem('profileLink', val);
1737    }
1738    var topProfUrl = seeker_url + 'top-professionals';
1739    authenticate(topProfUrl);
1740}
1741
1742function showTooltip() {
1743    setTimeout(function () {
1744        $('[data-toggle="tooltip"]').tooltip({html: true});
1745
1746    }, 500);
1747}
1748
1749function objLength(obj) {
1750    if (typeof obj !== 'object') {
1751        return 0;
1752    }
1753    var arr = Object.keys(obj);
1754    return arr.length;
1755}
1756
1757$(document).delegate('.rzCollapse', 'click', function () {
1758    var divId = $('#' + $(this).data('href') + '.collapse');
1759    if ($(this).attr('aria-expanded') == 'true') {
1760        $(divId).collapse('hide');
1761        $(this).addClass('collapsed');
1762        $(this).attr('aria-expanded', false);
1763    } else {
1764        $(divId).collapse('show');
1765        $(this).removeClass('collapsed');
1766        $(this).attr('aria-expanded', true);
1767    }
1768})
1769function sendNotificationToPA(userId, cvId, emailSubject, viewSource) {
1770
1771    var params = {};
1772    params.user_id = userId;
1773    params.cv_id = cvId;
1774    params.emailSubject = emailSubject;
1775    params.viewSource = typeof viewSource === 'undefined' ? '' : viewSource;
1776    var url = ajax_url + 'cv/sendNotificationToPA';
1777    xhrRequest(url, 'post', params, function (resp) {
1778        if (resp.status == true) {
1779            console.log("notification sent");
1780        } else {
1781            console.log("something going wrong");
1782        }
1783    });
1784}
1785/***     Report issue regarding image or profile ***/
1786$(document).ready(function () {
1787    $('#reportProfileForm [name="comments"]').on('change', function () {
1788        if ($(this).val() === "Other") {
1789            $('#reportProfileForm #other_comments').collapse('show')
1790        } else {
1791            $('#reportProfileForm #other_comments').collapse('hide')
1792        }
1793    });
1794
1795    $('#reportImageForm [name="comments"]').on('change', function () {
1796        if ($(this).val() === "Other") {
1797            $('#reportImageForm #other_comments').collapse('show')
1798        } else {
1799            $('#reportImageForm #other_comments').collapse('hide')
1800        }
1801    });
1802
1803    $('.reportForm [name="comments"]').on('change', function () {
1804        if ($(this).val() === 'Other') {
1805            $('.reportForm #other_comments').collapse('show');
1806        } else {
1807            $('.reportForm #other_comments').collapse('hide');
1808        }
1809    });
1810});
1811
1812function openProfileReportModal(image_id, seeker_user_id, source) {
1813
1814    $('#reportProfileForm .msgDiv').addClass('hide');
1815    $('#reportProfileForm #image_id').val(image_id);
1816    $('#reportProfileForm #seeker_user_id').val(seeker_user_id);
1817    $('#reportProfileForm #source').val(source);
1818    $('#report_profile').modal('show');
1819}
1820function openImageReportModal(image_id, seeker_user_id, source) {
1821    $('#reportImageForm .msgDiv').addClass('hide');
1822    $('#reportImageForm #image_id').val(image_id);
1823    $('#reportImageForm #seeker_user_id').val(seeker_user_id);
1824    $('#reportImageForm #source').val(source);
1825    $('#report_image').modal('show');
1826}
1827function issueReport(form) {
1828    var msgContainerTarget = "reportMsgContainer";
1829
1830    if (form == 'reportImageForm')
1831    msgContainerTarget = "reportMsgContainerImage";
1832    $("#" + form + " .msgDiv").removeClass("hide").html('');
1833    $("#jreport_loader").removeClass('d-none');
1834    var size = $('#' + form + ' [name=comments]:checked').length;
1835    if (size === 0) {
1836//        $('#' + form + ' .msgDiv').removeClass('hide');
1837//        $('#' + form + ' .msg').html('Please choose atleast one option');
1838//        setTimeout(function () {
1839//            $('#' + form + ' .msgDiv').addClass('hide');
1840//        }, 5000);
1841        commonAlert('danger', 'Please choose atleast one option', 'hide', msgContainerTarget);
1842        $("#jreport_loader").addClass('d-none');
1843        return false;
1844    }
1845    var cmnts = $('#' + form + ' #otherReason').val();
1846    if ((cmnts.trim() == "Type Reason" || cmnts.trim() == "") && $('input[name=comments]:checked').val() == "Other") {
1847        commonAlert('danger', 'Please type your comments', 'hide', msgContainerTarget);
1848        $("#jreport_loader").addClass('d-none');
1849        return false;
1850    }
1851    $('#' + form + ' .reportBtn').attr('disabled', true);
1852    var BtnTxt = $('#' + form).find('button.btn-primary').text();
1853    $('#' + form).find('button.btn-primary').html(spinner);
1854    var params = {};
1855    params = $('#' + form).serialize();
1856    var url = ajax_url + 'site/issueReport';
1857    xhrRequest(url, 'post', params, function (resp) {
1858        $('#' + form).find('button.btn-primary').text(BtnTxt);
1859        if (resp.status === true) {
1860            $("#jreport_loader").addClass('d-none');
1861            commonAlert('success', resp.message, 'hide', msgContainerTarget);
1862            /*$('#' + form + ' .msgDiv').removeClass('hide');
1863             $('#' + form + ' .reportBtn').attr('disabled', false);
1864             $('#' + form + ' .msg').html(resp.message);*/
1865            setTimeout(function () {
1866                $('#reportJob').modal('toggle');
1867            }, 3000);
1868        } else {
1869            $("#jreport_loader").addClass('d-none');
1870            if (typeof resp.code !== 'undefined' && resp.code === 401) {
1871                authenticate();
1872            }
1873
1874            commonAlert('danger', resp.message, 'hide', msgContainerTarget);
1875            /*console.log('ERR: ', resp.message);
1876             $('#' + form + ' .msgDiv').removeClass('hide');
1877             $('#' + form + ' .msg').html(resp.message);*/
1878        }
1879        setTimeout(function () {
1880            $('#' + form + ' #other_comments').removeClass('in');
1881            $('#' + form + ' #otherReason').val('');
1882            $('#' + form + ' input:radio').attr('checked', false);
1883            var clsBtn = $('.modal.in').find('button.close');
1884            $(clsBtn).trigger('click');
1885            $('#' + form + ' .reportBtn').attr('disabled', false);
1886        }, 2000);
1887        /*setTimeout(function () {
1888         $('#' + form + ' .msgDiv').addClass('hide');
1889         }, 8000);*/
1890    });
1891}
1892
1893
1894$(document).ready(function () {
1895    /* custom-select starts */
1896    if ($(".selectPicker").length) {
1897        $(".selectPicker").load(function () {
1898            if (this.value != '') {
1899                $(this).parent().addClass("active");
1900            } else {
1901                $(this).parent().removeClass("active");
1902                console.log('not selected');
1903            }
1904        }).load();
1905        $(".selectPicker").change(function () {
1906            if (this.value != '') {
1907                $(this).parent().addClass("active");
1908            } else {
1909                $(this).parent().removeClass("active");
1910                console.log('not selected');
1911            }
1912        }).change();
1913    }
1914
1915    var flag_hec = false;
1916
1917    $('#HECLogin-form').validate({
1918        ignore: '',
1919        rules: {
1920            hec_email: {
1921                required: true,
1922                email: true
1923            },
1924            hec_mobile: {
1925                required: true,
1926                minlength: function () {
1927                    return 13;
1928                },
1929                maxlength: function () {
1930                    return 13;
1931                }
1932            }
1933        },
1934        messages: {
1935        },
1936        highlight: function (element) {
1937            $(element).parent().addClass('has-error');
1938        },
1939        unhighlight: function (element) {
1940            $(element).parent().removeClass('has-error');
1941        },
1942        errorElement: 'span',
1943        errorClass: 'help-block',
1944        errorPlacement: function (error, element) {
1945            if (element.parent('.input-group').length) {
1946                error.insertAfter(element.parent());
1947            } else if (element.parent('.twince').length) {
1948                error.insertAfter(element.parent('.twince').find(".errorc"));
1949            } else {
1950                error.insertAfter(element);
1951            }
1952        }
1953    });
1954
1955    $('body').on('submit', "#HECLogin-form", function (event) {
1956        event.preventDefault();
1957        if (flag_hec) {
1958            return false;
1959        }
1960        flag_hec = true;
1961        var that = $(this);
1962        var data = that.serialize();
1963        var message = that.find('#messageContainer');
1964        var alert = message.find('.alert');
1965
1966        $.ajax({
1967            url: ajax_url + 'dashboard/hec',
1968            type: 'POST',
1969            dataType: 'json',
1970            data: data,
1971        })
1972                .done(function (res) {
1973                    if (res.code == 2) {
1974                        alert.removeClass('alert-danger');
1975                        alert.addClass('alert-success');
1976                        alert.html(res.msg);
1977                        message.removeClass('hidden');
1978                        that[0].reset();
1979                    } else if (res.code == 1) {
1980                        window.location = res.msg;
1981                    } else {
1982                        alert.removeClass('alert-success');
1983                        alert.addClass('alert-danger');
1984                        alert.html(res.msg);
1985                        message.removeClass('hidden');
1986                        setTimeout(function () {
1987                            message.addClass('hidden');
1988                        }, 2000);
1989                    }
1990                })
1991                .always(function () {
1992                    flag_hec = false;
1993                });
1994
1995    });
1996    /* custom-select ends */
1997});
1998
1999function verifyCodeCaptcha(token) {
2000    $('#verify_code_captcha .loading').show();
2001    $('#messageContainer').html('');
2002    var params = {};
2003    params = $('#verify_code_captcha').serialize();
2004    params += '&userJetonRecaptcha=' + token;
2005
2006    $.ajax({
2007        url: ajax_url + 'user/verifyregistercode',
2008        type: 'POST',
2009        data: params,
2010        dataType: 'json',
2011        headers: {
2012            //'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
2013        },
2014        success: function (resp) {
2015            $('#verify_code_captcha .loading').hide();
2016            console.log(resp);
2017            if (resp.status == true && resp.code == 11) {
2018                window.location.href = resp.url;
2019                //commonAlert('success', resp.message);
2020                return false;
2021            } else {
2022                commonAlert('danger', resp.message);
2023                return false;
2024            }
2025        },
2026        error: function (resp) {
2027            log(resp);
2028        }
2029
2030    });
2031}
2032
2033function isValidEmail(email) {
2034    var regex = /^([a-zA-Z0-9_.+-])+\@(([a-zA-Z0-9-])+\.)+([a-zA-Z0-9]{2,4})+$/;
2035    return regex.test(email);
2036
2037}
2038function userAuthenticate() {
2039                                                var email;
2040                                                var data = {};
2041                                               email= document.getElementById('email').value;
2042                                               data.email=email;
2043//                                              
2044                                                $.ajax({
2045                                                url: ajax_url + 'user/userData',
2046                                                type: 'POST',
2047                                                dataType: 'json',
2048                                                data: data,
2049                                                 })
2050                                                .done(function (res) {
2051                                                    if (res.code === 200) {
2052                                                        $('.emailalert').show();
2053                                                        $('.emailalertmsg').html(res.message);
2054                                                    }
2055                                                    else{
2056                                                        $('.emailalert').hide();
2057                                                    }
2058                                                })
2059
2060                                                 }

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.