",i++)}this.list.innerHTML=e,this.d_built=!0,this.list.scrollTop=0},GetDropdown:function(){return this.d},ApplySearchFilter:function(t){return this.o.search_in_text?-1!==t.toLowerCase().indexOf(this.filter.toLowerCase()):0===t.toLowerCase().indexOf(this.filter.toLowerCase())},Update:function(){this.d_built=!1,$(this.e).trigger("destroy-dropdown"),this.UpdateSelect()},UpdateSelect:function(){var t=this.e[0].querySelectorAll("option:checked");if($(this.select).removeClass("ioselect-placeholder"),this.is_multiple)if(0'+this.o.value_format_function(t[i].text,t[i].value,this)+"");this.select.innerHTML=e;for(var s=$(this.select).find(".ioselect-selected-item"),i=0;i{t.actions.forEach(t=>{"add_class"===t.type&&(e[0].isIntersecting?$(i).addClass(t.params.class):t.params.toggle&&$(i).removeClass(t.params.class))})},e).observe(s)}),recaptcha_loading=!1,recaptcha_callbacks=[],RecaptchaLoaded=function(){for(var t=0;t')[0],$(this.form_element).append(t),""==this.site_key&&alert("Error: Recaptcha site key not set"),this.recaptcha_id=grecaptcha.render(t,{sitekey:this.site_key,callback:this.onValidate.bind(this),"expired-callback":this.onExpired.bind(this),"error-callback":this.onError.bind(this)}),$(this.form_element).find("[type=submit]").each(function(){null!==this.getAttribute("disabled")&&this.removeAttribute("disabled","")}),$(this.form_element).trigger("recaptcha:initialised")))},Validate:function(){this.form.SetValue("recaptcha_id",""),grecaptcha.reset(this.recaptcha_id),grecaptcha.execute(this.recaptcha_id),this.popup_iframe=!1,this.validating=!0,this.popup_interval=setInterval(function(){var t=$('iframe[src*="google.com/recaptcha/api2/bframe"]');if(0'),this.object.addClass("has-progress").append(this.progress)),this.progress.css({width:t.percent+"%"}))},Reset:function(){for(var t in clearTimeout(this.timer),this.GetAttributes())void 0!==this.attributes[t]?this.element.setAttribute(t,this.attributes[t]):this.element.removeAttribute(t);this.SetText(this.original_text)},GetText:function(){return"input"==this.element.nodeName.toLowerCase()?this.object[0].value:this.object[0].innerText},SetText:function(t){"input"==this.element.nodeName.toLowerCase()?this.object[0].value=t:this.object[0].innerText=t},ResetAttributes:function(){this.attributes=this.GetAttributes()},GetAttributes:function(){var t={},e=this.element.attributes;for(index in e)t[e[index].name]=e[index].value;return t}},function(t){this.isAdvancedUpload=("draggable"in(e=document.createElement("div"))||"ondragstart"in e&&"ondrop"in e)&&"FormData"in window&&"FileReader"in window,this.file_element=$(t),this.file_element.data("file-advanced",this),this.file_element.data("files",[]);var e="Drag and drop your file here",t=(void 0!==this.file_element.data("drag-drop-text")&&(e=this.file_element.data("drag-drop-text")),"Click to browse"),i=(void 0!==this.file_element.data("browse-text")&&(t=this.file_element.data("browse-text")),"or");void 0!==this.file_element.data("or-text")&&(i=this.file_element.data("or-text")),this.container=$('
")},Hide:function(){this.active&&(this.active=!1,$(window).off("keydown",this.listen_event),$(this.iframe)[0].setAttribute("src",""),$(this.iframe).remove(),this.mask.remove(),this.mask=null,this.iframe=null)}},$(function(){sCMS_MediaPopups.Init()}),{Init:function(){0!=$("form#form-candidateaccount").length&&(this.form=new ioForm("form#form-candidateaccount"),this.validator=new ioValidate("form#form-candidateaccount"),this.smart_button=new sCMS_SmartButton($("form#form-candidateaccount [type=submit]")),this.form.on("submit",this.Submit.bind(this)))},Submit:function(t){t.preventDefault(),this.smart_button.Set({text:"Saving",class:"c-smart-button--saving",attributes:{disabled:null}});var t=!0;(t=!!this.validator.DoFormValidation(this.form.GetElement())&&t)?((t=this.form.GetValues()).cv_file=this.form.GetValue("cv_file")[0],$.ajax("/api/1/Jobs/CandidateAccount",{method:"post",data:t,success:this.SaveSuccess.bind(this),error:this.SaveError.bind(this)})):this.smart_button.Set({text:"Unable to save",class:"c-smart-button--error",duration:4})},SaveSuccess:function(t){this.smart_button.Set({text:"Update successful, please wait",class:"c-smart-button--success",attributes:{disabled:!0}}),$(this.form.GetElement()).closest("#form-candidateaccount").removeClass("--show"),$("#candidateaccount-success").addClass("--show")},SaveError:function(t){if(this.smart_button.Set({text:"Unable to upload CV",class:"c-smart-button--error",duration:4}),t.errors&&0For each of the criteria below, rate which is most important to you. The more stars you assign to a particular factor, the more important it is.
",current:"
Now rate your current job according to how well it meets each of the criteria.
Rate how highly you think this job offer scores for each of the items below.
Remember, if you don't know how highly this particular job offer rates for a particular item, you can leave no rating and it won't affect the final score.
`):($("#step-description")[0].innerHTML=this.group_descriptions[t],$(this.form.GetElement()).removeClass("--offer")),this.UpdateGroup(),this.UpdateNavigation()},ShowStep:function(t){switch($(".c-job-offer-assessment__steps").find(".c-job-offer-assessment__step.--current").removeClass("--current"),$(".c-job-offer-assessment__steps").find(".c-job-offer-assessment__step#"+t).addClass("--current"),t){case"step-offers":this.current_step="offers",this.UpdateOffersList();break;case"step-results":this.current_step="results",this.UpdateResults();break;default:this.current_step=t.replace(/step\-/,"")}this.UpdateNavigation()},ShowResultTab:function(t){console.log($("[data-result-view]")),$("[data-result-view]").removeClass("--show"),$(`[data-result-view="${t}"]`).addClass("--show"),$("[data-result-tab]").removeClass("--current"),$(`[data-result-tab="${t}"]`).addClass("--current")},FormGoNext:function(){var t=!0;switch(this.current_group){case"priorities":step="step-current";break;case"current":step="step-offers";break;default:t=!1,step="step-offers"}if(t){var e,i=!1;for(e in this.fields)if(null===this.fields[e].GetValue()){i=!0;break}if(i)return void alert("Please rate all items before continuing.")}this.ShowStep(step)},UpdateGroup:function(){var t;if(void 0!==this.group_details[this.current_group]?t=this.group_details[this.current_group].title:(t="New Job Offer",0===this.current_group.indexOf("offer-")&&$("#step-new-offer-form").addClass("--show")),$(".c-job-offer-assessment__form-row").removeClass("--has-value"),void 0!==this.group_values[this.current_group])for(var e in this.fields){var i=parseInt(e.substring(9)),s=$(this.fields[e].GetElement()).closest(".c-job-offer-assessment__form-row");void 0!==this.group_values[this.current_group][i]&&null!==this.group_values[this.current_group][i]?(this.fields[e].SetValue(this.group_values[this.current_group][i]),s.addClass("--has-value")):void 0!==s.find("input:checked")[0]&&(s.find("input:checked")[0].checked=!1)}else{for(var e in this.fields)void 0!==$(this.fields[e].GetElement()).closest(".c-job-offer-assessment__form-row").find("input:checked")[0]&&($(this.fields[e].GetElement()).closest(".c-job-offer-assessment__form-row").find("input:checked")[0].checked=!1);this.group_values[this.current_group]=this.GetWeightingsValues()}$("#step-title")[0].innerText=t,0===this.current_group.indexOf("offer-")&&$("#step-title").addClass("--is-editable"),this.UpdateRatings(),this.UpdateNavigation()},Update:function(){this.group_values[this.current_group]=this.GetWeightingsValues(),this.UpdateGroup(),this.UpdateNavigation()},UpdateOffersList:function(){var t,e=[];for(t in this.group_values)0===t.indexOf("offer-")&&e.push(t);var i="";if(0
${this.group_details[r].title}
`}}$("#joam-offers-list .c-job-offer-assessment__offers-items")[0].innerHTML=i,$("#joam-offers-list .c-job-offer-assessment__offers-item-edit").on("click",function(t){t=$(t.target).closest("[data-offer]").data("offer");this.SetGroup(t)}.bind(this)),$("#joam-offers-list .c-job-offer-assessment__offers-item-delete").on("click",function(t){if(confirm("Are you sure you want to delete this offer?")){var e,i=$(t.target).closest("[data-offer]").data("offer");for(e in this.group_details)if(console.log(e),e===i){delete this.group_details[e],delete this.group_values[e];break}console.log(this.group_details),this.UpdateOffersList(),this.DoSubmitDetails()}}.bind(this)),(1
Recruitment for construction, consulting engineering, architecture, and beyond
Freelance Contract and Interim
Through our database and network of contacts throughout the industries we service, we are able to source short-term contract and interim staff for your business. We are able to provide you with the flexible workforce to ensure the success of your projects at short notice.
Permanent Contingent Hire
We have experience in placing high calibre candidates into organisations globally. Our consultants continuously source fresh talent to build our database. All candidates are interviewed rigorously and profiled to match your specified criteria to provide you the right person with a quality service.
Retained Executive Search
We have experienced senior search consultants with extensive networks in the markets in which they specialise, who can work with you to identify the talent you want, pro-actively search and match suitable candidates within a specified time scale.
Bespoke Talent Acquisition Solutions (RPO)
We have the expertise to deliver recruitment solutions that match your business better than the traditional agency relationship. We will work with your business to understand the goals, review the issues and create a service that works for you. This service can include: response handling; in-house recruitment teams (mini RPO); PSL establishment and management; and internal recruitment change management projects.
Talent Pools and Global Talent Acquisition
We have experience in researching and building specialist pools of talent across sectors and building global recruitment campaigns where your business is seeking to recruit in a particular skill-set or location or for a particular type of individual. We work closely with you to build a plan to target and acquire the selected talent for your business. We can work with a network of local partners around the world, with local knowledge to deliver the right people for you.
Looking for recruiters who know built environment recruitment inside and out?
This website uses cookies to ensure you get the best experience. Please read our privacy policy and click the button below to agree to the use of cookies, and remove this message.