Advertisement
jegtheme

plugin.js

May 13th, 2016
117
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.  
  298.             var min_input = $(element).find('.price_slider_amount #min_price'),
  299.                 max_input = $(element).find('.price_slider_amount #max_price'),
  300.                 from = $(element).find('.from'),
  301.                 to = $(element).find('.to'),
  302.                 min_price = $(min_input).data('min'),
  303.                 max_price = $(max_input).data('max'),
  304.                 current_min_price = parseInt( min_price, 10 ),
  305.                 current_max_price = parseInt( max_price, 10 );
  306.  
  307.             if(current_min_price > 0 && current_max_price > 0 )
  308.             {
  309.                 $(priceslider).slider({
  310.                     range: true,
  311.                     animate: true,
  312.                     min: min_price,
  313.                     max: max_price,
  314.                     values: [ current_min_price, current_max_price ],
  315.                     create: function() {
  316.  
  317.                         $( min_input ).val( current_min_price );
  318.                         $( max_input ).val( current_max_price );
  319.  
  320.                         $( from ).text( min_price.formatMoney(0, ',', '.') );
  321.                         $( to ).text( max_price.formatMoney(0, ',', '.') );
  322.  
  323.                         $( document.body ).trigger( 'price_slider_create', [ current_min_price, current_max_price ] );
  324.                     },
  325.                     slide: function( event, ui ) {
  326.  
  327.                         $( min_input ).val( ui.values[0] );
  328.                         $( max_input ).val( ui.values[1] );
  329.                         $( from ).text( ui.values[0].formatMoney(0, ',', '.') );
  330.                         $( to ).text( ui.values[1].formatMoney(0, ',', '.') );
  331.  
  332.                         $( document.body ).trigger( 'ajax_filter_search', [ ui.values[0], ui.values[1] ] );
  333.                     },
  334.                     change: function( event, ui ) {
  335.  
  336.                         $( document.body ).trigger( 'ajax_filter_search', [ ui.values[0], ui.values[1] ] );
  337.                     }
  338.                 });
  339.             }
  340.         });
  341.     }
  342.  
  343.  
  344.     var reset_paging = function()
  345.     {
  346.         $(".search-filter").find(".paged").val(1);
  347.     };
  348.  
  349.     function hook_element_filter()
  350.     {
  351.         var searchfilter = $(".search-filter");
  352.         var keyword = $("#keyword");
  353.         // keyword
  354.         $(keyword).on('input', function(e){
  355.             if($(keyword).val().length > 2 || $(keyword).val().length == 0) {
  356.                 reset_paging();
  357.                 $( document.body ).trigger( 'ajax_filter_search' );
  358.             }
  359.         });
  360.  
  361.         // location
  362.         // autocomplete_location();
  363.  
  364.         // contract type
  365.         $(".contract-type input").change(function(){
  366.             reset_paging();
  367.             $( document.body ).trigger( 'ajax_filter_search' );
  368.         });
  369.  
  370.         // category
  371.         $(".categories").change(function(){
  372.             reset_paging();
  373.             $( document.body ).trigger( 'ajax_filter_search' );
  374.         });
  375.  
  376.         // salary range
  377.         var salaryfilter = $('.salary-filter');
  378.         $(".salary-range").change(function(){
  379.             var range = $(".salary-range").val();
  380.             $(salaryfilter).find('.jobplanet_price_slider').remove();
  381.             reset_paging();
  382.  
  383.             $.ajax({
  384.                 url : jobplanetoption.ajaxurl,
  385.                 type: 'post',
  386.                 dataType: "html",
  387.                 data: {
  388.                     action  : 'get_price_range',
  389.                     range   : range
  390.                 },
  391.                 success: function (data) {
  392.                     $(salaryfilter).append(data);
  393.                     $( document.body ).trigger( 'ajax_filter_search' );
  394.                     priceslider();
  395.                 }
  396.             });
  397.         });
  398.  
  399.         // price slider
  400.         priceslider();
  401.  
  402.         // paging
  403.         $(".box-list-wrapper").on('click', ".ajax-paging a", function(e){
  404.             var page = $(this).data('page');
  405.             $(searchfilter).find(".paged").val(page);
  406.             $( document.body ).trigger( 'ajax_filter_search' );
  407.             e.preventDefault();
  408.         });
  409.     }
  410.  
  411.  
  412.     function sendemailsubmit()
  413.     {
  414.         $('.send-job-form').bind('submit', function(e){
  415.             e.preventDefault();
  416.             var element = this;
  417.             var modal = $('#modal-email');
  418.             var overlay = $(modal).find('.modal-body-overlay');
  419.             var button = $(modal).find('input[type="submit"]');
  420.  
  421.             $(overlay).show();
  422.             $(button).val(jobplanetoption.sending);
  423.  
  424.             $.ajax({
  425.                 url : jobplanetoption.ajaxurl,
  426.                 type: 'post',
  427.                 dataType: "html",
  428.                 data: $(element).serialize(),
  429.                 success: function (data) {
  430.                     $(overlay).hide();
  431.                     $(button).val(jobplanetoption.send);
  432.                     if(data !== '') {
  433.                         alert(data);
  434.                     } else {
  435.                         $(modal).find('input[name="to"]').val('');
  436.                         $(modal).find('textarea[name="comment"]').val('');
  437.                         alert(jobplanetoption.emailsent);
  438.                     }
  439.                 }
  440.             });
  441.         });
  442.     }
  443.  
  444.     function sendemail()
  445.     {
  446.         $(".box-list-wrapper").on('click', ".send-email", function(e){
  447.             e.preventDefault();
  448.             var id = $(this).data('id');
  449.             var modal = $("#modal-email");
  450.  
  451.             $(modal).find('.job_id').val(id);
  452.             $(modal).modal('show');
  453.         });
  454.     }
  455.  
  456.     function followcompany()
  457.     {
  458.         $(".box-list-wrapper").on('click', ".follow-company", function(e){
  459.             e.preventDefault();
  460.  
  461.             var element = this;
  462.  
  463.             if($(element).attr('data-follow') == 0) {
  464.                 var id = $(element).data('id');
  465.                 $(element).text(jobplanetoption.loading);
  466.  
  467.                 $.ajax({
  468.                     url : jobplanetoption.ajaxurl,
  469.                     type: 'post',
  470.                     dataType: "html",
  471.                     data: {
  472.                         'action' : 'follow_company',
  473.                         'company_id' : id
  474.                     },
  475.                     success: function (data) {
  476.                         if(data == 1) {
  477.                             $(element).text(jobplanetoption.companyFollowed).attr('data-follow', 1).addClass('btn-success');
  478.                         } else {
  479.                             $(element).text(jobplanetoption.failedFollowCompany);
  480.                         }
  481.                     },
  482.                     error : function(){
  483.                         $(element).text(jobplanetoption.failedFollowCompany);
  484.                     }
  485.                 });
  486.             } else {
  487.                 alert(jobplanetoption.alreadyFollowCompany);
  488.             }
  489.         });
  490.     }
  491.  
  492.     function bookmarkjob()
  493.     {
  494.         $(".box-list-wrapper").on('click', ".bookmark-job", function(e){
  495.             e.preventDefault();
  496.  
  497.             var element = this;
  498.  
  499.             if($(element).attr('data-bookmarked') == 0) {
  500.                 var id = $(element).data('id');
  501.                 $(element).text(jobplanetoption.loading);
  502.  
  503.                 $.ajax({
  504.                     url : jobplanetoption.ajaxurl,
  505.                     type: 'post',
  506.                     dataType: "html",
  507.                     data: {
  508.                         'action' : 'bookmark_job',
  509.                         'job_id' : id
  510.                     },
  511.                     success: function (data) {
  512.                         if(data == 1) {
  513.                             $(element).text(jobplanetoption.jobBookmarked).attr('data-bookmarked', 1).addClass('btn-success');
  514.                         } else {
  515.                             $(element).text(jobplanetoption.failedBookmark);
  516.                         }
  517.                     },
  518.                     error : function(){
  519.                         $(element).text(jobplanetoption.failedBookmark);
  520.                     }
  521.                 });
  522.             } else {
  523.                 alert(jobplanetoption.alredyBookmark);
  524.             }
  525.         });
  526.     }
  527.  
  528.     function saveresume()
  529.     {
  530.         $(".box-list-wrapper").on('click', ".save-resume", function(e){
  531.             e.preventDefault();
  532.  
  533.             var element = this;
  534.  
  535.             if($(element).attr('data-save') == 0) {
  536.                 var id = $(element).data('id');
  537.                 $(element).text(jobplanetoption.loading);
  538.  
  539.                 $.ajax({
  540.                     url : jobplanetoption.ajaxurl,
  541.                     type: 'post',
  542.                     dataType: "html",
  543.                     data: {
  544.                         'action' : 'save_resume',
  545.                         'resume_id' : id
  546.                     },
  547.                     success: function (data) {
  548.                         if(data == 1) {
  549.                             $(element).text(jobplanetoption.resumeSaved).attr('data-save', 1).addClass('btn-success');
  550.                         } else {
  551.                             $(element).text(jobplanetoption.failedSaveResume);
  552.                         }
  553.                     },
  554.                     error : function(){
  555.                         $(element).text(jobplanetoption.failedSaveResume);
  556.                     }
  557.                 });
  558.             } else {
  559.                 alert(jobplanetoption.alredySavedResume);
  560.             }
  561.         });
  562.     }
  563.  
  564.     function job_vc()
  565.     {
  566.         $(".jobplanet-vc-job").on('click', '.pagination a', function(e){
  567.             e.preventDefault();
  568.  
  569.             var parent = $(this).parents('.jobplanet-vc-job');
  570.             var form = $(parent).find('form');
  571.             var overlay = $(parent).find('.job-vc-overlay');
  572.             var block = $(parent).find('.jobplanet-vc-overwrite');
  573.  
  574.             $(form).find('input[name=currentpage]').val($(this).data('page'));
  575.             $(overlay).stop().fadeIn();
  576.  
  577.             $.ajax({
  578.                 url : joption.adminurl,
  579.                 type: 'post',
  580.                 dataType: "html",
  581.                 data: $(form).serialize(),
  582.                 success: function (data) {
  583.                     $(block).html($(data).find('.jobplanet-vc-overwrite'));
  584.                     $(overlay).stop().fadeOut();
  585.                 }
  586.             });
  587.         });
  588.     }
  589.  
  590.     function add_job_location()
  591.     {
  592.         $(".add-job-location").bind('click', function(){
  593.             $(".another-job-location").fadeIn();
  594.         });
  595.     }
  596.  
  597.     function autofilllocation()
  598.     {
  599.         $(".location-autocomplete").each(function(){
  600.             var element = $(this).get(0);
  601.             var autocomplete = new google.maps.places.Autocomplete(
  602.                 element ,
  603.                 { types: ['geocode'] }
  604.             );
  605.  
  606.             if($(element).hasClass('filter-location')) {
  607.                 google.maps.event.addListener(autocomplete, 'place_changed', function() {
  608.                     $( document.body ).trigger( 'ajax_filter_search' );
  609.                 });
  610.             }
  611.         });
  612.     }
  613.  
  614.     function dom_ready()
  615.     {
  616.         // time picker
  617.         time_picker();
  618.  
  619.         // choosen
  620.         do_choosen();
  621.  
  622.         // clone element
  623.         clone_element();
  624.  
  625.         // change application modal
  626.         change_application_status_modal();
  627.  
  628.         // do tooltip
  629.         do_tooltip();
  630.  
  631.         // remove attached resume
  632.         remove_attached_resume();
  633.  
  634.         // maps
  635.         drop_pin_map();
  636.  
  637.         // number
  638.         do_number();
  639.  
  640.         // delete notification
  641.         delete_notification();
  642.  
  643.         // form filter
  644.         form_filter();
  645.         hook_element_filter();
  646.  
  647.         // job hook
  648.         bookmarkjob();
  649.         sendemail();
  650.         sendemailsubmit();
  651.  
  652.         // save resume
  653.         saveresume();
  654.  
  655.         // save resume
  656.         followcompany();
  657.  
  658.         job_vc();
  659.  
  660.         // add job location
  661.         add_job_location();
  662.  
  663.         // autofill location
  664.         autofilllocation();
  665.     }
  666.  
  667.     $(document).ready(dom_ready);
  668.  
  669. })(jQuery);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement