{"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 + \": <a>\" + text + \"</a>\";\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});"]}