Civil Engineer - Water Resources

  • Environmental Consulting Technology
  • Lombard, Illinois
  • Full Time
1 || currentPage.indexOf('wfn-prod-test.adp') > -1 || currentPage.indexOf('workforcenow.cloud.adp') > -1;const cookies = document.cookie.match(new RegExp('WFNCDN=([^;]+)'));let cdn = cookies && cookies[1] ? cookies[1] : 'wfn';cdn = cdn.toLowerCase();let cdnPath;if (cdn === 'myadp') {cdnPath = isProduction ? 'static.adp/mas' : 'static-iat.adp/mas';}else {cdnPath = isProduction ? 'static.workforcenow.adp/mas' : 'static.wfn-iat.adp/mas';}window['wfnCdnPath'] = cdnPath;}}catch (e) {console.error('Error while setting domain ' + e);}// Workaround for Highcharts Error #16if (window.Highcharts) {window.SAVED_Highcharts = window.Highcharts;delete window.Highcharts;}(function() {// Dynamic CSS and JS loaderconst mdfLoader = {cssFiles: ['/mascsr/default/mdf/recruitment/styles/recruitment.721cca2beb0d4d0e3965.css',],jsFiles: ['/mascsr/default/mdf/recruitment/recruitment.721cca2beb0d4d0e3965.js','/mascsr/default/mdf/recruitment/config-loader.js','/mascsr/default/mdf/recruitment/detectizr.min.js','/mascsr/default/mdf/recruitment/modernizr.min.js','/mascsr/default/mdf/recruitment/browser.js'],loadMethods: [],filesLoaded: [],whenFinished: function() {if (document.getElementById('recPageLoadWaitingIndicator')) {document.getElementById('recPageLoadWaitingIndicator').style.display = 'none';}if (window.SAVED_Highcharts) {window.Highcharts = window.SAVED_Highcharts;}},mdfLoaded: false,cdnPath: window['wfnCdnPath'] || 'static.workforcenow.adp/mas',publicPath: 'https://cdn-path',applicationPath: '/mascsr/default/mdf/recruitment',applicationName: 'recruitment',resetFileLists: function() {if (!window.gapi) {this.jsFiles.push('');}const langMap = {en_US: 'en',fr_CA: 'fr-CA',es_US: 'es-US',en_CA: 'en-CA'};let adpLang = this.getParameterByName('lang');if (adpLang) {const tempLang = langMap[adpLang];if (!tempLang && adpLang.replace('-', '_').split('_').length > 1) {let url = window.location.href;let finalLang = adpLang.replace('-', '_').split('_')[0] + '_' + (adpLang.replace('-', '_').split('_')[1]).toUpperCase();finalLang = finalLang.replace(/^\s+|\s+$/g, '');if (langMap[finalLang]) {adpLang = adpLang.match(/^\s|\s$/) ? encodeURIComponent(adpLang) : adpLang;url = url.replace(adpLang, finalLang);window.location.href = url;}else {const firstPart = adpLang.replace('-', '_').split('_')[0];if (firstPart.toLowerCase() === 'es') {url = url.replace(adpLang, 'es_US');window.location.href = url;}else if (firstPart.toLowerCase() === 'fr') {url = url.replace(adpLang, 'fr_CA');window.location.href = url;}}}if (document.getElementsByTagName('html') && document.getElementsByTagName('html')[0] && !document.getElementsByTagName('html')[0].lang) {document.getElementsByTagName('html')[0].lang = adpLang.replace('-', '_').split('_')[0];}}},getParameterByName: function (name, url) {if (!url) {url = window.location.href;}name = name.replace(/[\[\]]/g, '\\$&');const regex = new RegExp('[?&]' + name + '(=([^&#]*)|&|#|$)');const results = regex.exec(url);if (!results) {return null;}if (!results[2]) {return '';}return decodeURIComponent(results[2].replace(/\+/g, ' '));},endsWith: function(str, suffix) {// Strip off any ./ or ../ at the start of the suffix.const firstSlash = suffix.indexOf('/');suffix = suffix.substring(firstSlash);// Do the comparisonreturn str.indexOf(suffix, str.length - suffix.length) !== -1;},isStyleSheetLoaded: function(url) {let linkTags = document.getElementsByTagName('link');let link;for (let i = 0; i = 0 || !this.isStyleSheetLoaded(url)) {console.log('mdfLoader.loadStyleSheet(): LOADING [' + url + ']');sheet = document.createElement('link');sheet.type = 'text/css';sheet.rel = 'stylesheet';sheet.href = this.appendCidToUrl(url);if (media) {sheet.media = media;}document.head.appendChild(sheet);}else {console.log('mdfLoader.loadStyleSheet(): SKIPPING [' + url + ']');}},appendCidToUrl: function(url) {try {const cid = new URLSearchParams(window.location.search).get('cid');if (cid && url.indexOf('recruitment') > -1 && url.indexOf('cid') === -1) {if (cid) {url = `${url}?cid=${cid}`;}}return url;} catch {return url;}},loadScript: function(url, language, onLoad) {let script = null;let _this = this;// We want to load JavaScript files under 2 conditions:// 1. The JavaScript has not been loaded before.// 2. The JavaScript is application-specific and needs to be reloaded when we return to the application.if (url.indexOf(this.applicationName) >= 0 || !this.isScriptLoaded(url)) {console.log('mdfLoader.loadScript(): LOADING [' + url + ']');this.filesLoaded.push(false);let fileIndex = this.filesLoaded.length - 1;script = document.createElement('script');script.src = this.appendCidToUrl(url);script.async = false;if (language) {script.type = language;}else {script.type = 'text/javascript';}script.onload = function() {_this.filesLoaded[fileIndex] = true;if (onLoad) {onLoad(arguments);}if (_this.filesLoaded.every(function(item) { return item; })) {_this.whenFinished();}};document.head.appendChild(script);}else {console.log('mdfLoader.loadScript(): SKIPPING [' + url + ']');}},fixPath: function(path) {return path.replace('cdn-path', this.cdnPath);},pageSetup: function() {const isProduction = this.publicPath.startsWith('https');this.publicPath = this.fixPath(this.publicPath);// Create window.process.env.NODE_ENV completely, otherwise the GraphQL library will break.if (!window.process) {window.process = {};}if (!window.process.env) {window.process.env = {};}if (isProduction && window['wfnCdnPath']) {window.process.env.NODE_ENV = 'production';const node = document.getElementById('recruitment_root');if (node && node.parentNode) {node.parentNode.className = '';}}else {window.process.env.NODE_ENV = 'development';}this.cssFiles.forEach((file) => {const itemUrl = this.fixPath(file);if (window['dojoConfig'] || window['angular']) {if (file.indexOf('fonts') {const itemUrl = this.fixPath(file);this.loadScript(itemUrl);});},};mdfLoader.resetFileLists();// Code to run when all the scripts have loaded.mdfLoader.whenFinished = function () {if (document.getElementById('recPageLoadWaitingIndicator')) {document.getElementById('recPageLoadWaitingIndicator').style.display = 'none';}if (window.SAVED_Highcharts) {window.Highcharts = window.SAVED_Highcharts;}};// Load the CSS and JS files based on the environment.mdfLoader.pageSetup();})();
Job ID: 488320623
Originally Posted on: 8/6/2025

Want to find more Construction opportunities?

Check out the 163,060 verified Construction jobs on iHireConstruction