diff --git a/templates/client/blank.html b/templates/client/blank.html
index b94ab16a..c119b6cc 100644
--- a/templates/client/blank.html
+++ b/templates/client/blank.html
@@ -129,7 +129,7 @@ This template include basic anf main styles and js files,
{% endblock %}
-
+
diff --git a/templates/client/includes/company/company_edit.html b/templates/client/includes/company/company_edit.html
index c4520e64..69ca699e 100644
--- a/templates/client/includes/company/company_edit.html
+++ b/templates/client/includes/company/company_edit.html
@@ -204,7 +204,7 @@
-
-

+
@@ -682,6 +682,17 @@
},
rating:{
id:'profile-rating'
+ },
+ map:{
+
+ blockId:"address-block",
+ canvasId:"gmap-canvas",
+ autocompleteId:"id_address_inf",
+ zoom:{
+ street:14,
+ city:12,
+ country:4
+ }
}
diff --git a/templates/client/static_client/css/main.css b/templates/client/static_client/css/main.css
index c6b62c34..34757c59 100644
--- a/templates/client/static_client/css/main.css
+++ b/templates/client/static_client/css/main.css
@@ -13129,7 +13129,7 @@ hr + .rq-note {
.edit-profile .editable-wrap .static-value.address{
line-height: 28px;
- height: 27px;
+ min-height: 27px;
display: block;
}
diff --git a/templates/client/static_client/js/_modules/page.company.js b/templates/client/static_client/js/_modules/page.company.js
index 087150a6..f91397c8 100644
--- a/templates/client/static_client/js/_modules/page.company.js
+++ b/templates/client/static_client/js/_modules/page.company.js
@@ -45,7 +45,7 @@ if (EXPO.company){
submit: function (dataToSend) {
var self = this;
if(!dataToSend){
- dataToSend = '';
+ dataToSend = new FormData(this.$form[0]);
}
$.ajax({
type: 'POST',
@@ -532,79 +532,183 @@ if (EXPO.company){
};
var Map = function (opt) {
- var self = this;
this.opt = opt;
- this.$wrapper= $("#address-block");
+ var self = this,
+ canvasId = this.opt.canvasId,
+ initGooglemap = function () {
+ var mapHolder = document.getElementById(self.opt.canvasId),
+ input = document.getElementById(self.opt.autocompleteId);
+
+ self.mapOptions = {
+ /**
+ * default zoom for country
+ */
+ zoom: self.opt.zoom.country
+ };
+ self.map = new google.maps.Map(mapHolder, self.mapOptions);
+ /**
+ * address to cordinates converter
+ * @type {google.maps.Geocoder}
+ */
+ self.geocoder = new google.maps.Geocoder();
+ /**
+ * refresh map with new data
+ */
+ self.refresh();
+ /**
+ * autocomplete for adress bar input
+ * @type {HTMLElement}
+ */
+ var autocomplete = new google.maps.places.Autocomplete(input);
+ autocomplete.bindTo('bounds', self.map);
+ /**
+ * autocomplete item selected event
+ */
+ google.maps.event.addListener(autocomplete, 'place_changed', function() {
+ if(!self.status.visible){
+
+ var place = autocomplete.getPlace();
+ if (!place.geometry) {
+ return;
+ }
+
+ /**
+ * If the place has a geometry, then present it on a map.
+ */
+ if (place.geometry.viewport) {
+ self.map.fitBounds(place.geometry.viewport);
+ } else {
+ self.map.setCenter(place.geometry.location);
+ self.map.setZoom(14);
+ }
+
+ self.marker.setPosition(place.geometry.location);
+ EXPO.company.forms.address_form.submit();
+ }
+
+
+ });
+
+
+ };
+ /**
+ * initialize map when body loads
+ */
+ google.maps.event.addDomListener(window, 'load', initGooglemap);
+ /**
+ * container with map itself and address static text
+ * @type {*|jQuery|HTMLElement}
+ */
+ this.$wrapper= $(document.getElementById(this.opt.blockId));
+ /**
+ * show and hide map button
+ * @type {*|jQuery|HTMLElement}
+ */
this.$toggle = $(".map-toggle",this.$wrapper);
+ /**
+ * container with map to hide and show
+ * @type {*|jQuery|HTMLElement}
+ */
this.$container = $(".map-wrap", this.$wrapper);
+
this.status ={
+ /**
+ * when container with map is hidden pararmeter visible = false
+ */
visible:false
};
this.$toggle.on("click", function () {
if($(this).hasClass("active")){
- /**
- * hide map
- */
self.hideMap();
}else{
+ self.showMap();
/**
- * show map
+ * just refresh the map drawing
*/
- self.showMap();
+ google.maps.event.trigger(self.map, 'resize');
+ self.refresh();
+
}
return false;
});
- /**
- * google map initialization
- */
- var mapHolder = document.getElementById('gmap-canvas');
- var initGooglemap = function () {
- var mapOptions = {
- zoom: 4
- };
- self.map = new google.maps.Map(mapHolder, mapOptions);
-
- //var marker = new google.maps.Marker({
- // position: myLatlng,
- // map: map
- //});
- //todo: если есть город то геокодировать его + сделать автокомплит
- var country = $("#id_country option:selected").text();
- var geocoder = new google.maps.Geocoder();
- geocoder.geocode({"address":country}, function (results, status) {
- if (status == google.maps.GeocoderStatus.OK){
- self.map.setCenter(results[0].geometry.location);
- var marker = new google.maps.Marker({
- map: self.map,
- position: results[0].geometry.location
- });
- }else{
- alert("Geocode was not successful for the following reason: " + status);
- }
- });
- };
- google.maps.event.addDomListener(window, 'load', initGooglemap);
-
-
};
+ /**
+ * methods
+ * @type {{showMap: Function, hideMap: Function, refresh: Function}}
+ */
Map.prototype = {
+ /**
+ * just show map container html tag
+ */
showMap: function () {
this.$toggle.addClass("active").children(".label").text(this.$toggle.attr("data-hide-text"));
this.status.visible = true;
this.$container.removeClass("hidden");
},
+ /**
+ * just hide map container html tag
+ */
hideMap: function () {
this.$toggle.removeClass("active").children(".label").text(this.$toggle.attr("data-show-text"));
this.status.visible = false;
this.$container.addClass("hidden");
},
+ /**
+ * collects dependent data and force map to refresh with that new data
+ */
refresh: function () {
+ var self = this,
+ country =$("#id_country option:selected").text(),
+ city = $(document.getElementById("id_city")).attr("data-init-text"),
+ address = $.trim(document.getElementById(self.opt.autocompleteId).value),
+ fullAddress;
+ if( $.trim(country) != ''){
+ this.status.visible = true;
+ this.$toggle.removeClass("hidden");
+ if($.trim(city) == ''){
+ fullAddress = country;
+ self.map.set("zoom",self.opt.zoom.country);
+ }else{
+ if($.trim(address) == ''){
+ fullAddress = country + ' '+city;
+ self.map.set("zoom",self.opt.zoom.city);
+ }else{
+ fullAddress = country + ' '+city+ ' '+ address;
+ self.map.set("zoom",self.opt.zoom.street);
+
+ }
+ }
+ /**
+ * convert text adress data to lat/Ling coordinates with help of google api
+ */
+ this.geocoder.geocode({"address":fullAddress}, function (results, status) {
+ if (status == google.maps.GeocoderStatus.OK){
+ self.map.setCenter(results[0].geometry.location);
+ /**
+ * refresh marker position
+ */
+ if(!self.marker){
+ self.marker = new google.maps.Marker({
+ map: self.map,
+ position: results[0].geometry.location
+ });
+ }else{
+ self.marker.set("position",results[0].geometry.location);
+ }
+ }else{
+ console.log("!ERORR: Geocode was not successful for the following reason: " + status);
+ }
+ });
+ }else{
+ this.$toggle.addClass("hidden")
+ this.status.visible = false;
+ }
}
};
@@ -647,13 +751,21 @@ if (EXPO.company){
this.rating = new Rating(this.opt.rating);
this.forms = {};
+
$(function () {
var $editables = $('.'+self.opt.editableClass),
$country = $('#'+self.opt.selectBox[0].id),
$city = $('#'+self.opt.selectBox[1].id),
- $theme = $('#'+self.opt.selectBox[3].id);
+ $theme = $('#'+self.opt.selectBox[3].id),
+ $address = $("#id_address_inf");
//start of document.ready
$waiter = $('#wait-ajax').css({'z-index': '8012'});
+ /**
+ * google map
+ */
+ self.map = new Map(self.opt.map);
+
+
/**
*
styling with 3-rd party libs
*/
@@ -665,6 +777,13 @@ if (EXPO.company){
placeholder: self.opt.selectBox[3].placeHolder,
maximumSelectionSize: 3
});
+ $theme.on("change", function () {
+ var $theme = $('#theme_form'),
+ url = $theme.attr("action"),
+ //toSendObj = new FormData(toSendObj);
+ toSendObj = $theme.serialize();
+ com.postRequest(toSendObj,url);
+ });
/**
* select country
*/
@@ -672,10 +791,23 @@ if (EXPO.company){
width: 'element',
placeholder:self.opt.selectBox[0].placeholder
});
+
+
$country.on("change", function () {
$city.val(0);
$city.select2("val", "");
});
+ $city.on("change", function () {
+ var chosen = $(this).closest(".epf-field").find(".select2-chosen").text();
+ $(this).attr("data-init-text",chosen);
+ self.forms.address_form.$form.find("input:text").val("");
+ self.forms.address_form.$staticValue.text("");
+ self.forms.address_form.refreshHTML();
+ self.forms.home_form.submit();
+ self.forms.address_form.submit();
+ //$("#id_address_inf").val('').closest(".address-wrap").find(".static-value").text(' ');
+ self.map.refresh();
+ });
/**
* enable city when country is chosen
*/
@@ -909,10 +1041,7 @@ if (EXPO.company){
* preview button
*/
$('#'+self.opt.previewBtnId).attr('href',window.location.href+"?logout=1");
- /**
- * google map
- */
- this.map = new Map();
+
});
diff --git a/templates/client/static_client/js_min/_modules/page.company.min.js b/templates/client/static_client/js_min/_modules/page.company.min.js
index fbd1593a..8caa218e 100644
--- a/templates/client/static_client/js_min/_modules/page.company.min.js
+++ b/templates/client/static_client/js_min/_modules/page.company.min.js
@@ -1 +1 @@
-var EXPO=EXPO||{};EXPO.company?console.warn("WARNING: EXPO.company is already defined!"):EXPO.company=function(){function t(t){this.opt=t,this.$inst=$("#"+t.id),this.value=this.$inst.text}function e(){}var a={};a.opt={updateFormClass:"update-profile-form"},a.lang={};var s,i=EXPO.common;t.prototype={refresh:function(t){this.value=t,this.$inst.text(this.value)}},e.prototype={submit:function(t){var e=this;t||(t=""),$.ajax({type:"POST",url:e.ajaxPath,data:t,processData:!1,contentType:!1,success:function(t){e.afterSubmit(t),t.success&&EXPO.company.rating.refresh(t.rating),$("#wait-ajax").fadeOut()}})},beforeSubmit:function(t,e){var a=this.beforeSubmitHandler,s=t;this.formData="string"!=typeof s?s:JSON.parse('{"'+decodeURI(s).replace(/"/g,'\\"').replace(/&/g,'","').replace(/=/g,'":"')+'"}'),this.formId=e,"function"==typeof a?(this.formData=a(t,e),this.submit(t),$("#wait-ajax").show()):(this.submit(t),$("#wait-ajax").show())},afterSubmit:function(t){var e=this.afterSubmitHandler;if("function"!=typeof e)throw{name:"Error",message:" handler function for processing response after form submit not defined, please define it!"};e(t)},refreshHTML:function(){var t=$.trim(this.$staticValue.text()).replace(/[^0-9a-zA-Zа-я\s]/g,"").replace(/(\d)\s/,"").replace(/\s+/g,"");(""==$.trim(this.$staticValue.text())||"NoneNone"==t)&&this.$wrapper.length&&this.refrashable?(this.$editable.addClass("hidden"),this.$editable.removeClass(EXPO.company.opt.formCurrentClass),this.$description.removeClass("hidden")):this.$wrapper.length&&this.refrashable&&(this.$editable.removeClass("hidden"),this.$description.addClass("hidden"))}},e.factory=function(t,a){var s,i=t;if("function"!=typeof e[i])throw{name:"Error",message:i+"doesen't exist"};return"function"!=typeof e[i].prototype.beforeSubmit&&(e[i].prototype=new e),s=new e[i](a)},e.name_form=function(t){var e=this;this.afterSubmitHandler=function(t){t.success?($("#static-name-value").text($("#id_name").val()),$(".p-editable").removeClass("pe-current"),e.refreshHTML()):this.$editable.addClass("err")},this.ajaxPath=t},e.spec_form=function(t){var e=this;this.afterSubmitHandler=function(t){t.success?($("#static-spec-value").html(i.nl2br($("#id_specialization").val())),$(".p-editable").removeClass("pe-current"),e.refreshHTML()):this.$editable.addClass("err")},this.ajaxPath=t},e.address_form=function(t){var e=this;this.afterSubmitHandler=function(t){t.success?($("#static-address-value").text($("#id_address_inf").val()),$(".p-editable").removeClass("pe-current"),e.refreshHTML()):this.$editable.addClass("err")},this.ajaxPath=t},e.social_form=function(t){var e,a,s,i,r,o=this;this.afterSubmitHandler=function(t){if(t.success){for(r in o.formData)s=$("#id_"+r),s.parent(".required").removeClass("err"),""!=$.trim(o.formData[r])&&s.length?(e=$("#img-"+r),e.length&&(i=$.trim(s.val()),e.parent("a").length?(e.parent("a").attr("href",i),a=e.attr("src").replace("_hover",""),e.attr("src",a)):(a=e.attr("src").replace("_hover",""),e.attr("src",a),e.wrap('')))):s.length&&(e=$("#img-"+r),e.parent("a").length&&(a=e.attr("src").replace(".png","_hover.png"),e.attr("src",a),e.unwrap()));$(".p-editable").removeClass("pe-current")}else for(r in t.errors)s=$("#id_"+r),s.parent(".required").addClass("err"),s.blur(function(){s.parent(".required").removeClass("err"),o.$form.submit()});o.refreshHTML()},this.beforeSubmitHandler=function(t,e){var a=$("#"+e).serialize();return JSON.parse('{"'+decodeURI(a).replace(/"/g,'\\"').replace(/&/g,'","').replace(/=/g,'":"')+'"}')},this.refreshHTML=function(){console.log(this);var t=!0;$("input:text",this.$form).each(function(){""==$.trim($(this).val())&&(t=!1)}),t?($(".full-complete",this.$description).removeClass("hidden"),$(".not-complete",this.$description).addClass("hidden")):($(".full-complete",this.$description).addClass("hidden"),$(".not-complete",this.$description).removeClass("hidden"))},this.ajaxPath=t},e.phone_form=function(t){var e=this;this.afterSubmitHandler=function(t){t.success&&($("#static-phone-value").text($("#id_phone")[0].value),$(".p-editable").removeClass("pe-current"),e.refreshHTML())},this.ajaxPath=t},e.email_form=function(t){var e,a=this;this.afterSubmitHandler=function(t){t.success?(e=$("#id_email").val(),$("#static-email-value").attr("href","mailto:"+e).text(e),$(".p-editable").removeClass("pe-current"),a.refreshHTML()):this.$editable.addClass("err")},this.ajaxPath=t},e.web_page_form=function(t){var e,a=this;this.afterSubmitHandler=function(t){t.success&&(e=$("#id_web_page").val(),$("#static-web-page-value").attr("href",e).text(e),$(".p-editable").removeClass("pe-current"),a.refreshHTML())},this.ajaxPath=t},e.home_form=function(t){var e=this;this.afterSubmitHandler=function(t){if(t.success){var a=$("#s2id_id_country").find(".select2-chosen").text(),s=$("#s2id_id_city").find(".select2-chosen").text();$("#static-home-country").text(a),$("#static-home-city").text(s),$(".p-editable").removeClass("pe-current"),e.refreshHTML()}},this.ajaxPath=t},e.found_form=function(t){var e,a,s=this;this.afterSubmitHandler=function(t){if(t.success){var i=$(".full-complete",this.$staticValue);a=$("#id_foundation"),e=$.trim(a.val()),i.text(e),$(".p-editable").removeClass("pe-current"),s.refreshHTML()}},this.ajaxPath=t,this.refreshHTML=function(){var t=$(".full-complete",this.$staticValue),e=$(".not-complete",this.$staticValue);return""==$.trim(t.text())?(t.addClass("hidden"),e.removeClass("hidden")):(t.removeClass("hidden"),e.addClass("hidden")),!1}},e.staff_form=function(t){var e,a,s=this;this.afterSubmitHandler=function(t){if(t.success){var i=$(".full-complete",this.$staticValue);a=$("#id_staff_number"),e=$.trim(a.val()),i.text(e),$(".p-editable").removeClass("pe-current"),s.refreshHTML()}},this.ajaxPath=t,this.refreshHTML=function(){var t=$(".full-complete",this.$staticValue),e=$(".not-complete",this.$staticValue);return""==$.trim(t.text())?(t.addClass("hidden"),e.removeClass("hidden")):(t.removeClass("hidden"),e.addClass("hidden")),!1}},e.description_form=function(t){var e,a=$("#id_description"),s=this;this.afterSubmitHandler=function(t){if(t.success){var r=$(".full-complete",this.$staticValue);e=$.trim(a.val()),r.html(i.nl2br(e)),$(".p-editable").removeClass("pe-current"),s.refreshHTML()}},this.ajaxPath=t,this.refreshHTML=function(){var t=$(".full-complete",this.$staticValue),e=$(".not-complete",this.$staticValue);return""==$.trim(t.text())?(t.addClass("hidden"),e.removeClass("hidden")):(t.removeClass("hidden"),e.addClass("hidden")),!1}},e.avatar_form=function(t){var e,a=this,s=$("#id_avatar"),i=($("#pic-edit-photo"),$("#pick-block")),r=$("img",i);this.afterSubmitHandler=function(t){t.success&&r.length&&(r.attr("src",t.url),a.refreshHTML())},this.beforeSubmitHandsler=function(t){"string"!=typeof t?(a.submit(t),$("#wait-ajax").show()):(e=$("#"+a.formId),e.off("submit"),e.trigger("submit"))},s.on("change",function(){$(this).parents("form").submit()}),this.ajaxPath=t,this.refreshHTML=function(){$.trim(this.$image.attr("src"))==this.noImageSrc?(this.$editable.addClass("hidden"),this.$description.removeClass("hidden")):(this.$editable.removeClass("hidden"),this.$description.addClass("hidden"))}},e.tag_form=function(t){var e=this;this.afterSubmitHandler=function(t){var a=", ";if(t.success){this.$staticValue.html("");for(var s=0;s"+t.tags[s].text+"")),s!=t.tags.length-1&&this.$staticValue.append($(a));e.refreshHTML()}},this.ajaxPath=t,this.$input=$("#id_tag"),this.refreshHTML=function(){this.$label=$(".label",this.$editable),this.$initial=$(".initial-position",this.$wrapper),this.formId=this.$form.attr("id"),""==$.trim(this.$input.val())?(this.$form.detach().appendTo(this.$editable),this.$label.detach().appendTo(this.$editable),this.$initial.removeClass("hidden"),this.$description.addClass("hidden")):($("#"+this.formId,this.$editable).length<0&&(this.$form.detach().appendTo(this.$editable),this.$label.detach().appendTo(this.$editable)),this.$editable.addClass("hidden"),this.$initial.addClass("hidden"),this.$description.removeClass("hidden"))}};var r=function(t){var e=this;this.opt=t,this.$wrapper=$("#address-block"),this.$toggle=$(".map-toggle",this.$wrapper),this.$container=$(".map-wrap",this.$wrapper),this.status={visible:!1},this.$toggle.on("click",function(){return $(this).hasClass("active")?e.hideMap():e.showMap(),!1});var a=document.getElementById("gmap-canvas"),s=function(){var t={zoom:4};e.map=new google.maps.Map(a,t);var s=$("#id_country option:selected").text(),i=new google.maps.Geocoder;i.geocode({address:s},function(t,a){if(a==google.maps.GeocoderStatus.OK){e.map.setCenter(t[0].geometry.location);{new google.maps.Marker({map:e.map,position:t[0].geometry.location})}}else alert("Geocode was not successful for the following reason: "+a)})};google.maps.event.addDomListener(window,"load",s)};return r.prototype={showMap:function(){this.$toggle.addClass("active").children(".label").text(this.$toggle.attr("data-hide-text")),this.status.visible=!0,this.$container.removeClass("hidden")},hideMap:function(){this.$toggle.removeClass("active").children(".label").text(this.$toggle.attr("data-show-text")),this.status.visible=!1,this.$container.addClass("hidden")},refresh:function(){}},a.init=function(a){$.extend(this.lang,a.lang),a.lang=null,$.extend(this.opt,a);var i=this,o=function(t){var e=$.masksSort($.masksLoad("/static/client/js/plugins/inputmask/phone-codes.json"),["#"],/[0-9]|#/,"mask"),a={inputmask:{definitions:{"#":{validator:"[0-9]",cardinality:1}},showMaskOnHover:!1,insertMode:!1,autoUnmask:!0},match:/[0-9]/,insertMode:!1,replace:"#",list:e,listKey:"mask",onMaskChange:function(){$(this).attr("placeholder","+_(___)___-__-__")}},s="#"+t;$(s).inputmasks(a)};this.rating=new t(this.opt.rating),this.forms={},$(function(){var t=$("."+i.opt.editableClass),a=$("#"+i.opt.selectBox[0].id),n=$("#"+i.opt.selectBox[1].id),l=$("#"+i.opt.selectBox[3].id);s=$("#wait-ajax").css({"z-index":"8012"}),l.select2({width:"element",placeholder:i.opt.selectBox[3].placeHolder,maximumSelectionSize:3}),a.select2({width:"element",placeholder:i.opt.selectBox[0].placeholder}),a.on("change",function(){n.val(0),n.select2("val","")}),a.on("change",function(){(0!=$(this).val()||""!=$(this).val())&&n.prop("disabled",!1)}),(0==a.val()||""==a.val())&&n.prop("disabled",!0),n.select2({placeholder:i.opt.selectBox[1].placeHolder,width:"element",ajax:{url:i.opt.selectBox[1].path,dataType:"json",quietMillis:200,data:function(t,e,a){var a=$("#"+i.opt.selectBox[0].id).val();return{term:t,page:e,country:a}},results:function(t){var e=[];return $.each(t,function(t,a){e.push({id:a.id,text:a.label})}),{results:e}}},initSelection:function(t,e){var a=$.trim($(t).val()),s=$(t).attr("data-init-text");e({id:a,text:s})}}),$("#"+i.opt.selectBox[2].id).val("0"),$("#"+i.opt.selectBox[2].id).select2({placeholder:i.opt.selectBox[2].placeholder,width:"368px",multiple:!0,maximumSelectionSize:5,ajax:{url:i.opt.selectBox[2].path,dataType:"json",quietMillis:200,data:function(t,e){var a=$("#theme-inf").attr("data-theme");return a=a.split(","),a.pop(),{term:t,page:e,themes:a}},results:function(t){var e=[];return $.each(t,function(t,a){e.push({id:a.id,text:a.label})}),{results:e}}},initSelection:function(t,e){var a;t.val(""),""!=$.trim(t.attr("data-predifined"))&&"[]"!=$.trim(t.attr("data-predifined"))?(a=JSON.parse(t.attr("data-predifined")),e(a)):$("#tag_form .select2-input").width(336).addClass("select2-default").val(i.opt.selectBox[2].placeholder)}}),$("#"+i.opt.selectBox[2].id).on("change",function(){var t=$("#tag_form");t.submit()}),o(i.opt.phoneBox),$("."+i.opt.updateFormClass).each(function(){var a,r=$(this).attr("id"),o=$(this).attr("action"),n=$(this).closest("."+i.opt.formWrapperClass),l=$("."+i.opt.staticValueClass,n),d=$("."+i.opt.descriptionClass,n),h=$("."+i.opt.editableClass,n),c=$("."+i.opt.closeButtonClass,n),p=$("."+i.opt.avatarImageClass,n);i.forms[r]=e.factory(r,o),i.forms[r].refrashable=$("."+i.opt.editButtonClass,n).hasClass("no-refresh")?!1:!0,i.forms[r].$form=$(this),i.forms[r].$wrapper=n,i.forms[r].$staticValue=l,i.forms[r].$description=d,i.forms[r].$editable=h,p.length&&(i.forms[r].$image=p,i.forms[r].noImageSrc=i.opt.noImageSrc),$(this).off("submit"),$(this).on("submit",function(){return s.show(),window.FormData&&"upload"in $.ajaxSettings.xhr()?(a=new FormData(this),i.forms[r].beforeSubmit(a,r)):(a=$(this).serialize(),i.forms[r].beforeSubmit(a,r)),!1}),c.on("click",function(){return h.removeClass(i.opt.formCurrentClass),i.forms[r].refreshHTML(),!1}),$("."+i.opt.avatarButtonClass,n).length?$("."+i.opt.editButtonClass+", ."+i.opt.avatarButtonClass,n).on("click",function(){var t=$("#"+i.opt.avatarInputId);return t.trigger("click"),!1}):$("."+i.opt.editButtonClass+", ."+i.opt.avatarButtonClass,n).on("click",function(){var e=$(this).closest("."+i.opt.formWrapperClass),a=e.find("."+i.opt.updateFormClass).attr("id"),s=e.find("."+i.opt.descriptionClass),o=e.find("."+i.opt.editableClass);return t.each(function(){var t=$(this).closest("."+i.opt.formWrapperClass),e=t.find("."+i.opt.updateFormClass).attr("id"),a=(t.find("."+i.opt.descriptionClass),t.find("."+i.opt.editableClass));$(this).hasClass(i.opt.formCurrentClass)&&(i.forms[e].refrashable?(i.forms[e].refreshHTML(),a.removeClass(EXPO.company.opt.formCurrentClass)):a.removeClass(i.opt.formCurrentClass))}),i.forms[a].refrashable&&(o.removeClass("hidden"),s.addClass("hidden")),o.addClass(i.opt.formCurrentClass),$(document).on("click.form",function(t){var e=$(t.target);e.parents().filter(".e-form").length<1&&(o.removeClass(i.opt.formCurrentClass),i.forms[r].refreshHTML(),$(document).off("click.form"))}),!1})}),$("#"+i.opt.previewBtnId).attr("href",window.location.href+"?logout=1"),this.map=new r})},a}();
\ No newline at end of file
+var EXPO=EXPO||{};EXPO.company?console.warn("WARNING: EXPO.company is already defined!"):EXPO.company=function(){function t(t){this.opt=t,this.$inst=$("#"+t.id),this.value=this.$inst.text}function e(){}var a={};a.opt={updateFormClass:"update-profile-form"},a.lang={};var s,i=EXPO.common;t.prototype={refresh:function(t){this.value=t,this.$inst.text(this.value)}},e.prototype={submit:function(t){var e=this;t||(t=new FormData(this.$form[0])),$.ajax({type:"POST",url:e.ajaxPath,data:t,processData:!1,contentType:!1,success:function(t){e.afterSubmit(t),t.success&&EXPO.company.rating.refresh(t.rating),$("#wait-ajax").fadeOut()}})},beforeSubmit:function(t,e){var a=this.beforeSubmitHandler,s=t;this.formData="string"!=typeof s?s:JSON.parse('{"'+decodeURI(s).replace(/"/g,'\\"').replace(/&/g,'","').replace(/=/g,'":"')+'"}'),this.formId=e,"function"==typeof a?(this.formData=a(t,e),this.submit(t),$("#wait-ajax").show()):(this.submit(t),$("#wait-ajax").show())},afterSubmit:function(t){var e=this.afterSubmitHandler;if("function"!=typeof e)throw{name:"Error",message:" handler function for processing response after form submit not defined, please define it!"};e(t)},refreshHTML:function(){var t=$.trim(this.$staticValue.text()).replace(/[^0-9a-zA-Zа-я\s]/g,"").replace(/(\d)\s/,"").replace(/\s+/g,"");(""==$.trim(this.$staticValue.text())||"NoneNone"==t)&&this.$wrapper.length&&this.refrashable?(this.$editable.addClass("hidden"),this.$editable.removeClass(EXPO.company.opt.formCurrentClass),this.$description.removeClass("hidden")):this.$wrapper.length&&this.refrashable&&(this.$editable.removeClass("hidden"),this.$description.addClass("hidden"))}},e.factory=function(t,a){var s,i=t;if("function"!=typeof e[i])throw{name:"Error",message:i+"doesen't exist"};return"function"!=typeof e[i].prototype.beforeSubmit&&(e[i].prototype=new e),s=new e[i](a)},e.name_form=function(t){var e=this;this.afterSubmitHandler=function(t){t.success?($("#static-name-value").text($("#id_name").val()),$(".p-editable").removeClass("pe-current"),e.refreshHTML()):this.$editable.addClass("err")},this.ajaxPath=t},e.spec_form=function(t){var e=this;this.afterSubmitHandler=function(t){t.success?($("#static-spec-value").html(i.nl2br($("#id_specialization").val())),$(".p-editable").removeClass("pe-current"),e.refreshHTML()):this.$editable.addClass("err")},this.ajaxPath=t},e.address_form=function(t){var e=this;this.afterSubmitHandler=function(t){t.success?($("#static-address-value").text($("#id_address_inf").val()),$(".p-editable").removeClass("pe-current"),e.refreshHTML()):this.$editable.addClass("err")},this.ajaxPath=t},e.social_form=function(t){var e,a,s,i,r,o=this;this.afterSubmitHandler=function(t){if(t.success){for(r in o.formData)s=$("#id_"+r),s.parent(".required").removeClass("err"),""!=$.trim(o.formData[r])&&s.length?(e=$("#img-"+r),e.length&&(i=$.trim(s.val()),e.parent("a").length?(e.parent("a").attr("href",i),a=e.attr("src").replace("_hover",""),e.attr("src",a)):(a=e.attr("src").replace("_hover",""),e.attr("src",a),e.wrap('')))):s.length&&(e=$("#img-"+r),e.parent("a").length&&(a=e.attr("src").replace(".png","_hover.png"),e.attr("src",a),e.unwrap()));$(".p-editable").removeClass("pe-current")}else for(r in t.errors)s=$("#id_"+r),s.parent(".required").addClass("err"),s.blur(function(){s.parent(".required").removeClass("err"),o.$form.submit()});o.refreshHTML()},this.beforeSubmitHandler=function(t,e){var a=$("#"+e).serialize();return JSON.parse('{"'+decodeURI(a).replace(/"/g,'\\"').replace(/&/g,'","').replace(/=/g,'":"')+'"}')},this.refreshHTML=function(){console.log(this);var t=!0;$("input:text",this.$form).each(function(){""==$.trim($(this).val())&&(t=!1)}),t?($(".full-complete",this.$description).removeClass("hidden"),$(".not-complete",this.$description).addClass("hidden")):($(".full-complete",this.$description).addClass("hidden"),$(".not-complete",this.$description).removeClass("hidden"))},this.ajaxPath=t},e.phone_form=function(t){var e=this;this.afterSubmitHandler=function(t){t.success&&($("#static-phone-value").text($("#id_phone")[0].value),$(".p-editable").removeClass("pe-current"),e.refreshHTML())},this.ajaxPath=t},e.email_form=function(t){var e,a=this;this.afterSubmitHandler=function(t){t.success?(e=$("#id_email").val(),$("#static-email-value").attr("href","mailto:"+e).text(e),$(".p-editable").removeClass("pe-current"),a.refreshHTML()):this.$editable.addClass("err")},this.ajaxPath=t},e.web_page_form=function(t){var e,a=this;this.afterSubmitHandler=function(t){t.success&&(e=$("#id_web_page").val(),$("#static-web-page-value").attr("href",e).text(e),$(".p-editable").removeClass("pe-current"),a.refreshHTML())},this.ajaxPath=t},e.home_form=function(t){var e=this;this.afterSubmitHandler=function(t){if(t.success){var a=$("#s2id_id_country").find(".select2-chosen").text(),s=$("#s2id_id_city").find(".select2-chosen").text();$("#static-home-country").text(a),$("#static-home-city").text(s),$(".p-editable").removeClass("pe-current"),e.refreshHTML()}},this.ajaxPath=t},e.found_form=function(t){var e,a,s=this;this.afterSubmitHandler=function(t){if(t.success){var i=$(".full-complete",this.$staticValue);a=$("#id_foundation"),e=$.trim(a.val()),i.text(e),$(".p-editable").removeClass("pe-current"),s.refreshHTML()}},this.ajaxPath=t,this.refreshHTML=function(){var t=$(".full-complete",this.$staticValue),e=$(".not-complete",this.$staticValue);return""==$.trim(t.text())?(t.addClass("hidden"),e.removeClass("hidden")):(t.removeClass("hidden"),e.addClass("hidden")),!1}},e.staff_form=function(t){var e,a,s=this;this.afterSubmitHandler=function(t){if(t.success){var i=$(".full-complete",this.$staticValue);a=$("#id_staff_number"),e=$.trim(a.val()),i.text(e),$(".p-editable").removeClass("pe-current"),s.refreshHTML()}},this.ajaxPath=t,this.refreshHTML=function(){var t=$(".full-complete",this.$staticValue),e=$(".not-complete",this.$staticValue);return""==$.trim(t.text())?(t.addClass("hidden"),e.removeClass("hidden")):(t.removeClass("hidden"),e.addClass("hidden")),!1}},e.description_form=function(t){var e,a=$("#id_description"),s=this;this.afterSubmitHandler=function(t){if(t.success){var r=$(".full-complete",this.$staticValue);e=$.trim(a.val()),r.html(i.nl2br(e)),$(".p-editable").removeClass("pe-current"),s.refreshHTML()}},this.ajaxPath=t,this.refreshHTML=function(){var t=$(".full-complete",this.$staticValue),e=$(".not-complete",this.$staticValue);return""==$.trim(t.text())?(t.addClass("hidden"),e.removeClass("hidden")):(t.removeClass("hidden"),e.addClass("hidden")),!1}},e.avatar_form=function(t){var e,a=this,s=$("#id_avatar"),i=($("#pic-edit-photo"),$("#pick-block")),r=$("img",i);this.afterSubmitHandler=function(t){t.success&&r.length&&(r.attr("src",t.url),a.refreshHTML())},this.beforeSubmitHandsler=function(t){"string"!=typeof t?(a.submit(t),$("#wait-ajax").show()):(e=$("#"+a.formId),e.off("submit"),e.trigger("submit"))},s.on("change",function(){$(this).parents("form").submit()}),this.ajaxPath=t,this.refreshHTML=function(){$.trim(this.$image.attr("src"))==this.noImageSrc?(this.$editable.addClass("hidden"),this.$description.removeClass("hidden")):(this.$editable.removeClass("hidden"),this.$description.addClass("hidden"))}},e.tag_form=function(t){var e=this;this.afterSubmitHandler=function(t){var a=", ";if(t.success){this.$staticValue.html("");for(var s=0;s"+t.tags[s].text+"")),s!=t.tags.length-1&&this.$staticValue.append($(a));e.refreshHTML()}},this.ajaxPath=t,this.$input=$("#id_tag"),this.refreshHTML=function(){this.$label=$(".label",this.$editable),this.$initial=$(".initial-position",this.$wrapper),this.formId=this.$form.attr("id"),""==$.trim(this.$input.val())?(this.$form.detach().appendTo(this.$editable),this.$label.detach().appendTo(this.$editable),this.$initial.removeClass("hidden"),this.$description.addClass("hidden")):($("#"+this.formId,this.$editable).length<0&&(this.$form.detach().appendTo(this.$editable),this.$label.detach().appendTo(this.$editable)),this.$editable.addClass("hidden"),this.$initial.addClass("hidden"),this.$description.removeClass("hidden"))}};var r=function(t){this.opt=t;var e=this,a=(this.opt.canvasId,function(){var t=document.getElementById(e.opt.canvasId),a=document.getElementById(e.opt.autocompleteId);e.mapOptions={zoom:e.opt.zoom.country},e.map=new google.maps.Map(t,e.mapOptions),e.geocoder=new google.maps.Geocoder,e.refresh();var s=new google.maps.places.Autocomplete(a);s.bindTo("bounds",e.map),google.maps.event.addListener(s,"place_changed",function(){if(!e.status.visible){var t=s.getPlace();if(!t.geometry)return;t.geometry.viewport?e.map.fitBounds(t.geometry.viewport):(e.map.setCenter(t.geometry.location),e.map.setZoom(14)),e.marker.setPosition(t.geometry.location),EXPO.company.forms.address_form.submit()}})});google.maps.event.addDomListener(window,"load",a),this.$wrapper=$(document.getElementById(this.opt.blockId)),this.$toggle=$(".map-toggle",this.$wrapper),this.$container=$(".map-wrap",this.$wrapper),this.status={visible:!1},this.$toggle.on("click",function(){return $(this).hasClass("active")?e.hideMap():(e.showMap(),google.maps.event.trigger(e.map,"resize"),e.refresh()),!1})};return r.prototype={showMap:function(){this.$toggle.addClass("active").children(".label").text(this.$toggle.attr("data-hide-text")),this.status.visible=!0,this.$container.removeClass("hidden")},hideMap:function(){this.$toggle.removeClass("active").children(".label").text(this.$toggle.attr("data-show-text")),this.status.visible=!1,this.$container.addClass("hidden")},refresh:function(){var t,e=this,a=$("#id_country option:selected").text(),s=$(document.getElementById("id_city")).attr("data-init-text"),i=$.trim(document.getElementById(e.opt.autocompleteId).value);""!=$.trim(a)?(this.status.visible=!0,this.$toggle.removeClass("hidden"),""==$.trim(s)?(t=a,e.map.set("zoom",e.opt.zoom.country)):""==$.trim(i)?(t=a+" "+s,e.map.set("zoom",e.opt.zoom.city)):(t=a+" "+s+" "+i,e.map.set("zoom",e.opt.zoom.street)),this.geocoder.geocode({address:t},function(t,a){a==google.maps.GeocoderStatus.OK?(e.map.setCenter(t[0].geometry.location),e.marker?e.marker.set("position",t[0].geometry.location):e.marker=new google.maps.Marker({map:e.map,position:t[0].geometry.location})):console.log("!ERORR: Geocode was not successful for the following reason: "+a)})):(this.$toggle.addClass("hidden"),this.status.visible=!1)}},a.init=function(a){$.extend(this.lang,a.lang),a.lang=null,$.extend(this.opt,a);var o=this,n=function(t){var e=$.masksSort($.masksLoad("/static/client/js/plugins/inputmask/phone-codes.json"),["#"],/[0-9]|#/,"mask"),a={inputmask:{definitions:{"#":{validator:"[0-9]",cardinality:1}},showMaskOnHover:!1,insertMode:!1,autoUnmask:!0},match:/[0-9]/,insertMode:!1,replace:"#",list:e,listKey:"mask",onMaskChange:function(){$(this).attr("placeholder","+_(___)___-__-__")}},s="#"+t;$(s).inputmasks(a)};this.rating=new t(this.opt.rating),this.forms={},$(function(){{var t=$("."+o.opt.editableClass),a=$("#"+o.opt.selectBox[0].id),l=$("#"+o.opt.selectBox[1].id),d=$("#"+o.opt.selectBox[3].id);$("#id_address_inf")}s=$("#wait-ajax").css({"z-index":"8012"}),o.map=new r(o.opt.map),d.select2({width:"element",placeholder:o.opt.selectBox[3].placeHolder,maximumSelectionSize:3}),d.on("change",function(){var t=$("#theme_form"),e=t.attr("action"),a=t.serialize();i.postRequest(a,e)}),a.select2({width:"element",placeholder:o.opt.selectBox[0].placeholder}),a.on("change",function(){l.val(0),l.select2("val","")}),l.on("change",function(){var t=$(this).closest(".epf-field").find(".select2-chosen").text();$(this).attr("data-init-text",t),o.forms.address_form.$form.find("input:text").val(""),o.forms.address_form.$staticValue.text(""),o.forms.address_form.refreshHTML(),o.forms.home_form.submit(),o.forms.address_form.submit(),o.map.refresh()}),a.on("change",function(){(0!=$(this).val()||""!=$(this).val())&&l.prop("disabled",!1)}),(0==a.val()||""==a.val())&&l.prop("disabled",!0),l.select2({placeholder:o.opt.selectBox[1].placeHolder,width:"element",ajax:{url:o.opt.selectBox[1].path,dataType:"json",quietMillis:200,data:function(t,e,a){var a=$("#"+o.opt.selectBox[0].id).val();return{term:t,page:e,country:a}},results:function(t){var e=[];return $.each(t,function(t,a){e.push({id:a.id,text:a.label})}),{results:e}}},initSelection:function(t,e){var a=$.trim($(t).val()),s=$(t).attr("data-init-text");e({id:a,text:s})}}),$("#"+o.opt.selectBox[2].id).val("0"),$("#"+o.opt.selectBox[2].id).select2({placeholder:o.opt.selectBox[2].placeholder,width:"368px",multiple:!0,maximumSelectionSize:5,ajax:{url:o.opt.selectBox[2].path,dataType:"json",quietMillis:200,data:function(t,e){var a=$("#theme-inf").attr("data-theme");return a=a.split(","),a.pop(),{term:t,page:e,themes:a}},results:function(t){var e=[];return $.each(t,function(t,a){e.push({id:a.id,text:a.label})}),{results:e}}},initSelection:function(t,e){var a;t.val(""),""!=$.trim(t.attr("data-predifined"))&&"[]"!=$.trim(t.attr("data-predifined"))?(a=JSON.parse(t.attr("data-predifined")),e(a)):$("#tag_form .select2-input").width(336).addClass("select2-default").val(o.opt.selectBox[2].placeholder)}}),$("#"+o.opt.selectBox[2].id).on("change",function(){var t=$("#tag_form");t.submit()}),n(o.opt.phoneBox),$("."+o.opt.updateFormClass).each(function(){var a,i=$(this).attr("id"),r=$(this).attr("action"),n=$(this).closest("."+o.opt.formWrapperClass),l=$("."+o.opt.staticValueClass,n),d=$("."+o.opt.descriptionClass,n),c=$("."+o.opt.editableClass,n),h=$("."+o.opt.closeButtonClass,n),m=$("."+o.opt.avatarImageClass,n);o.forms[i]=e.factory(i,r),o.forms[i].refrashable=$("."+o.opt.editButtonClass,n).hasClass("no-refresh")?!1:!0,o.forms[i].$form=$(this),o.forms[i].$wrapper=n,o.forms[i].$staticValue=l,o.forms[i].$description=d,o.forms[i].$editable=c,m.length&&(o.forms[i].$image=m,o.forms[i].noImageSrc=o.opt.noImageSrc),$(this).off("submit"),$(this).on("submit",function(){return s.show(),window.FormData&&"upload"in $.ajaxSettings.xhr()?(a=new FormData(this),o.forms[i].beforeSubmit(a,i)):(a=$(this).serialize(),o.forms[i].beforeSubmit(a,i)),!1}),h.on("click",function(){return c.removeClass(o.opt.formCurrentClass),o.forms[i].refreshHTML(),!1}),$("."+o.opt.avatarButtonClass,n).length?$("."+o.opt.editButtonClass+", ."+o.opt.avatarButtonClass,n).on("click",function(){var t=$("#"+o.opt.avatarInputId);return t.trigger("click"),!1}):$("."+o.opt.editButtonClass+", ."+o.opt.avatarButtonClass,n).on("click",function(){var e=$(this).closest("."+o.opt.formWrapperClass),a=e.find("."+o.opt.updateFormClass).attr("id"),s=e.find("."+o.opt.descriptionClass),r=e.find("."+o.opt.editableClass);return t.each(function(){var t=$(this).closest("."+o.opt.formWrapperClass),e=t.find("."+o.opt.updateFormClass).attr("id"),a=(t.find("."+o.opt.descriptionClass),t.find("."+o.opt.editableClass));$(this).hasClass(o.opt.formCurrentClass)&&(o.forms[e].refrashable?(o.forms[e].refreshHTML(),a.removeClass(EXPO.company.opt.formCurrentClass)):a.removeClass(o.opt.formCurrentClass))}),o.forms[a].refrashable&&(r.removeClass("hidden"),s.addClass("hidden")),r.addClass(o.opt.formCurrentClass),$(document).on("click.form",function(t){var e=$(t.target);e.parents().filter(".e-form").length<1&&(r.removeClass(o.opt.formCurrentClass),o.forms[i].refreshHTML(),$(document).off("click.form"))}),!1})}),$("#"+o.opt.previewBtnId).attr("href",window.location.href+"?logout=1")})},a}();
\ No newline at end of file