{"version":3,"sources":["file-selector.js"],"names":["document","addEventListener","fileChosen","getElementById","formJob","formFile","fileId","fileError","butFileSubmit","butMainSubmit","clearResume","fileWarning","uploadURL","value","clearFileAlert","setPrompt","text","innerHTML","classList","remove","add","clearFileInput","ctrl","ex","parentNode","replaceChild","cloneNode","fileName","fileSize","ariaLive","event","target","files","name","size","msg","split","pop","prepend","e","preventDefault","innerText","uploadId","hasChosenAFile","length","thisId","uploadFile","data","FormData","file","xhr","append","XMLHttpRequest","responseType","status","open","onerror","console","log","statusText","onload","json","response","prompt","fileStatus","errorText","success","errors","click","Value","send","window","reset"],"mappings":"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","file":"file-selector-a1293121b9.js","sourcesContent":["// begin file upload\ndocument.addEventListener('DOMContentLoaded', function () {\n\n const fileChosen = document.getElementById('file');\n const formJob = document.getElementById('job-form');\n const formFile = document.getElementById('file-form');\n const fileId = document.getElementById('upload-file-id');\n const fileError = document.getElementById('upload-file-error');\n const butFileSubmit = document.getElementById('file-form-submit');\n const butMainSubmit = document.getElementById('main-form-submit');\n const clearResume = document.getElementById('clear-resume');\n const fileWarning = document.getElementById('FileUploadWarning');\n// const fileError = document.getElementById('file-selector-error');\n const uploadURL = document.getElementById('upload-url').value;\n\n clearResume.addEventListener('click', (event) => {\n clearFileInput(fileChosen);\n clearFileAlert();\n });\n\n fileChosen.addEventListener('cancel', (event) => {\n clearFileAlert();\n });\n\n fileChosen.addEventListener('change', (event) => {\n // validate size and soft validate extension, hard validations on server side\n var fileName;\n var fileSize = 0;\n var ariaLive = document.getElementById('file-selector-error');\n clearFileAlert();\n fileId.value = 0;\n return true;\n });\n\n fileChosen.addEventListener('change', (event) => {\n // validate size and soft validate extension, hard validations on server side\n var fileName;\n var fileSize = 0;\n var ariaLive = document.getElementById('file-selector-error');\n try {\n fileName = event.target.files[0].name;\n fileSize = event.target.files[0].size;\n } catch {\n return; // no file selected\n }\n const extension = fileName.split('.').pop();\n var msg = \"\";\n if (extension != \"pdf\") {\n msg = \"Wrong file type. Please select a PDF file.\";\n }\n else if (fileSize > 1048576) { // 1 MB = 1048576 btes\n msg = \"File is too big. Please select a file that is no larger than 1MB.\";\n }\n if (msg != \"\") {\n ariaLive.prepend(msg);\n clearFileInput(fileChosen);\n setPrompt(msg);\n return false;\n }\n else {\n clearFileAlert();\n fileId.value = 0;\n return true;\n }\n });\n\n butFileSubmit.addEventListener(\"click\", (e) => {\n e.preventDefault();\n butFileSubmit.innerText = 'Sending...';\n trySubmit();\n butFileSubmit.innerText = 'Send';\n return false;\n });\n\n window.addEventListener('pageshow', () => { formJob.reset(); formFile.reset(); });\n function trySubmit() {\n var uploadId = fileId.value;\n fileError.value = \"\";\n if (hasFileToUpload(uploadId)) {\n uploadFile();\n }\n else {\n butMainSubmit.click();\n }\n return false;\n }\n\n function uploadFile() {\n var data = new FormData();\n var file = fileChosen.files[0];\n if (file) {\n data.append('file', file);\n }\n\n var xhr = new XMLHttpRequest();\n xhr.responseType = 'json';\n const status = xhr.status;\n xhr.open('POST', uploadURL, true);\n xhr.onerror = () => {\n console.log('Error occurred: ', xhr.statusText);\n if (status === 401) { // Unauthorized\n fileId.value = -1;\n setPrompt('You are not authorized to access this file resource.');\n } else if (status === 500) { // Internal Server Error\n fileId.value = -1;\n setPrompt('An unexpected error occurred while uploading the file to the server. Please try again later.');\n } else {\n fileId.value = -1;\n setPrompt('An unknown file upload error occurred.');\n }\n };\n xhr.onload = () => {\n var json = xhr.response;\n var fileStatus = json.fileStatus;\n var prompt = \"success\";\n if (json.success) {\n // if (status === 0 || (status >= 200 && status < 400)) {\n if (json.fileStatus == \"Uploaded\") { // \"Uploaded\" || \"Invalid\"\n fileId.value = json.fileId; // send the fileID with the submission\n }\n else {\n prompt = \"There was an error uploading the resume. Please check and try again.\";\n }\n }\n else {\n clearFileInput(fileChosen);\n if (json.fileStatus == \"Invalid\") {\n prompt = json.errors;\n }\n else {\n prompt = \"There was an error uploading the resume. Please check and try again.\";\n }\n }\n submitMainForm(prompt);\n return false;\n };\n xhr.send(data);\n }\n\n function submitMainForm(errorText) {\n fileError.value = (errorText == \"success\") ? \"\" : errorText;\n butMainSubmit.click();\n if (errorText != \"success\") {\n setPrompt(errorText);\n fileId.value = 0;\n }\n fileError.Value = \"\";\n }\n\n function hasFileToUpload(uploadId) {\n var fileName = fileChosen.value;\n var hasChosenAFile = !((!fileName) || (fileName.length === 0));\n return ((hasNoFileId(uploadId)) && (hasChosenAFile));\n }\n function hasNoFileId(thisId) {\n return ((!thisId) || (thisId.length === 0) || (thisId == \"0\"));\n }\n\n function clearFileAlert() {\n setPrompt(\"\");\n }\n function setPrompt(text) { // you can handle prompts here however and wherever you want to put them in the DOM\n var prompt = \"ATTACH RESUME\";\n if (text) {\n prompt = prompt + \": \" + text + \"\";\n fileWarning.innerHTML = text;\n fileWarning.classList.remove('field-validation-valid');\n fileWarning.classList.remove('hidden');\n fileWarning.classList.add('field-validation-error');\n }\n else {\n fileWarning.innerHTML = \"\";\n fileWarning.classList.add('field-validation-valid');\n fileWarning.classList.remove('field-validation-error');\n }\n }\n function clearFileInput(ctrl) {\n try {\n ctrl.value = null;\n } catch (ex) { }\n if (ctrl.value) {\n ctrl.parentNode.replaceChild(ctrl.cloneNode(true), ctrl);\n fileId.value = \"0\";\n }\n }\n});"]}