{"version":3,"sources":["js/alertReg.js"],"names":["initRegForm","type","$","attr","resetRegForm","parms","method","returnFormat","cred","injectIntoObject","ajax","dataType","url","data","cache","success","handleLoadReg","error","handleLoadRegError","qXHR","textStatus","errorThrown","ladda","exc","logMsg","alert","resetLoginForm","addClass","primary","forEach","fld","idx","newval","REG","Primary","toLowerCase","toString","length","indexOf","substr","val","populatePrimaryPulldown","prop","NonEmer","ID","hide","show","removeClass","curVal","$curOptions","newOptions","each","this","value","push","id","closest","find","text","replace","remove","append","join","doRegSubmit","which","returnformat","usertype","home","work","mobile","sms","althome","altwork","altmobile","email","altemail","fname","lname","expiredt","nonemer","primaryFld","is","handleRegSubmit","handleRegError","location","href","doRegCancel","doRegRemove","hasClass","confirm","handleRegRemove","document","ready","keyup","blur","click","jQueryValidationBootstrapPatch","formatter","pattern","validate","rules","regFormValidation","messages","submitHandler","highlight","element","end","unhighlight"],"mappings":"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","file":"alertReg.js","sourcesContent":["$(document).ready(function() {\r\n // References to \".alertregform\" class will always be applied to the container.\r\n // Only use \"#alertreg\" for stuff specific to RVC Alerts app itself and not anywhere\r\n // that the form will be embedded in another form.\r\n\r\n logMsg('Hello. Starting up the RVC Alert registration form.');\r\n\r\n // Initialize registration Form:\r\n $('.alertregform input')\r\n .keyup(populatePrimaryPulldown)\r\n .blur(populatePrimaryPulldown);\r\n $('.alertregform .remove').click(doRegRemove);\r\n $('.alertregform .cancelreg').click(doRegCancel);\r\n resetRegForm();\r\n\r\n // Form validation:\r\n jQueryValidationBootstrapPatch();\r\n $('.alertregform input[type=tel]').formatter({\r\n pattern: '({{999}}) {{999}}-{{9999}}'\r\n });\r\n $('#alertreg').validate({\r\n rules: regFormValidation.rules,\r\n messages: regFormValidation.messages,\r\n submitHandler: doRegSubmit,\r\n // These highlight/unhighlight functions are a little different than the Bootstrap patch standard.\r\n // These just look for a parent div of the input when getting to the .form-control-feedback element.\r\n highlight: function(element) {\r\n $(element)\r\n .closest('.form-group')\r\n .removeClass('has-success')\r\n .addClass('has-error')\r\n .end()\r\n .closest('div')\r\n .find('.form-control-feedback')\r\n .removeClass('glyphicon-ok')\r\n .addClass('glyphicon-remove');\r\n },\r\n unhighlight: function(element) {\r\n $(element)\r\n .closest('.form-group')\r\n .removeClass('has-error')\r\n .addClass('has-success')\r\n .end()\r\n .closest('div')\r\n .find('.form-control-feedback')\r\n .removeClass('glyphicon-remove')\r\n .addClass('glyphicon-ok');\r\n }\r\n });\r\n});\r\n\r\n// Initialize the registration form, including kicking off the AJAX to load user data from reg web service.\r\n// Note it is only needed if you'll be doing the AJAX calls.\r\nfunction initRegForm(type) {\r\n $('#alertreg').attr('data-type', type);\r\n resetRegForm();\r\n var parms = {\r\n method: 'loadInfo',\r\n returnFormat: 'json'\r\n };\r\n cred.injectIntoObject(parms);\r\n $.ajax({\r\n dataType: 'json',\r\n url: 'api/RegWebService.cfc',\r\n method: 'POST',\r\n data: parms,\r\n cache: false,\r\n success: handleLoadReg,\r\n error: handleLoadRegError\r\n });\r\n}\r\n\r\n// Handle reg web service errors\r\nfunction handleLoadRegError(qXHR, textStatus, errorThrown) {\r\n try {\r\n $('.loginform:visible button[type=submit]').ladda('stop');\r\n } catch (exc) {\r\n logMsg(\"No ladda. It's ok.\");\r\n }\r\n alert('Sorry, we could not load your registration! Please try again later.\\n\\n' + errorThrown);\r\n resetLoginForm();\r\n}\r\n\r\n// Handle populating data from reg web service into reg form\r\nfunction handleLoadReg(data) {\r\n var which = $('#alertreg').attr('data-type');\r\n if (which == 'e')\r\n $('.remove')\r\n .addClass('disabled')\r\n .attr('title', 'As an employee, you are required to have at least one emergency contact.');\r\n var primary = '';\r\n ['Home', 'AltHome', 'Work', 'AltWork', 'Mobile', 'AltMobile', 'SMS', 'Email', 'AltEmail'].forEach(function(\r\n fld,\r\n idx\r\n ) {\r\n var newval = data.REG[fld];\r\n // Does number match 'primary' number? Don't match empty string or the non-telephone fields.\r\n if (data.REG.Primary == newval && newval != '' && idx < 6) primary = fld.toLowerCase();\r\n // If the field is a phone number, format the number to \"(999) 999-9999\" format.\r\n // Also, if all nines, remove the number. This is a placeholder for \"nothing\".\r\n if (typeof newval == 'number') newval = newval.toString();\r\n if (newval == '9999999999') newval = '';\r\n if (newval.length > 0 && fld.toLowerCase().indexOf('email') < 0)\r\n newval = '(' + newval.substr(0, 3) + ') ' + newval.substr(3, 3) + '-' + newval.substr(6, 4);\r\n // Set the field:\r\n $('#' + fld.toLowerCase()).val(newval);\r\n });\r\n populatePrimaryPulldown();\r\n $('#primary').val(primary);\r\n if ($('#primary').val() != primary) $('#primary').val('');\r\n $('#nonemer').prop('checked', data.REG.NonEmer || data.REG.ID == 0); // Use their NonEmer setting, or always true if this is a new registration (hence ID==0)\r\n $('.loginform').hide();\r\n $('#alertreg').show();\r\n}\r\n\r\n// Just the UI to clear out the reg form\r\nfunction resetRegForm() {\r\n $('.alertregform input, .alertregform select').val('');\r\n $('.alertregform input[type=checkbox]').prop('checked', true);\r\n $('.alertregform .remove')\r\n .removeClass('disabled')\r\n .attr('title', '');\r\n $('.alertregform .has-feedback').removeClass('has-success has-error');\r\n $('.alertregform .form-control-feedback').removeClass('glyphicon-ok glyphicon-remove');\r\n $('.alertregform .help-block').hide();\r\n try {\r\n $('.alertregform button.ladda-button').ladda();\r\n } catch (exc) {\r\n logMsg(\"No ladda. It's ok.\");\r\n }\r\n populatePrimaryPulldown();\r\n}\r\n\r\n// Calculates what options should be in the \"Primary\" pulldown based on input fields in \"Telephone\" section, and updates it accordingly\r\nfunction populatePrimaryPulldown() {\r\n var curVal = $('#primary').val();\r\n var $curOptions = $('#primary option');\r\n var newOptions = [\"\"];\r\n // Look at all the telephone inputs, and generate all the select options.\r\n $('.telgroup input').each(function() {\r\n if (this.value.length)\r\n newOptions.push(\r\n \"'\r\n );\r\n });\r\n // If what we generated is a different length than what exists, replace it with what we generated.\r\n if ($curOptions.length != newOptions.length) {\r\n $curOptions.remove();\r\n $('#primary').append(newOptions.join(''));\r\n // If there's only one choice (plus the \"Select Primary Number\" placeholder option), automatically select it.\r\n if (newOptions.length == 2) $('#primary').val($('#primary :nth-child(2)').val());\r\n else {\r\n // Otherwise, try to select the same value we had previously.\r\n $('#primary').val(curVal);\r\n // If previous value couldn't be found, though, then choose the \"Select Primary Number\" placeholder option.\r\n if ($('#primary').val() != curVal) $('#primary').val('');\r\n }\r\n }\r\n}\r\n\r\n// Handle submitting the reg form to the reg web service\r\nfunction doRegSubmit() {\r\n logMsg('Submit Registration!');\r\n try {\r\n $('#alertreg button[type=submit]').ladda('start');\r\n } catch (exc) {\r\n logMsg(\"No ladda. It's ok.\");\r\n }\r\n var which = $('#alertreg').attr('data-type');\r\n var parms = {\r\n method: 'saveInfo',\r\n returnformat: 'json',\r\n usertype: which == 'nc' ? 's' : which,\r\n /* Non-credit (nc) is special just for JS logic. Non-credit students are still \"s\" type for the web service */\r\n primary: '',\r\n home: '',\r\n work: '',\r\n mobile: '',\r\n sms: '',\r\n althome: '',\r\n altwork: '',\r\n altmobile: '',\r\n email: '',\r\n altemail: '',\r\n fname: '',\r\n lname: '',\r\n expiredt: '',\r\n nonemer: null\r\n };\r\n // Add credentials\r\n cred.injectIntoObject(parms);\r\n // Pull in form values, for phone, strip to only digits\r\n ['home', 'althome', 'work', 'altwork', 'mobile', 'altmobile', 'sms', 'email', 'altemail'].forEach(function(fld) {\r\n parms[fld] = $('#' + fld).val();\r\n if (fld.indexOf('email') < 0) parms[fld] = parms[fld].replace(/\\D/g, '');\r\n });\r\n // Specialized fields (primary, nonemer)\r\n var primaryFld = $('#primary').val();\r\n parms.primary = primaryFld == '' ? '' : parms[primaryFld];\r\n parms.nonemer = $('#nonemer').is(':checked');\r\n // Submit data\r\n $.ajax({\r\n dataType: 'json',\r\n url: 'api/RegWebService.cfc',\r\n method: 'POST',\r\n data: parms,\r\n cache: false,\r\n success: handleRegSubmit,\r\n error: handleRegError\r\n });\r\n}\r\n\r\n// Handle reg web service errors\r\nfunction handleRegError(qXHR, textStatus, errorThrown) {\r\n try {\r\n $('#alertreg .ladda-button').ladda('stop');\r\n } catch (exc) {\r\n logMsg(\"No ladda. It's ok.\");\r\n }\r\n alert('Sorry, we could not save your settings. Please try again later.\\n\\n' + errorThrown);\r\n}\r\n\r\n// Confirm the reg web service submission succeeded, and if so, proceed to confirmation screen\r\nfunction handleRegSubmit(data) {\r\n try {\r\n $('#alertreg button[type=submit]').ladda('stop');\r\n } catch (exc) {\r\n logMsg(\"No ladda. It's ok.\");\r\n }\r\n if (data) location.href = 'confirm.cfm';\r\n else alert('Sorry, we could not save your settings. Please try again later.');\r\n}\r\n\r\n// Reg screen cancel button\r\nfunction doRegCancel() {\r\n location.href = '.';\r\n}\r\n\r\n// Reg screen remove button submits a remove request to the reg web service\r\nfunction doRegRemove() {\r\n if ($(this).hasClass('disabled')) alert('As an employee, you are required to have at least one emergency contact.');\r\n else {\r\n logMsg('Registration removal!');\r\n if (\r\n confirm(\r\n 'Are you sure you want to remove yourself from the RVC Alert service? ' +\r\n 'You will no longer be alerted to important RVC related events.'\r\n )\r\n ) {\r\n var which = $('#alertreg').attr('data-type');\r\n var parms = {\r\n method: 'removeInfo',\r\n returnformat: 'json'\r\n };\r\n cred.injectIntoObject(parms);\r\n try {\r\n $('#alertreg button.remove').ladda('start');\r\n } catch (exc) {\r\n logMsg(\"No ladda. It's ok.\");\r\n }\r\n $.ajax({\r\n dataType: 'json',\r\n url: 'api/RegWebService.cfc',\r\n method: 'POST',\r\n data: parms,\r\n cache: false,\r\n success: handleRegRemove,\r\n error: handleRegError\r\n });\r\n }\r\n }\r\n}\r\n\r\n// Confirm the reg web service removal succeeded, and if so, proceed to removal confirmation screen\r\nfunction handleRegRemove(data) {\r\n try {\r\n $('#alertreg button.remove').ladda('stop');\r\n } catch (exc) {\r\n logMsg(\"No ladda. It's ok.\");\r\n }\r\n if (data) location.href = 'remove.cfm';\r\n else alert('Sorry, we could not complete your request. Please try again later.');\r\n}\r\n"]}