!function(e){"use strict";e.WS_Form.prototype.form_geo=function(){if(this.get_object_meta_value(this.form,"geo")){var e=this.get_object_meta_value(this.form,"geo_mapping");if("object"==typeof e)for(var o in e)if(e.hasOwnProperty(o)){var _=e[o];if(_.geo_element&&_.ws_form_field){var t=_.geo_element,r=_.ws_form_field;this.form_geo_get_element(t,"","form_geo_map_process",{field_id:r})}}}},e.WS_Form.prototype.form_geo_map_process=function(o,_){var t=this,r=_.field_id,a=e('[id^="'+this.esc_selector(this.form_id_prefix)+'field-wrapper-"][data-id="'+this.esc_selector(r)+'"]:not([data-wsf-geo-set]),input[type="hidden"][data-id-hidden="'+this.esc_selector(r)+'"]:not([data-wsf-geo-set])',this.form_canvas_obj);a.length&&a.each(function(){var _=void 0!==e(this).attr("data-repeatable-index")&&e(this).attr("data-repeatable-index"),a=!1!==_?"-repeat-"+_:"",i=e("#"+t.form_id_prefix+"field-wrapper-"+r+a,t.form_canvas_obj);i.attr("data-wsf-geo-set","");var s=e("#"+t.form_id_prefix+"field-"+r+a,t.form_canvas_obj);t.field_value_set(i,s,o)})},e.WS_Form.prototype.form_geo_get_element=function(o,_,t,r){if(void 0===o)return!1;if(void 0===_&&(_=""),void 0===t)return!1;void 0===r&&(r=!1);var a=this;if(this.form_geo_stack.push({element:o,default_value:_,callback:t,callback_data:r}),!1!==this.form_geo_cache)this.form_geo_stack_empty();else{if(this.form_geo_cache_request)return;this.form_geo_cache_request=!0;var i=ws_form_settings.ip_lookup_method;switch(i){case"ipinfo":var s="https://ipinfo.io/json";break;default:"ipapico"!=i&&(this.log("log_geo_endpoint_fallback"),i="ipapico");s="https://ipapi.co/json"}"function"==typeof this.form_loader_show&&this.form_loader_show("geolocate"),e.get(s,function(e){if("object"!=typeof e)return!1;switch(i){case"ipinfo":var o=a.form_geo_get_resp_value(e,"loc"),_=o.split(","),t=_[0],r=_[1];a.form_geo_cache={ip:a.form_geo_get_resp_value(e,"ip"),city:a.form_geo_get_resp_value(e,"city"),region_short:a.form_geo_get_resp_value(e,"region"),region_long:a.form_geo_get_resp_value(e,"region"),postal_code:a.form_geo_get_resp_value(e,"postal"),country_long:"",country_short:a.form_geo_get_resp_value(e,"country"),lat:t,lng:r,lat_lng:o,org:a.form_geo_get_resp_value(e,"org"),asn:"",currency_code:"",currency:"",timezone:a.form_geo_get_resp_value(e,"timezone")};break;default:t=a.form_geo_get_resp_value(e,"latitude"),r=a.form_geo_get_resp_value(e,"longitude");a.form_geo_cache={ip:a.form_geo_get_resp_value(e,"ip"),city:a.form_geo_get_resp_value(e,"city"),region_short:a.form_geo_get_resp_value(e,"region_code"),region_long:a.form_geo_get_resp_value(e,"region"),postal_code:a.form_geo_get_resp_value(e,"postal"),country_short:a.form_geo_get_resp_value(e,"country_code"),country_long:a.form_geo_get_resp_value(e,"country_name"),lat:t,lng:r,lat_lng:t+","+r,org:a.form_geo_get_resp_value(e,"org"),asn:a.form_geo_get_resp_value(e,"asn"),currency_code:a.form_geo_get_resp_value(e,"currency"),currency_name:a.form_geo_get_resp_value(e,"currency_name"),timezone:a.form_geo_get_resp_value(e,"timezone")}}a.log("log_geo_success",i),"function"==typeof this.form_loader_hide&&a.form_loader_hide(),a.form_geo_stack_empty()}).fail(function(e){a.error("error_geo",s)})}},e.WS_Form.prototype.form_geo_get_resp_value=function(e,o,_){return void 0===_&&(_=""),"object"!=typeof e||void 0===e[o]?_:this.esc_html(e[o])},e.WS_Form.prototype.form_geo_stack_empty=function(){for(;this.form_geo_stack.length;){var e=this.form_geo_stack.shift();this.form_geo_callback(e.element,e.default_value,e.callback,e.callback_data)}},e.WS_Form.prototype.form_geo_callback=function(e,o,_,t){if(void 0===e)return!1;if(void 0===o&&(o=""),void 0===_)return!1;void 0===t&&(t=!1);var r=void 0!==this.form_geo_cache[e]?this.form_geo_cache[e]:o;"function"==typeof _&&_(r),"string"==typeof _&&this[_](r,t)}}(jQuery);