Services
NV5 - Community Relations and Public Outreach

Community Relations & Public Outreach

Building understanding and support.

We live in a time where public opinion is shaped with a click of a button and the share of a post. This is why it is so important to implement a public outreach plan at the outset of a project or program. Your technical team certainly understands your project to its very last detail and supports it wholeheartedly, but that doesn’t guarantee your stakeholders — the workers, public, regulators, media, and elected officials — automatically do too. A project’s launch, progress, and completion can hinge solely on the rigor of its community relations program and the care with which it is implemented. By offering this strategic service in-house at NV5 through a team of dedicated public affairs professionals, information flows smoothly between our technical leads and your target audience. Our award-winning community relations team consists of former journalists, public agency staffers, and creative and tech experts who will uphold “one voice” consistent messaging to your stakeholders. This protects your project from public outcry, political opposition, schedule slip, cost creep, and other unnecessary headaches!

Expertise

  • Strategic & Crisis Communications Plans
  • Websites & Social Media
  • Public Meetings & Facilitation
  • Presentations & Tours
  • Groundbreakings & Dedications
  • Videos, Fact Sheets, & Newsletters

 

LEARN MORE

Related Media

Contact

//---------------------------------------------------------- //------ JAVASCRIPT HOOK FUNCTIONS FOR GRAVITY FORMS ------- //---------------------------------------------------------- if ( ! gform ) { document.addEventListener( 'gform_main_scripts_loaded', function() { gform.scriptsLoaded = true; } ); document.addEventListener( 'gform/theme/scripts_loaded', function() { gform.themeScriptsLoaded = true; } ); window.addEventListener( 'DOMContentLoaded', function() { gform.domLoaded = true; } ); var gform = { domLoaded: false, scriptsLoaded: false, themeScriptsLoaded: false, isFormEditor: () => typeof InitializeEditor === 'function', /** * @deprecated 2.9 the use of initializeOnLoaded in the form editor context is deprecated. * @remove-in 3.1 this function will not check for gform.isFormEditor(). */ callIfLoaded: function ( fn ) { if ( gform.domLoaded && gform.scriptsLoaded && ( gform.themeScriptsLoaded || gform.isFormEditor() ) ) { if ( gform.isFormEditor() ) { console.warn( 'The use of gform.initializeOnLoaded() is deprecated in the form editor context and will be removed in Gravity Forms 3.1.' ); } fn(); return true; } return false; }, /** * Call a function when all scripts are loaded * * @param function fn the callback function to call when all scripts are loaded * * @returns void */ initializeOnLoaded: function( fn ) { if ( ! gform.callIfLoaded( fn ) ) { document.addEventListener( 'gform_main_scripts_loaded', () => { gform.scriptsLoaded = true; gform.callIfLoaded( fn ); } ); document.addEventListener( 'gform/theme/scripts_loaded', () => { gform.themeScriptsLoaded = true; gform.callIfLoaded( fn ); } ); window.addEventListener( 'DOMContentLoaded', () => { gform.domLoaded = true; gform.callIfLoaded( fn ); } ); } }, hooks: { action: {}, filter: {} }, addAction: function( action, callable, priority, tag ) { gform.addHook( 'action', action, callable, priority, tag ); }, addFilter: function( action, callable, priority, tag ) { gform.addHook( 'filter', action, callable, priority, tag ); }, doAction: function( action ) { gform.doHook( 'action', action, arguments ); }, applyFilters: function( action ) { return gform.doHook( 'filter', action, arguments ); }, removeAction: function( action, tag ) { gform.removeHook( 'action', action, tag ); }, removeFilter: function( action, priority, tag ) { gform.removeHook( 'filter', action, priority, tag ); }, addHook: function( hookType, action, callable, priority, tag ) { if ( undefined == gform.hooks[hookType][action] ) { gform.hooks[hookType][action] = []; } var hooks = gform.hooks[hookType][action]; if ( undefined == tag ) { tag = action + '_' + hooks.length; } if( priority == undefined ){ priority = 10; } gform.hooks[hookType][action].push( { tag:tag, callable:callable, priority:priority } ); }, doHook: function( hookType, action, args ) { // splice args from object into array and remove first index which is the hook name args = Array.prototype.slice.call(args, 1); if ( undefined != gform.hooks[hookType][action] ) { var hooks = gform.hooks[hookType][action], hook; //sort by priority hooks.sort(function(a,b){return a["priority"]-b["priority"]}); hooks.forEach( function( hookItem ) { hook = hookItem.callable; if(typeof hook != 'function') hook = window[hook]; if ( 'action' == hookType ) { hook.apply(null, args); } else { args[0] = hook.apply(null, args); } } ); } if ( 'filter'==hookType ) { return args[0]; } }, removeHook: function( hookType, action, priority, tag ) { if ( undefined != gform.hooks[hookType][action] ) { var hooks = gform.hooks[hookType][action]; hooks = hooks.filter( function(hook, index, arr) { var removeHook = (undefined==tag||tag==hook.tag) && (undefined==priority||priority==hook.priority); return !removeHook; } ); gform.hooks[hookType][action] = hooks; } } }; }

Rebecca Cole (619) 300-5044

  • This field is for validation purposes and should be left unchanged.
  • We are an equal opportunity employer. All applicants will be considered for employment without attention to race, color, religion, sex, sexual orientation, gender identity, national origin, veteran or disability status. We ensure nondiscrimination in all programs and activities in accordance with Title VI of the United States Civil Rights Act of 1964. If you need more information or special assistance for persons with disabilities or limited English proficiency, contact MaryJo OBrien at (954) 495-2112. Persons with hearing-and speech-impairments can contact the NV5 by using the Virginia Relay Service, a toll-free telecommunication device for the deaf (TDD). Call 711 for TTY/TDD.
  • This field is hidden when viewing the form
gform.initializeOnLoaded( function() {gformInitSpinner( 73, 'https://staging.nv5.com/wp-content/plugins/gravityforms/images/spinner.svg', true );jQuery('#gform_ajax_frame_73').on('load',function(){var contents = jQuery(this).contents().find('*').html();var is_postback = contents.indexOf('GF_AJAX_POSTBACK') >= 0;if(!is_postback){return;}var form_content = jQuery(this).contents().find('#gform_wrapper_73');var is_confirmation = jQuery(this).contents().find('#gform_confirmation_wrapper_73').length > 0;var is_redirect = contents.indexOf('gformRedirect(){') >= 0;var is_form = form_content.length > 0 && ! is_redirect && ! is_confirmation;var mt = parseInt(jQuery('html').css('margin-top'), 10) + parseInt(jQuery('body').css('margin-top'), 10) + 100;if(is_form){form_content.find('form').css('opacity', 0);jQuery('#gform_wrapper_73').html(form_content.html());if(form_content.hasClass('gform_validation_error')){jQuery('#gform_wrapper_73').addClass('gform_validation_error');} else {jQuery('#gform_wrapper_73').removeClass('gform_validation_error');}setTimeout( function() { /* delay the scroll by 50 milliseconds to fix a bug in chrome */ jQuery(document).scrollTop(jQuery('#gform_wrapper_73').offset().top - mt); }, 50 );if(window['gformInitDatepicker']) {gformInitDatepicker();}if(window['gformInitPriceFields']) {gformInitPriceFields();}var current_page = jQuery('#gform_source_page_number_73').val();gformInitSpinner( 73, 'https://staging.nv5.com/wp-content/plugins/gravityforms/images/spinner.svg', true );jQuery(document).trigger('gform_page_loaded', [73, current_page]);window['gf_submitting_73'] = false;}else if(!is_redirect){var confirmation_content = jQuery(this).contents().find('.GF_AJAX_POSTBACK').html();if(!confirmation_content){confirmation_content = contents;}jQuery('#gform_wrapper_73').replaceWith(confirmation_content);jQuery(document).scrollTop(jQuery('#gf_73').offset().top - mt);jQuery(document).trigger('gform_confirmation_loaded', [73]);window['gf_submitting_73'] = false;wp.a11y.speak(jQuery('#gform_confirmation_message_73').text());}else{jQuery('#gform_73').append(contents);if(window['gformRedirect']) {gformRedirect();}}jQuery(document).trigger("gform_pre_post_render", [{ formId: "73", currentPage: "current_page", abort: function() { this.preventDefault(); } }]); if (event && event.defaultPrevented) { return; } const gformWrapperDiv = document.getElementById( "gform_wrapper_73" ); if ( gformWrapperDiv ) { const visibilitySpan = document.createElement( "span" ); visibilitySpan.id = "gform_visibility_test_73"; gformWrapperDiv.insertAdjacentElement( "afterend", visibilitySpan ); } const visibilityTestDiv = document.getElementById( "gform_visibility_test_73" ); let postRenderFired = false; function triggerPostRender() { if ( postRenderFired ) { return; } postRenderFired = true; gform.core.triggerPostRenderEvents( 73, current_page ); if ( visibilityTestDiv ) { visibilityTestDiv.parentNode.removeChild( visibilityTestDiv ); } } function debounce( func, wait, immediate ) { var timeout; return function() { var context = this, args = arguments; var later = function() { timeout = null; if ( !immediate ) func.apply( context, args ); }; var callNow = immediate && !timeout; clearTimeout( timeout ); timeout = setTimeout( later, wait ); if ( callNow ) func.apply( context, args ); }; } const debouncedTriggerPostRender = debounce( function() { triggerPostRender(); }, 200 ); if ( visibilityTestDiv && visibilityTestDiv.offsetParent === null ) { const observer = new MutationObserver( ( mutations ) => { mutations.forEach( ( mutation ) => { if ( mutation.type === 'attributes' && visibilityTestDiv.offsetParent !== null ) { debouncedTriggerPostRender(); observer.disconnect(); } }); }); observer.observe( document.body, { attributes: true, childList: false, subtree: true, attributeFilter: [ 'style', 'class' ], }); } else { triggerPostRender(); } } );} );