CINXE.COM
<!DOCTYPE html> <html lang="en" class="h-100"><head><meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="description" content="Explore rewarding opportunities and make a difference at New Zealand Parliament. With a wide range of careers and opportunities available, from the deep south to the far north, our people are passionate and committed to supporting the work of MPs across Aotearoa."> <base href="/"> <meta property="og:description" content="Home"> <meta property="og:image" content="http://www.parliament.nz/media/1850/web-improved-parlt-hse-and-beehive.png?anchor=center&mode=crop&width=1200&height=630&rnd=131389039770000000"> <link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png"> <link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png"> <link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png"> <link rel="manifest" href="/site.webmanifest"> <link rel="mask-icon" href="/safari-pinned-tab.svg" color="#1c8075"> <meta name="msapplication-TileColor" content="#1c8075"> <meta name="theme-color" content="#ffffff"> <link rel="preconnect" href="https://fonts.googleapis.com"> <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> <link href="https://fonts.googleapis.com/css2?family=Open+Sans:wght@300;400;500;600;700&display=swap" rel="stylesheet"> <link href="css/bootstrap/bootstrap.min.css" rel="stylesheet"> <link href="css/app.css?v=4" rel="stylesheet"> <link href="CareerWeb.Server.styles.css" rel="stylesheet"> <meta name="google-site-verification" content="6MTurHlBwyjlW7ONN8uK1OZdlr932aI_myoaHM8b59o"> <script src="https://staticcdn.co.nz/embed/embed.js"></script> <!--Blazor:{"type":"webassembly","key":{"locationHash":"77D12F14A8105320B1AAED6AE7E689DA0EC4483270A645E84079EAA0FFDF550D:6","formattedComponentKey":""},"assembly":"Microsoft.AspNetCore.Components.Web","typeName":"Microsoft.AspNetCore.Components.Web.HeadOutlet","parameterDefinitions":"W10=","parameterValues":"W10="}--></head> <body class="h-100"><!--Blazor:{"type":"webassembly","key":{"locationHash":"63B9CF0340BA39C5047214604ECDCBB89450C9AEBDBD1D09AB98A0AE883C0270:10","formattedComponentKey":""},"assembly":"CareerWeb.Client","typeName":"CareerWeb.Client.Routes","parameterDefinitions":"W10=","parameterValues":"W10="}--> <script> (function () { let sit = "GTM-K2QGXR7"; let prod = "GTM-NQJ5V9"; let id = location.hostname.includes('parliament.nz') ? prod : sit; (function (w, d, s, l, i) { w[l] = w[l] || []; w[l].push({ 'gtm.start': new Date().getTime(), event: 'gtm.js' }); var f = d.getElementsByTagName(s)[0], j = d.createElement(s), dl = l != 'dataLayer' ? '&l=' + l : ''; j.async = true; j.src = 'https://www.googletagmanager.com/gtm.js?id=' + i + dl; f.parentNode.insertBefore(j, f); })(window, document, 'script', 'dataLayer', id); })() </script> <div id="blazor-error-ui"> An unhandled error has occurred. <a href class="reload">Reload</a> <a class="dismiss">馃棛</a></div> <script src="_framework/blazor.web.js"></script> <script type="module" src="https://unpkg.com/ionicons@5.5.2/dist/ionicons/ionicons.esm.js"></script> <script nomodule src="https://unpkg.com/ionicons@5.5.2/dist/ionicons/ionicons.js"></script> <script> function scrollIntoView(elementId) { var elem = document.getElementById(elementId); if (elem) { elem.scrollIntoView({ block: "start" }); } } window.blazorHelpers = { scrollToFragment: (elementId) => { var element = document.getElementById(elementId); if (element) { element.scrollIntoView({ behavior: 'smooth' }); } } }; </script> <script> function getElementWidth(elementId) { var elem = document.getElementById(elementId); if (elem) { return elem.offsetWidth; } } function getElementHeight(elementId) { var elem = document.getElementById(elementId); if (elem) { return elem.offsetHeight; } } </script> <script> var benefitsContainer, benefitsSlidesContainer, benefitsSlides, benefitsPips function initializeBenefitsSlidingParameters(){ benefitsContainer = document.getElementById('benefits-slides-container') benefitsSlides = benefitsContainer.getElementsByClassName('benefits-mobile-slide') benefitsSlidesContainer = document.getElementById('benefits-slides') benefitsPips = document.getElementsByClassName('benefits-slide-pip') benefitsPips[0].classList.add('current') currentBenefits = 0 benefitsContainer.addEventListener('mousedown', dragBenefitsStart) benefitsContainer.addEventListener('touchstart', dragBenefitsStart) window.addEventListener('mouseup', dragBenefitsEnd) benefitsContainer.addEventListener('touchend', dragBenefitsEnd) window.addEventListener('mousemove', dragBenefitsMove) benefitsContainer.addEventListener('touchmove', dragBenefitsMove) } var currentBenefits = 0, currentBenefitsPos, benefitsMouseOffset, benefitsSlideWidth, benefitsMoving = false var benefitsStartPos, benefitsLastTouchX const dragBenefitsStart = (e) => { benefitsSlideWidth = benefitsSlides[0].offsetWidth if (e.touches) benefitsLastTouchX = e.touches[0].clientX benefitsStartPos = e.clientX || benefitsLastTouchX benefitsMouseOffset = 0 currentBenefitsPos = benefitsContainer.getBoundingClientRect().left; benefitsMoving = true; requestAnimationFrame(moveBenefits.bind(this)) }, dragBenefitsEnd = (e) => { if (benefitsMoving) { var offset = (currentBenefits * benefitsSlideWidth) + currentBenefitsPos + -benefitsMouseOffset var newCurrent = Math.round(offset / benefitsSlideWidth) goToBenefits(newCurrent) benefitsMoving = false } }, dragBenefitsMove = (e) => { if (e.touches) benefitsLastTouchX = e.touches[0].clientX const moveX = e.clientX || benefitsLastTouchX benefitsMouseOffset = moveX - benefitsStartPos benefitsMouseOffset = benefitsMouseOffset * swipeSensitivity } function moveBenefits() { if (benefitsMoving) { var offset = -(currentBenefits * benefitsSlideWidth) + currentBenefitsPos + benefitsMouseOffset if (offset > 0) { offset = 0; } if (offset < -(benefitsSlideWidth * (benefitsPips.length - 1))) { offset = -(benefitsSlideWidth * (benefitsPips.length - 1)); } benefitsSlidesContainer.style.transform = 'translateX(' + (offset) + 'px)' benefitsSlidesContainer.classList.add('moving') requestAnimationFrame(moveBenefits.bind(this)) } } function goToBenefits(newIndex) { if (newIndex < 0) { currentBenefits = 0; } else if (newIndex >= benefitsSlides.length) { currentBenefits = benefitsSlides.length - 1; } else { currentBenefits = newIndex; } benefitsSlidesContainer.classList.remove('moving') benefitsSlidesContainer.style.transform = 'translateX(' + -(currentBenefits * benefitsSlideWidth) + 'px)' for (i = 0; i < benefitsPips.length; i++) { benefitsPips[i].classList.remove('current') } benefitsPips[currentBenefits].classList.add('current') } </script> <script> var featuredJobsContainer, featuredJobsSlidesContainer, featuredJobsSlides, featuredJobsPips function initializeFeaturedJobsSlidingParameters() { featuredJobsContainer = document.getElementById('featured-jobs-container') featuredJobsSlides = featuredJobsContainer.getElementsByClassName('job-detail-card') featuredJobsSlidesContainer = document.getElementById('featured-jobs-slider') featuredJobsPips = document.getElementsByClassName('featured-jobs-pip') featuredJobsPips[0].classList.add('current') currentfeaturedJobs = 0 featuredJobsContainer.addEventListener('mousedown', dragfeaturedJobsStart) featuredJobsContainer.addEventListener('touchstart', dragfeaturedJobsStart) window.addEventListener('mouseup', dragfeaturedJobsEnd) featuredJobsContainer.addEventListener('touchend', dragfeaturedJobsEnd) window.addEventListener('mousemove', dragfeaturedJobsMove) featuredJobsContainer.addEventListener('touchmove', dragfeaturedJobsMove) } var currentfeaturedJobs = 0, currentFeaturedJobsPos, featuredJobsMouseOffset, featuredJobsSlideWidth, featuredJobsMoving = false, swipeSensitivity = 2 var featuredJobsStartPos, featuredJobsLastTouchX const dragfeaturedJobsStart = (e) => { featuredJobsSlideWidth = featuredJobsSlides[0].offsetWidth + 40 if (e.touches) featuredJobsLastTouchX = e.touches[0].clientX featuredJobsStartPos = e.clientX || featuredJobsLastTouchX featuredJobsMouseOffset = 0 currentFeaturedJobsPos = featuredJobsContainer.getBoundingClientRect().left; featuredJobsMoving = true; requestAnimationFrame(movefeaturedJobs.bind(this)) }, dragfeaturedJobsEnd = (e) => { if (featuredJobsMoving) { var offset = (currentfeaturedJobs * featuredJobsSlideWidth) + currentFeaturedJobsPos + -featuredJobsMouseOffset var newCurrent = Math.round(offset / featuredJobsSlideWidth) goTofeaturedJobs(newCurrent) featuredJobsMoving = false } }, dragfeaturedJobsMove = (e) => { if (e.touches) featuredJobsLastTouchX = e.touches[0].clientX const moveX = e.clientX || featuredJobsLastTouchX featuredJobsMouseOffset = moveX - featuredJobsStartPos featuredJobsMouseOffset = featuredJobsMouseOffset * swipeSensitivity } function movefeaturedJobs() { if (featuredJobsMoving) { var offset = -(currentfeaturedJobs * featuredJobsSlideWidth) + currentFeaturedJobsPos + featuredJobsMouseOffset if (offset > 0) { offset = 0; } if (offset < -(featuredJobsSlideWidth * (featuredJobsPips.length - 1))) { offset = -(featuredJobsSlideWidth * (featuredJobsPips.length - 1)); } featuredJobsSlidesContainer.style.transform = 'translateX(' + (offset) + 'px)' featuredJobsSlidesContainer.classList.add('moving') requestAnimationFrame(movefeaturedJobs.bind(this)) } } function goTofeaturedJobs(newIndex) { if (newIndex < 0) { currentfeaturedJobs = 0; } else if (newIndex >= featuredJobsSlides.length) { currentfeaturedJobs = featuredJobsSlides.length - 1; } else { currentfeaturedJobs = newIndex; } featuredJobsSlidesContainer.classList.remove('moving') featuredJobsSlidesContainer.style.transform = 'translateX(' + -(currentfeaturedJobs * featuredJobsSlideWidth) + 'px)' for (i = 0; i < featuredJobsPips.length; i++) { featuredJobsPips[i].classList.remove('current') } featuredJobsPips[currentfeaturedJobs].classList.add('current') } </script> <script> // listen for page resize function resizeListener(dotnethelper) { window.addEventListener('resize', () => onResize(dotnethelper)); } function onResize(dotnethelper) { let browserHeight = window.innerHeight; let browserWidth = window.innerWidth; dotnethelper.invokeMethodAsync('SetBrowserDimensions', browserWidth, browserHeight).then(() => { // success, do nothing }).catch(error => { console.log("Error during browser resize: " + error); }); } </script> <script src="Scripts/scriptLoader.js"></script></body></html><!--Blazor-WebAssembly-Component-State:eyJfX2ludGVybmFsX19BbnRpZm9yZ2VyeVJlcXVlc3RUb2tlbiI6ImV5SjJZV3gxWlNJNklrTm1SRW80UkV4dU4zUkhZMjFGYkV4d1ZEUXdkSFJ4ZFdOUFVXUnFaakZ4VHpoMVJIZFZORE4wWjBSUlJHUkxZbDlSU0VOd1FsOVZOakJmVDI1RE9VSm5MV2xWVVc1UWVsUmZTR2xhVTNkMmJEZ3RjakpHUXpCSU9XUm5UME5zTTFWVlNtdGtSbmhmZFhoWllXTmxUVmxZYVdaNGJqZHlaVTh3U1hCUmJWTnJVSGh1YW14dGJITndVbDlJYW5GUU1uZFpaekV4TUZnNFRVZEJJaXdpWm05eWJVWnBaV3hrVG1GdFpTSTZJbDlmVW1WeGRXVnpkRlpsY21sbWFXTmhkR2x2YmxSdmEyVnVJbjA9In0=-->