Advertisement
jegtheme

plugin.js

Jul 18th, 2016
123
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. (function ($) {
  2.     "use strict";
  3.  
  4.     function drop_pin_map()
  5.     {
  6.         var selector = $("#map_location");
  7.         if($(selector).length)
  8.         {
  9.             var map = null;
  10.             var endMarker;
  11.  
  12.             var mapcenter = null;
  13.             var maplocation = $(selector).val();
  14.  
  15.             if(maplocation === '') {
  16.                 mapcenter = [40.712597, -74.003035];
  17.                 if (navigator.geolocation) {
  18.                         navigator.geolocation.getCurrentPosition(function(position) {
  19.                         mapcenter = [position.coords.latitude, position.coords.longitude];
  20.                         if(map) {
  21.                             map.setCenter({
  22.                                 lat: mapcenter[0],
  23.                                 lng: mapcenter[1]
  24.                             });
  25.                             dropPin();
  26.                         }
  27.                     });
  28.                 }
  29.             } else {
  30.                 mapcenter = maplocation.split(',');
  31.             }
  32.  
  33.  
  34.             var initialize = function () {
  35.                 var paris = new google.maps.LatLng(mapcenter[0], mapcenter[1]);
  36.                 var mapOptions = {
  37.                     zoom: 16,
  38.                     center: paris
  39.                 };
  40.                 map = new google.maps.Map(document.getElementById("jobmap"), mapOptions);
  41.                 dropPin();
  42.             };
  43.  
  44.             var dropPin = function () {
  45.                 // if any previous marker exists, let's first remove it from the map
  46.                 if (endMarker) {
  47.                     endMarker.setMap(null);
  48.                 }
  49.                 // create the marker
  50.                 endMarker = new google.maps.Marker({
  51.                     position: map.getCenter(),
  52.                     map: map,
  53.                     draggable: true
  54.                 });
  55.                 copyMarkerpositionToInput();
  56.                 google.maps.event.addListener(endMarker, 'dragend', function() {
  57.                     copyMarkerpositionToInput();
  58.                 });
  59.             };
  60.  
  61.             var copyMarkerpositionToInput = function() {
  62.                 var position = endMarker.getPosition().lat() +','+  endMarker.getPosition().lng();
  63.                 $("#map_location").val(position);
  64.             };
  65.  
  66.             google.maps.event.addDomListener(window, 'load', initialize);
  67.         }
  68.     }
  69.  
  70.     function do_number ()
  71.     {
  72.         var inputnumber = $('input.number');
  73.  
  74.         var do_change_number = function(element){
  75.             // format number
  76.             $(element).val(function(index, value) {
  77.                 return value
  78.                     .replace(/\D/g, "")
  79.                     .replace(/\B(?=(\d{3})+(?!\d))/g, ".");
  80.             });
  81.         };
  82.  
  83.         $(inputnumber).keyup(function(event) {
  84.  
  85.             // skip for arrow keys
  86.             if(event.which >= 37 && event.which <= 40) return;
  87.  
  88.             // format number
  89.             do_change_number(this);
  90.         });
  91.  
  92.         do_change_number(inputnumber);
  93.     }
  94.  
  95.     function time_picker() {
  96.         // time pick
  97.         $(".datetimepicker").datetimepicker({
  98.             format : joption.date_format,
  99.             timepicker:false,
  100.             scrollInput: false
  101.         });
  102.  
  103.         $(".monthyearpicker").datetimepicker({
  104.             format : 'F Y',
  105.             timepicker:false,
  106.             scrollInput: false
  107.         });
  108.     }
  109.  
  110.     function do_choosen()
  111.     {
  112.         // choosen
  113.         $(".chosen-select").chosen({no_results_text: joption.selectNotFound});
  114.     }
  115.  
  116.     function clone_element()
  117.     {
  118.         // button
  119.         $(".clonable-button").bind('click', function(e){
  120.             e.preventDefault();
  121.             var section = $(this).data('clone');
  122.             var parent = $('[data-id="' + section + '"]');
  123.             var sequence = 0;
  124.  
  125.             if(!$(this).data('last')) {
  126.                 sequence = $(parent).find('.cloneable').last().data('id');
  127.             } else {
  128.                 sequence = $(this).data('last');
  129.             }
  130.  
  131.             $(this).data('last', ++sequence);
  132.  
  133.             $.ajax({
  134.                 url : joption.adminurl,
  135.                 type: 'post',
  136.                 dataType: "html",
  137.                 data: {
  138.                     'action' : 'generate_clone',
  139.                     'section' : section,
  140.                     'sequence' : sequence
  141.                 },
  142.                 success: function (data) {
  143.                     if (data === '') {
  144.                         alert('Sometime not right!');
  145.                     } else {
  146.                         $(parent).append(data);
  147.  
  148.                         $(".monthyearpicker").datetimepicker({
  149.                             format : 'F Y',
  150.                             timepicker:false,
  151.                             scrollInput: false
  152.                         });
  153.  
  154.  
  155.                         // tiny mce
  156.                         KIA_metabox.runTinyMCE($(data).find('.wpeditme'));
  157.                     }
  158.                 }
  159.             });
  160.         });
  161.  
  162.         $('.clone-wrapper').on('click', '.clone-remove',function(){
  163.             var parent = $(this).parents('.cloneable');
  164.             $(parent).remove();
  165.         });
  166.     }
  167.  
  168.     function change_application_status_modal()
  169.     {
  170.         $(".application-action > a").bind('click', function(e){
  171.             e.preventDefault();
  172.  
  173.             var modal = $("#modal-application-status");
  174.             var status = $(this).data('status');
  175.  
  176.             // see post status
  177.             $(modal).find('.post-status').removeClass('active');
  178.             $(modal).find("[data-status=" + status + "]").addClass('active');
  179.             $(modal).find(".status-change").val(status);
  180.  
  181.             $(modal).modal('show');
  182.         });
  183.     }
  184.  
  185.     function do_tooltip()
  186.     {
  187.         $('[data-toggle="tooltip"]').tooltip();
  188.     }
  189.  
  190.     function remove_attached_resume()
  191.     {
  192.         $(".current-resume i").bind('click', function(){
  193.             var parent = $(this).parents('.current-resume');
  194.             $(parent).find('input').val('');
  195.             $(parent).find('.current-resume-file').remove();
  196.         });
  197.     }
  198.  
  199.  
  200.     function delete_notification()
  201.     {
  202.         $(".delete-form").submit(function(){
  203.             var c = confirm(joption.deleteConfirm);
  204.             return c;
  205.         });
  206.     }
  207.  
  208.     /** job form filter **/
  209.  
  210.     function form_filter()
  211.     {
  212.         $(document.body).bind('ajax_filter_search', $.debounce(250, change_result));
  213.         $(".search-filter").submit(function(e){
  214.             $(document.body).trigger('ajax_filter_search');
  215.             e.preventDefault();
  216.         });
  217.     }
  218.  
  219.     var xhr = null;
  220.     function change_result()
  221.     {
  222.         var searchfilter = $(".search-filter");
  223.         var filteroverlay = $(".filter-overlay");
  224.         var boxcontent = $(".box-list-wrapper");
  225.  
  226.         $(filteroverlay).fadeIn();
  227.  
  228.         if(xhr !== null) xhr.abort();
  229.         xhr = $.ajax({
  230.             url : jobplanetoption.ajaxurl,
  231.             type: 'post',
  232.             dataType: "html",
  233.             data: $(searchfilter).serialize(),
  234.             success: function (data) {
  235.                 $(boxcontent).html(data);
  236.                 $(filteroverlay).fadeOut();
  237.                 $('html, body').animate({
  238.                     scrollTop: $(boxcontent).offset().top
  239.                 }, 'fast');
  240.             }
  241.         });
  242.     }
  243.  
  244.     function autocomplete_location()
  245.     {
  246.         $(".location-form").each(function(){
  247.             var element = this;
  248.             var auto = $(element).find('.location');
  249.             var input = $(element).find('input[name="location"]');
  250.             var currentid = $(input).val();
  251.  
  252.             $(auto).on('input', function(e){
  253.                 $(input).val('');
  254.                 if(currentid !== '' ) {
  255.                     reset_paging();
  256.                     $( document.body ).trigger( 'ajax_filter_search' );
  257.                 }
  258.                 currentid = '';
  259.             });
  260.  
  261.             $(auto).autocomplete({
  262.                 source : function(request, response){
  263.                     $.ajax({
  264.                         url : jobplanetoption.ajaxurl,
  265.                         type: 'post',
  266.                         dataType: "json",
  267.                         data: {
  268.                             action : 'search_location',
  269.                             s : request.term
  270.                         },
  271.                         success: function (data) {
  272.                             response( data );
  273.                         }
  274.                     });
  275.                 },
  276.                 minLength: 2,
  277.                 select: function( event, ui ) {
  278.                     reset_paging();
  279.                     $(input).val(ui.item.id);
  280.                     if(!$(auto).hasClass('no-ajax')) {
  281.                         $(document.body).trigger('ajax_filter_search');
  282.                     }
  283.                     currentid = ui.item.id;
  284.                 },
  285.                 open: function() {},
  286.                 close: function() {}
  287.             });
  288.         });
  289.     }
  290.  
  291.     function priceslider()
  292.     {
  293.         $(".jobplanet_price_slider").each(function(){
  294.             var element = this;
  295.             var priceslider = $(element).find('.price_slider');
  296.  
  297.             var min_input = $(element).find('.price_slider_amount #min_price'),
  298.                 max_input = $(element).find('.price_slider_amount #max_price'),
  299.                 from = $(element).find('.from'),
  300.                 to = $(element).find('.to'),
  301.                 min_price = $(min_input).data('min'),
  302.                 max_price = $(max_input).data('max'),
  303.                 current_min_price = parseInt( min_price, 10 ),
  304.                 current_max_price = parseInt( max_price, 10 );
  305.  
  306.             if(current_max_price > 0 )
  307.             {
  308.                 $(priceslider).slider({
  309.                     range: true,
  310.                     animate: true,
  311.                     min: min_price,
  312.                     max: max_price,
  313.                     values: [ current_min_price, current_max_price ],
  314.                     create: function() {
  315.  
  316.                         $( min_input ).val( current_min_price );
  317.                         $( max_input ).val( current_max_price );
  318.  
  319.                         $( from ).text( min_price.formatMoney(0, ',', '.') );
  320.                         $( to ).text( max_price.formatMoney(0, ',', '.') );
  321.  
  322.                         $( document.body ).trigger( 'price_slider_create', [ current_min_price, current_max_price ] );
  323.                     },
  324.                     slide: function( event, ui ) {
  325.  
  326.                         $( min_input ).val( ui.values[0] );
  327.                         $( max_input ).val( ui.values[1] );
  328.                         $( from ).text( ui.values[0].formatMoney(0, ',', '.') );
  329.                         $( to ).text( ui.values[1].formatMoney(0, ',', '.') );
  330.  
  331.                         $( document.body ).trigger( 'ajax_filter_search', [ ui.values[0], ui.values[1] ] );
  332.                     },
  333.                     change: function( event, ui ) {
  334.  
  335.                         $( document.body ).trigger( 'ajax_filter_search', [ ui.values[0], ui.values[1] ] );
  336.                     }
  337.                 });
  338.             }
  339.         });
  340.     }
  341.  
  342.  
  343.     var reset_paging = function()
  344.     {
  345.         $(".search-filter").find(".paged").val(1);
  346.     };
  347.  
  348.     function hook_element_filter()
  349.     {
  350.         var searchfilter = $(".search-filter");
  351.         var keyword = $("#keyword");
  352.         // keyword
  353.         $(keyword).on('input', function(e){
  354.             if($(keyword).val().length > 2 || $(keyword).val().length == 0) {
  355.                 reset_paging();
  356.                 $( document.body ).trigger( 'ajax_filter_search' );
  357.             }
  358.         });
  359.  
  360.         // location
  361.         // autocomplete_location();
  362.  
  363.         // contract type
  364.         $(".contract-type input").change(function(){
  365.             reset_paging();
  366.             $( document.body ).trigger( 'ajax_filter_search' );
  367.         });
  368.  
  369.         // category
  370.         $(".categories").change(function(){
  371.             reset_paging();
  372.             $( document.body ).trigger( 'ajax_filter_search' );
  373.         });
  374.  
  375.         // salary range
  376.         var salaryfilter = $('.salary-filter');
  377.         $(".salary-range").change(function(){
  378.             var range = $(".salary-range").val();
  379.             $(salaryfilter).find('.jobplanet_price_slider').remove();
  380.             reset_paging();
  381.  
  382.             $.ajax({
  383.                 url : jobplanetoption.ajaxurl,
  384.                 type: 'post',
  385.                 dataType: "html",
  386.                 data: {
  387.                     action  : 'get_price_range',
  388.                     range   : range
  389.                 },
  390.                 success: function (data) {
  391.                     $(salaryfilter).append(data);
  392.                     $( document.body ).trigger( 'ajax_filter_search' );
  393.                     priceslider();
  394.                 }
  395.             });
  396.         });
  397.  
  398.         // price slider
  399.         priceslider();
  400.  
  401.         // paging
  402.         $(".box-list-wrapper").on('click', ".ajax-paging a", function(e){
  403.             var page = $(this).data('page');
  404.             $(searchfilter).find(".paged").val(page);
  405.             $( document.body ).trigger( 'ajax_filter_search' );
  406.             e.preventDefault();
  407.         });
  408.     }
  409.  
  410.  
  411.     function sendemailsubmit()
  412.     {
  413.         $('.send-job-form').bind('submit', function(e){
  414.             e.preventDefault();
  415.             var element = this;
  416.             var modal = $('#modal-email');
  417.             var overlay = $(modal).find('.modal-body-overlay');
  418.             var button = $(modal).find('input[type="submit"]');
  419.  
  420.             $(overlay).show();
  421.             $(button).val(jobplanetoption.sending);
  422.  
  423.             $.ajax({
  424.                 url : jobplanetoption.ajaxurl,
  425.                 type: 'post',
  426.                 dataType: "html",
  427.                 data: $(element).serialize(),
  428.                 success: function (data) {
  429.                     $(overlay).hide();
  430.                     $(button).val(jobplanetoption.send);
  431.                     if(data !== '') {
  432.                         alert(data);
  433.                     } else {
  434.                         $(modal).find('input[name="to"]').val('');
  435.                         $(modal).find('textarea[name="comment"]').val('');
  436.                         alert(jobplanetoption.emailsent);
  437.                     }
  438.                 }
  439.             });
  440.         });
  441.     }
  442.  
  443.     function sendemail()
  444.     {
  445.         $(".box-list-wrapper").on('click', ".send-email", function(e){
  446.             e.preventDefault();
  447.             var id = $(this).data('id');
  448.             var modal = $("#modal-email");
  449.  
  450.             $(modal).find('.job_id').val(id);
  451.             $(modal).modal('show');
  452.         });
  453.     }
  454.  
  455.     function followcompany()
  456.     {
  457.         $(".box-list-wrapper").on('click', ".follow-company", function(e){
  458.             e.preventDefault();
  459.  
  460.             var element = this;
  461.  
  462.             if($(element).attr('data-follow') == 0) {
  463.                 var id = $(element).data('id');
  464.                 $(element).text(jobplanetoption.loading);
  465.  
  466.                 $.ajax({
  467.                     url : jobplanetoption.ajaxurl,
  468.                     type: 'post',
  469.                     dataType: "html",
  470.                     data: {
  471.                         'action' : 'follow_company',
  472.                         'company_id' : id
  473.                     },
  474.                     success: function (data) {
  475.                         if(data == 1) {
  476.                             $(element).text(jobplanetoption.companyFollowed).attr('data-follow', 1).addClass('btn-success');
  477.                         } else {
  478.                             $(element).text(jobplanetoption.failedFollowCompany);
  479.                         }
  480.                     },
  481.                     error : function(){
  482.                         $(element).text(jobplanetoption.failedFollowCompany);
  483.                     }
  484.                 });
  485.             } else {
  486.                 alert(jobplanetoption.alreadyFollowCompany);
  487.             }
  488.         });
  489.     }
  490.  
  491.     function bookmarkjob()
  492.     {
  493.         $(".box-list-wrapper").on('click', ".bookmark-job", function(e){
  494.             e.preventDefault();
  495.  
  496.             var element = this;
  497.  
  498.             if($(element).attr('data-bookmarked') == 0) {
  499.                 var id = $(element).data('id');
  500.                 $(element).text(jobplanetoption.loading);
  501.  
  502.                 $.ajax({
  503.                     url : jobplanetoption.ajaxurl,
  504.                     type: 'post',
  505.                     dataType: "html",
  506.                     data: {
  507.                         'action' : 'bookmark_job',
  508.                         'job_id' : id
  509.                     },
  510.                     success: function (data) {
  511.                         if(data == 1) {
  512.                             $(element).text(jobplanetoption.jobBookmarked).attr('data-bookmarked', 1).addClass('btn-success');
  513.                         } else {
  514.                             $(element).text(jobplanetoption.failedBookmark);
  515.                         }
  516.                     },
  517.                     error : function(){
  518.                         $(element).text(jobplanetoption.failedBookmark);
  519.                     }
  520.                 });
  521.             } else {
  522.                 alert(jobplanetoption.alredyBookmark);
  523.             }
  524.         });
  525.     }
  526.  
  527.     function saveresume()
  528.     {
  529.         $(".box-list-wrapper").on('click', ".save-resume", function(e){
  530.             e.preventDefault();
  531.  
  532.             var element = this;
  533.  
  534.             if($(element).attr('data-save') == 0) {
  535.                 var id = $(element).data('id');
  536.                 $(element).text(jobplanetoption.loading);
  537.  
  538.                 $.ajax({
  539.                     url : jobplanetoption.ajaxurl,
  540.                     type: 'post',
  541.                     dataType: "html",
  542.                     data: {
  543.                         'action' : 'save_resume',
  544.                         'resume_id' : id
  545.                     },
  546.                     success: function (data) {
  547.                         if(data == 1) {
  548.                             $(element).text(jobplanetoption.resumeSaved).attr('data-save', 1).addClass('btn-success');
  549.                         } else {
  550.                             $(element).text(jobplanetoption.failedSaveResume);
  551.                         }
  552.                     },
  553.                     error : function(){
  554.                         $(element).text(jobplanetoption.failedSaveResume);
  555.                     }
  556.                 });
  557.             } else {
  558.                 alert(jobplanetoption.alredySavedResume);
  559.             }
  560.         });
  561.     }
  562.  
  563.     function job_vc()
  564.     {
  565.         $(".jobplanet-vc-job").on('click', '.pagination a', function(e){
  566.             e.preventDefault();
  567.  
  568.             var parent = $(this).parents('.jobplanet-vc-job');
  569.             var form = $(parent).find('form');
  570.             var overlay = $(parent).find('.job-vc-overlay');
  571.             var block = $(parent).find('.jobplanet-vc-overwrite');
  572.  
  573.             $(form).find('input[name=currentpage]').val($(this).data('page'));
  574.             $(overlay).stop().fadeIn();
  575.  
  576.             $.ajax({
  577.                 url : joption.adminurl,
  578.                 type: 'post',
  579.                 dataType: "html",
  580.                 data: $(form).serialize(),
  581.                 success: function (data) {
  582.                     $(block).html($(data).find('.jobplanet-vc-overwrite'));
  583.                     $(overlay).stop().fadeOut();
  584.                 }
  585.             });
  586.         });
  587.     }
  588.  
  589.     function add_job_location()
  590.     {
  591.         $(".add-job-location").bind('click', function(){
  592.             $(".another-job-location").fadeIn();
  593.         });
  594.     }
  595.  
  596.     function autofilllocation()
  597.     {
  598.         $(".location-autocomplete").each(function(){
  599.             var element = $(this).get(0);
  600.             var autocomplete = new google.maps.places.Autocomplete(
  601.                 element ,
  602.                 { types: ['geocode'] }
  603.             );
  604.  
  605.             if($(element).hasClass('filter-location')) {
  606.                 google.maps.event.addListener(autocomplete, 'place_changed', function() {
  607.                     $( document.body ).trigger( 'ajax_filter_search' );
  608.                 });
  609.             }
  610.         });
  611.     }
  612.  
  613.     function dom_ready()
  614.     {
  615.         // time picker
  616.         time_picker();
  617.  
  618.         // choosen
  619.         do_choosen();
  620.  
  621.         // clone element
  622.         clone_element();
  623.  
  624.         // change application modal
  625.         change_application_status_modal();
  626.  
  627.         // do tooltip
  628.         do_tooltip();
  629.  
  630.         // remove attached resume
  631.         remove_attached_resume();
  632.  
  633.         // maps
  634.         drop_pin_map();
  635.  
  636.         // number
  637.         do_number();
  638.  
  639.         // delete notification
  640.         delete_notification();
  641.  
  642.         // form filter
  643.         form_filter();
  644.         hook_element_filter();
  645.  
  646.         // job hook
  647.         bookmarkjob();
  648.         sendemail();
  649.         sendemailsubmit();
  650.  
  651.         // save resume
  652.         saveresume();
  653.  
  654.         // save resume
  655.         followcompany();
  656.  
  657.         job_vc();
  658.  
  659.         // add job location
  660.         add_job_location();
  661.  
  662.         // autofill location
  663.         autofilllocation();
  664.     }
  665.  
  666.     $(document).ready(dom_ready);
  667.  
  668. })(jQuery);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement