var employmentLocation = new Set(), empListing = [], employmentInfo = [], employmentAPI = new XMLHttpRequest(); employmentAPI.open('GET', '/api/v1/corporation_employment/?format=json&api_key=' + window.api_key, true); employmentAPI.send(); employmentAPI.onload = function() { var employmentData = JSON.parse(this.response); var employmentListing = employmentData.objects; employmentListing.forEach(function(listing) { employmentLocation.add(listing.location); employmentInfo.push(listing); }); var empPos = new XMLHttpRequest(); empPos.open('GET', '/api/v3/employment/list_positions/?format=json&api_key=' + window.api_key, true); empPos.send(); empPos.onload = function() { var data = JSON.parse(this.response); data.forEach(function(item) { empListing.push(item); }); createRegions(); addRegionEventListeners(); addCardObservers(); setCsrf(); postMessage(); } }; function createRegions() { var regionHTML = '
\n'; var employmentRegionContainer = {}; var employmentTemplates = {}; employmentLocation.forEach(function(region) { regionHTML += ''; employmentRegionContainer[region] = '
\n'; }); employmentLocation.forEach(function(region) { employmentInfo.forEach(function(info, i) { if(info.location == region) { employmentRegionContainer[region] = employmentRegionContainer[region] + '
\n'+ '

'+ info.name + (info.state ? ' - '+ info.state +'' : '') + '

\n'+ '
\n' + '
\n' + '
\n' + '
\n' + '
\n' + '

'+ info.name +'

\n' + '
\n'+ '
\n' + '

'+ info.location + ', ' + info.region+'

\n'+ '
\n' + '
\n' + // might need an aria-label for this quasi-link '

Back To Listingsback arrow

' + '
\n' + '
\n' + '
\n' + '
\n' + '

'+ info.description + '

\n'+ '
\n' + '
\n' + '

REQUIREMENTS:

\n'+ '

'+ info.requirements + '

\n'+ (info.application ? '

Download Application Download PDF

\n' : "")+ '
\n' + '
\n' + '
\n' + '

APPLY FOR THIS POSITION

' + '

STEP 1:

\n' + 'Open Application\n' + '

STEP 2: Complete Application

\n' + '

STEP 3: Save completed application to your desktop

\n' + '

STEP 4: Upload completed application using the form below

\n' + document.getElementById('crispy_form').innerHTML + '
\n' + '
\n' + '
\n' + '
\n' + '
\n'; } }); }); var careersContainer = document.getElementById('careers_container'); for( var i in employmentRegionContainer ) { careersContainer.innerHTML += employmentRegionContainer[i]; } regionHTML += '
'; var regionsContainer = document.getElementById('regions_container'); regionsContainer.innerHTML += regionHTML; let jobContainers = Array.prototype.slice.call(document.getElementsByClassName("job-posting-container")); let communityInputs = Array.prototype.slice.call(document.getElementsByName("community")) let positionInputs = Array.prototype.slice.call(document.getElementsByName("position")) jobContainers.forEach(function(container, i) { communityInputs[i].value = container.getAttribute('data-community'); positionInputs[i].value = container.getAttribute('data-employment') }); } function empPos() { var empPos = new XMLHttpRequest(); empPos.open('GET', '/api/v3/employment/list_positions/?format=json&api_key=' + window.api_key, true); empPos.send(); empPos.onload = function() { var data = JSON.parse(this.response); data.forEach(function(item) { empListing.push(item); }); } } function postMessage() { var careersContainer = document.getElementById('job_container'); var form = Array.from(document.getElementsByClassName("djenga_form")); form.forEach(form => { let thisForm = form.getElementsByTagName("form")[0]; var postData = new XMLHttpRequest(); thisForm.addEventListener("submit", function(e) { e.preventDefault(); console.log(thisForm); postData.open("POST", '/api/v2/employment_submission/'); postData.send(new FormData(thisForm)); careersContainer.innerHTML = "

Application has been submitted

"; }); }) } function setCsrf() { var employmentAPI = new XMLHttpRequest(); employmentAPI.open('GET','/api/v2/employment_submission/', true); employmentAPI.send(); employmentAPI.onload = function() { var csrfInputs = Array.prototype.slice.call(document.getElementsByName('csrfmiddlewaretoken')); var response = this.responseText; csrfInputs.forEach(function(input) { input.value = response.trim(); }); } } // Region Button clicks function addRegionEventListeners() { document.getElementsByClassName('career-item')[0].classList.add('active-listing'); var regionButtons = Array.prototype.slice.call(document.getElementsByClassName('region-button')); regionButtons[0].classList.add('active-button'); regionButtons[0].click(); regionButtons.forEach(function(button) { button.addEventListener("click", function() { for(var i = 0; i < regionButtons.length; i++) { regionButtons[i].classList.remove('active-button'); } this.classList.add('active-button'); Array.prototype.slice.call(document.getElementsByClassName('career-item')).forEach(function(item) { item.classList.remove('active-listing'); }); document.getElementsByClassName(this.innerHTML)[0].classList.add('active-listing'); }); }); }; // Card clicks & back button function addCardObservers() { var cardButton = Array.prototype.slice.call(document.getElementsByClassName("card-button")); var backButton = Array.prototype.slice.call(document.getElementsByClassName("back-to-listing")) var page = document.getElementById("careers_front_page"); var jobsSection = document.getElementById("job_positions"); var innerCards = document.getElementsByClassName("inner-card-section"); cardButton.forEach(function(button, i) { button.addEventListener("click", function() { innerCards[i].classList.remove("hide"); innerCards[i].classList.add("open-card"); page.classList.add("hide"); jobsSection.classList.add("set-height"); }); }); backButton.forEach(function(backBtn, i) { backBtn.addEventListener("click", function() { page.classList.remove("hide"); jobsSection.classList.remove("set-height"); innerCards[i].classList.add("hide"); }); }); };