{"version":3,"sources":["JFM/AJAXCommunications.js","JFM/Constants.js","JFM/Observable.js","JFM/Recaptcha,.js","JFM/Utility.js","JFM/Validations.js","JFM/WidgetForForms.js","JFMUI/Alert.js","JFMUI/Form.js","JFMUI/Icon.js","JFMUI/Loader.js","JFMUI/PopUp.js","JFMUI/UI_Constants.js"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACvPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC3FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACrDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACnOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACpIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACjiBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACvXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACvDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC3rBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AClHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC1LA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC1QA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","file":"JFM.js","sourcesContent":["/// \r\n/**\r\n * SpinLoader params\r\n * @typedef {Object} AJAX_OPTIONS\r\n * @property {string} method Http Request Method.\r\n * @property {string} url Target url.\r\n * @property {object} data Data to send.\r\n * @property {string} mode Fetch API mode {@link JFM_CONST.FETCHMODES}\r\n * @property {string} contentType Content Type {@link JFM_CONST.CONTENTTYPE}\r\n * @property {Function} FnSuccess Callback on successful communication.\r\n * @property {Function} FnError Callback on communication error.\r\n * @property {Function} FnBeforeSend Fn before establish communication.\r\n * @property {Function} FnComplete Callback on complete communication.\r\n */\r\n\r\n/**\r\n * Error response.\r\n * @typedef {Object} AJAX_ERROR\r\n * @property {String} message error message.\r\n * @property {String} stack stack trace.\r\n * @property {String} status status code.\r\n * @property {String} statusText statux text.\r\n */\r\n\r\n\r\n/**\r\n * Ajax response.\r\n * @typedef {Object} AJAX_RESPONSE\r\n * @property {String} data data response.\r\n * @property {String} isRedirected is redirected.\r\n * @property {String} contentType content type header.\r\n */\r\n\r\n/**\r\n * @class\r\n * AJAX communications.\r\n */\r\nclass AJAXCommunications_JS {\r\n /**\r\n * @param {AJAX_OPTIONS}\r\n */\r\n constructor(pOptions) {\r\n //default values\r\n this.Options = {\r\n method: \"get\",\r\n url: null,\r\n data: null,\r\n mode: JFM_CONST.FETCHMODES.SAMEORIGIN,\r\n contentType: null,\r\n FnSuccess: null,\r\n FnError: null,\r\n FnBeforeSend: null,\r\n FnComplete: null,\r\n };\r\n\r\n Object.assign(this.Options, pOptions);\r\n }\r\n /**\r\n * Send Data to a target url. The response is treated with Callbacks.\r\n */\r\n async AsyncFetch() {\r\n let objThis = this,\r\n isFinished = false,\r\n isRedirected = false,\r\n attempt = 0,\r\n contentType = '',\r\n fetchOptions = {\r\n method: this.Options.method,\r\n body: this.Options.data,\r\n redirect: \"follow\"\r\n };\r\n\r\n // Add the headers\r\n if (this.Options.contentType && this.Options.contentType.toLowerCase().indexOf(JFMUI.CONST.CONTENTTYPE.FILEFORM) == -1) {\r\n fetchOptions.headers = {\r\n \"Content-type\": this.Options.contentType,\r\n };\r\n }\r\n\r\n fetchOptions.headers = { ...fetchOptions.headers, \"X-Requested-With\": \"XMLHttpRequest\" };\r\n\r\n if (objThis.Options.mode == JFM_CONST.FETCHMODES.CORS) {\r\n fetchOptions.credentials = \"include\";\r\n }\r\n\r\n if (this.Options.FnBeforeSend) {\r\n this.Options.FnBeforeSend();\r\n }\r\n\r\n do {\r\n await fetch(this.Options.url, fetchOptions)\r\n .then((res) => {\r\n if (res.ok) {\r\n contentType = res.headers.get(\"Content-Type\");\r\n if (res.redirected) {\r\n isRedirected = true;\r\n return res.text();\r\n } else if (contentType.indexOf(JFM_CONST.CONTENTTYPE.JSON) !== -1) {\r\n return res.json();\r\n } else if (contentType.indexOf(JFM_CONST.CONTENTTYPE.TEXT) !== -1) {\r\n return res.text();\r\n } else if (contentType.indexOf(JFM_CONST.CONTENTTYPE.ZIP) !== -1) {\r\n return res.blob();\r\n } else if (contentType.indexOf(JFM_CONST.CONTENTTYPE.XEXCEL) !== -1) {\r\n return res.blob();\r\n } else {\r\n return res.text();\r\n }\r\n } else {\r\n return Promise.reject(res);\r\n }\r\n })\r\n .then((dataR) => {\r\n isFinished = true;\r\n if (this.Options.FnSuccess) {\r\n this.Options.FnSuccess(dataR, isRedirected,contentType);\r\n }\r\n })\r\n .catch((res) => {\r\n attempt++;\r\n if (attempt == JFM_CONST.ATTEMPTS.AJAX) {\r\n isFinished = true;\r\n res = !res ? {} : res;\r\n if (this.Options.FnError) {\r\n this.Options.FnError(res.statusText, res.status, res.message, res.stack);\r\n }\r\n }\r\n })\r\n .finally(() => {\r\n if (isFinished) {\r\n if (this.Options.FnComplete) {\r\n this.Options.FnComplete();\r\n }\r\n }\r\n });\r\n } while (!isFinished);\r\n }\r\n /**\r\n * Send Data to a target url in JSON format.\r\n * @param {String} pUrl Target url.\r\n * @param {String} pData Data to Send.\r\n * @param {String} pMethod Request method.\r\n * @param {String} pFetchMode Fetch mode.\r\n * @returns {Promise} Response from fetch API.\r\n */\r\n static async AsyncFetchJSON(pUrl ,pData, pMethod, pFetchMode = JFM_CONST.FETCHMODES.SAMEORIGIN) {\r\n let isFinished = false,\r\n isRedirected = false,\r\n isSuccessful = false,\r\n attempt = 0,\r\n contentType = '',\r\n /**\r\n * @type {AJAX_RESPONSE}\r\n */\r\n objAjaxResponse = null,\r\n /**\r\n * @type {AJAX_ERROR}\r\n */\r\n objAjaxError = null, \r\n fetchOptions = {\r\n method: pMethod,\r\n body: !!pData ? JSON.stringify(pData) : null,\r\n headers: {\r\n \"Content-type\": JFM_CONST.CONTENTTYPE.JSON,\r\n \"X-Requested-With\": \"XMLHttpRequest\"\r\n },\r\n redirect: \"follow\",\r\n };\r\n\r\n if (pFetchMode == JFM_CONST.FETCHMODES.CORS) {\r\n fetchOptions.credentials = \"include\";\r\n }\r\n\r\n\r\n // Request to the server\r\n do {\r\n await fetch(pUrl, fetchOptions)\r\n .then((res) => {\r\n if (res.ok) {\r\n contentType = res.headers.get(\"Content-Type\");\r\n if (res.redirected) {\r\n isRedirected = true;\r\n return res.text();\r\n } else if (contentType.indexOf(JFM_CONST.CONTENTTYPE.JSON) !== -1) {\r\n return res.json();\r\n } else if (contentType.indexOf(JFM_CONST.CONTENTTYPE.TEXT) !== -1) {\r\n return res.text();\r\n } else if (contentType.indexOf(JFM_CONST.CONTENTTYPE.ZIP) !== -1) {\r\n return res.blob();\r\n } else if (contentType.indexOf(JFM_CONST.CONTENTTYPE.XEXCEL) !== -1) {\r\n return res.blob();\r\n } else {\r\n return res.text();\r\n }\r\n } else {\r\n return Promise.reject(res);\r\n }\r\n })\r\n .then((res) => {\r\n isFinished = true;\r\n isSuccessful = true;\r\n objAjaxResponse =\r\n {\r\n data: res,\r\n isRedirected: isRedirected,\r\n contentType: contentType\r\n };\r\n })\r\n .catch((res) => {\r\n attempt++;\r\n if (attempt == JFM_CONST.ATTEMPTS.AJAX) {\r\n isFinished = true;\r\n isSuccessful = false;\r\n res = !res ? {} : res;\r\n objAjaxError =\r\n {\r\n message: res.message,\r\n stack: res.stack,\r\n status: res.status,\r\n statusText: res.statusText\r\n };\r\n }\r\n });\r\n } while (!isFinished);\r\n\r\n return isSuccessful ? Promise.resolve(objAjaxResponse) : Promise.reject(objAjaxError);\r\n }\r\n /**\r\n * Fetch Json with Post Request method.\r\n * @param {String} pUrl Target url.\r\n * @param {String} pData Data to Send.\r\n * @param {String} pFetchMode pFetchMode Fetch mode.\r\n * @returns {Promise} Response from fetch API.\r\n */\r\n static async AsyncPostJSON(pUrl, pData, pFetchMode = JFM_CONST.FETCHMODES.SAMEORIGIN) {\r\n return AJAXCommunications_JS.AsyncFetchJSON(pUrl, pData, 'Post', pFetchMode);\r\n }\r\n /**\r\n * Fetch Json with Post Request method.\r\n * @param {String} pUrl Target url.\r\n * @param {String} pData Data to Send.\r\n * @param {String} pFetchMode pFetchMode Fetch mode.\r\n * @returns {Promise} Response from fetch API.\r\n */\r\n static async AsyncGetJSON(pUrl, pData, pFetchMode = JFM_CONST.FETCHMODES.SAMEORIGIN) {\r\n return AJAXCommunications_JS.AsyncFetchJSON(pUrl, pData, 'Get', pFetchMode);\r\n }\r\n}","/**\r\n * July 2022\r\n * @file Constant values for the custom library (JFM).\r\n * @author Jorge Flores Miguel \r\n * @version 1.1.1.001\r\n */\r\n\r\n/**\r\n * Header content type for interchange data between AJAX communications.\r\n * @typedef {Object} CONTENTTYPE \r\n * @property {string} FORMDATA Form data to upload files.\r\n * @property {string} JSON Json data.\r\n * @property {string} XML Xml data.\r\n * @property {string} TEXT Html/text data.\r\n * @property {string} ZIP Zip file.\r\n * @property {string} XEXCEL Excel xml.\r\n */\r\n\r\n/**\r\n * Fetch API mode.\r\n * @typedef {Object} FETCHMODES\r\n * @property {string} SAMEORIGIN Ajax Requests for the same origin (Host).\r\n * @property {string} CORS Ajax Requests for cross site.\r\n */\r\n\r\n/**\r\n * Replace result mode after submit a form.\r\n * @typedef {Object} REPLACEMODE\r\n * @property {string} REPLACE Replace the entire Form tag with the new content\r\n * @property {string} INSERTAFTER Insert content after the Form tag\r\n * @property {string} INSERTBEFORE Insert content before the Form tag\r\n */\r\n\r\n/**\r\n * @typedef {Object} ATTEMPTS #Number of attempts for different situations.\r\n * @property {Number} AJAX #Number of attempts for AJAX communications.\r\n */\r\n\r\n/**\r\n * @typedef {Array} CONTAINER_COLLECTION valid container collection.\r\n */\r\n\r\n/**\r\n * Constant values for general porpuse\r\n * @typedef {Object} CONSTANTS\r\n * @property {CONTENTTYPE} CONTENTTYPE Header content type for interchange data between AJAX communications.\r\n * @property {FETCHMODES} FETCHMODES Fetch API mode.\r\n * @property {ICONS} ICONS Icon type for alert messages.\r\n * @property {REPLACEMODE} REPLACEMODE Replace result mode after submit a form.\r\n * @property {ATTEMPTS} ATTEMPTS #Number of attempts for different situations.\r\n * @property {CONTAINER_COLLECTION} CONTAINER_COLLECTION valid container collection.\r\n */\r\n\r\n/**\r\n * Several constant values for general purpose.\r\n * @type {CONSTANTS}\r\n * @constant\r\n */\r\nconst JFM_CONST = {\r\n CONTENTTYPE: {\r\n FORMDATA: 'multipart/form-data',\r\n JSON: 'application/json',\r\n XML: 'text/xml',\r\n TEXT: 'text/html',\r\n ZIP: 'application/zip',\r\n XEXCEL: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'\r\n },\r\n FETCHMODES: {\r\n SAMEORIGIN: 'same-origin',\r\n CORS: 'cors'\r\n },\r\n REPLACEMODE: {\r\n REPLACE: 'REPLACE',\r\n INSERTAFTER: 'AFTER',\r\n INSERTBEFORE: 'BEFORE'\r\n },\r\n ATTEMPTS: {\r\n AJAX: 3\r\n },\r\n CONTAINER_COLLECTION: [\r\n 'DIV',\r\n 'FORM',\r\n 'SECTION',\r\n 'TABLE',\r\n 'FIELDSET',\r\n 'ASIDE',\r\n 'FOOTER',\r\n 'HEADER',\r\n 'NAV',\r\n 'ARTICLE'\r\n ]\r\n};","/**\r\n * Subscribe observers and listen the messages from the Observable.\r\n * @class\r\n * */\r\n class Observable {\r\n /**\r\n * @constructor\r\n * */\r\n constructor() {\r\n /** Saves the obsevers function according to a category.\r\n @type {Array} \r\n @private\r\n */\r\n this.observers = [];\r\n }\r\n /**\r\n * Register Observers.\r\n * @param {String} pCategory Message Category.\r\n * @param {Function} pFunc Action to execute.\r\n */\r\n subscribe(pCategory, pFunc) {\r\n this.observers.push({\r\n Category: pCategory,\r\n Func: pFunc\r\n });\r\n }\r\n /**\r\n * Unregister Observers.\r\n * @param {String} pCategory Message Category.\r\n * @param {Function} pFunc Action to execute.\r\n */\r\n unsubscribe(pCategory, pFunc) {\r\n this.observers = this.observers.filter(obs => !(obs.Category === pCategory && Func === pFunc));\r\n }\r\n /**\r\n * Unregister all Observers from a specific Category.\r\n * @param {String} pCategory Message Category.\r\n */\r\n unsubscribeAll(pCategory) {\r\n this.observers = this.observers.filter(obs => obs.Category !== pCategory);\r\n }\r\n /**\r\n * Raise events from a specific Category.\r\n * @param {String} pCategory Message Category..\r\n * @param {any} pArg Function arguments.\r\n */\r\n notify(pCategory, pArg) {\r\n this.observers.forEach(obs => {\r\n if (obs.Category == pCategory) {\r\n obs.Func(pArg);\r\n }\r\n });\r\n }\r\n}","/**\r\n * GrecaptchaV2_JS options.\r\n * @typedef {Object} GRECAPTCHA_OPTIONS\r\n * @property {String} selector HTML parent container.\r\n * @property {String} siteKey recaptcha render Id.\r\n * @property {String} theme Color Theme of thw widget: ('dark','light').\r\n * @property {String} size The size of the widget ('compact','normal','invisible').\r\n * @property {Number} tabindex The tabindex of the widget and challenge.\r\n * @property {Function} callback The name of your callback function, executed when the user submits a successful response. The g-recaptcha-response token is passed to your callback.\r\n * @property {Function} expiredCallback The name of your callback function, executed when the reCAPTCHA response expires and the user needs to re-verify.\r\n * @property {Function} errorCallback The name of your callback function, executed when reCAPTCHA encounters an error (usually network connectivity) and cannot continue until connectivity is restored. \r\n * @property {String} badge (Invisible only) position of the recaptcha. ('bottomright','bottomleft','inline').\r\n * @property {Boolean} isolated (Invisible only) If true, this reCAPTCHA instance will be part of a separate ID space.\r\n * @property {Boolean} isInvisible True for an invisible recaptcha.\r\n * @property {HTMLInputElement} inputForm Input HTML Element that receives token value after a successful response.\r\n */\r\n\r\n/**\r\n * Google recaptcha V2 object.\r\n */\r\nclass GrecaptchaV2_JS {\r\n /**\r\n * @param {Object} pGrecaptcha grecaptcha object.\r\n * @param {GRECAPTCHA_OPTIONS} pOptions\r\n * @constructor\r\n */\r\n constructor(pGrecaptcha, pOptions) {\r\n\r\n if (!pGrecaptcha) {\r\n throw new Error('Missing grecaptcha object.');\r\n }\r\n /**\r\n * @type {GRECAPTCHA_OPTIONS} \r\n */\r\n let objOptions = {\r\n selector: null,\r\n siteKey: null,\r\n theme: null,\r\n size: null,\r\n tabindex: null,\r\n callback: null,\r\n expiredCallback: null,\r\n errorCallback: null,\r\n badge: null,\r\n isolated: false,\r\n isInvisible: false,\r\n inputForm: null\r\n }\r\n\r\n Object.assign(objOptions, pOptions);\r\n\r\n if (!objOptions.selector || !objOptions.siteKey) {\r\n throw new Error('Missing params: selector or sitekey for Google grecaptcha');\r\n }\r\n\r\n /**\r\n * Flag for invisble recaptcha.\r\n * @type {Boolean}\r\n * @public\r\n */\r\n this.IsInvisible = objOptions.isInvisible;\r\n /**\r\n * Html input that stores recaptcha value.\r\n * @type {HTMLInputElement} \r\n * @public\r\n */\r\n this.InputForm = objOptions.inputForm;\r\n /**\r\n * grecaptcha object.\r\n * @type {Object} \r\n * @public\r\n */\r\n this.Grecaptcha = pGrecaptcha;\r\n /**\r\n * Widget Id.\r\n * @type {Number} \r\n * @public\r\n */\r\n this.widget_id = null;\r\n /**\r\n * Call back function on recaptcha response.\r\n * @type {Function} \r\n * @public\r\n */\r\n this.FnCallback = objOptions.callback;\r\n /**\r\n * Call back function on expired recaptcha.\r\n * @type {Function} \r\n * @public\r\n */\r\n this.FnexpiredCallback = objOptions.expiredCallback;\r\n /**\r\n * Recaptcha value.\r\n * @type {String} \r\n * @public\r\n */\r\n this.RecaptchaValue = '';\r\n\r\n // Initialize recaptcha.\r\n this.init(objOptions);\r\n }\r\n // #region PUBLIC PROPERTIES\r\n /**\r\n * setter Recaptcha value.\r\n * @type {string}\r\n * @public \r\n */\r\n set RecaptchaValue(pValue) {\r\n this._RecaptchaValue = pValue;\r\n // set input HTML value equal to RecaptchaValue\r\n if (this.InputForm) {\r\n this.InputForm.value = pValue;\r\n this.InputForm.classList.remove('is-invalid');\r\n this.InputForm.classList.add('is-valid');\r\n let errLabel = this.InputForm.parentElement.querySelector(`.invalid-feedback[data-valmsg-for=\"${this.InputForm.name}\"]`);\r\n !!errLabel && (errLabel.innerHTML = '');\r\n }\r\n }\r\n /**\r\n * getter current recaptcha value.\r\n * @type {string} \r\n * @public\r\n */\r\n get RecaptchaValue() {\r\n return this._RecaptchaValue;\r\n }\r\n // #endregion\r\n /**\r\n * Initialize method.\r\n * @param {GRECAPTCHA_OPTIONS} pObjOptions GrecaptchaV2_JS options.\r\n * @private\r\n */\r\n init(pObjOptions) {\r\n if (this.IsInvisible) {\r\n this.widget_id = this.Grecaptcha.render(pObjOptions.selector, {\r\n 'sitekey': pObjOptions.siteKey,\r\n 'badge': !!pObjOptions.badge ? pObjOptions.badge : 'bottomright',\r\n 'size': 'invisible',\r\n 'tabindex': !!pObjOptions.tabindex ? pObjOptions.tabindex : 0,\r\n 'callback': this.responseCallback.bind(this),\r\n 'expired-callback': this.expiredCallBack.bind(this),\r\n 'error-Recaptchacallback': !!pObjOptions.errorCallback ? pObjOptions.errorCallback : null,\r\n 'isolated': pObjOptions.isolated\r\n });\r\n } else {\r\n this.widget_id = this.Grecaptcha.render(pObjOptions.selector, {\r\n 'sitekey': pObjOptions.siteKey,\r\n 'theme': !!pObjOptions.theme ? pObjOptions.theme : 'light',\r\n 'size': !!pObjOptions.size ? pObjOptions.size : 'normal',\r\n 'tabindex': !!pObjOptions.tabindex ? pObjOptions.tabindex : 0,\r\n 'callback': this.responseCallback.bind(this),\r\n 'expired-callback': this.expiredCallBack.bind(this),\r\n 'error-callback': !!pObjOptions.errorCallback ? pObjOptions.errorCallback : null\r\n });\r\n }\r\n }\r\n // #region PUBLIC METHODS\r\n /**\r\n * Update RecaptchaValue and call FnCallback property.\r\n * @param {String} ptoken \r\n */\r\n responseCallback(ptoken) {\r\n this.RecaptchaValue = ptoken;\r\n if (!!this.FnCallback) {\r\n this.FnCallback(ptoken);\r\n }\r\n }\r\n /**\r\n * Reset Recaptcha value and call FnexpiredCallback property,\r\n */\r\n expiredCallBack() {\r\n this.reset();\r\n this.InputForm.value = '';\r\n this.InputForm.classList.remove('is-valid');\r\n this.InputForm.classList.add('is-invalid');\r\n if (!!this.FnexpiredCallback) {\r\n this.FnexpiredCallback();\r\n }\r\n }\r\n /**\r\n * Compute Recaptcha response value.\r\n * @returns {String} Recaptcha value\r\n */\r\n getResponse() {\r\n if (this.IsInvisible) {\r\n this.Grecaptcha.execute(this.widget_id);\r\n } else {\r\n this.RecaptchaValue = this.Grecaptcha.getResponse(this.widget_id);\r\n }\r\n return this.RecaptchaValue;\r\n }\r\n /**\r\n * Reset Recaptcha.\r\n */\r\n reset() {\r\n this.Grecaptcha.reset(this.widget_id);\r\n this.RecaptchaValue = '';\r\n }\r\n /**\r\n * Evaluate validity of recaptcha.\r\n * @returns {boolean} true for valid recaptcha.\r\n */\r\n isValid() {\r\n return this.RecaptchaValue.length > 0;\r\n }\r\n // #endregion\r\n //#region STATIC METHODS\r\n /**\r\n * @description Add Google Recaptcha library to the DOM.\r\n * @param {Function} pFnOnload - A callback that Google executes after Load all of the resources.\r\n * @param {Boolean} pIsAsync - True for script tag async attribute\r\n * @param {Boolean} pIsDefer - True for script tag defer attribute\r\n */\r\n static addRecaptchaLibrary(pFnOnload, pIsAsync = false, pIsDefer = false) {\r\n let objHTMLScript = document.createElement('SCRIPT');\r\n objHTMLScript.async = pIsAsync;\r\n objHTMLScript.defer = pIsDefer;\r\n\r\n if (!!pFnOnload && typeof pFnOnload == 'function') {\r\n objHTMLScript.src = `https://www.google.com/recaptcha/api.js?onload=${pFnOnload.name}&render=explicit`;\r\n } else {\r\n objHTMLScript.src = 'https://www.google.com/recaptcha/api.js';\r\n }\r\n\r\n document.getElementsByTagName('head')[0].appendChild(objHTMLScript);\r\n }\r\n}\r\n","/**\r\n * Utility DOM custom methods.\r\n */\r\nclass DOM_Utility {\r\n /**\r\n * Create Document Fragment with inner HTML template.\r\n * @param {String} pTemplate Text HTML Template.\r\n * @returns {HTMLAllCollection} \r\n */\r\n static createHTMLFromString(pTemplate) {\r\n let objHTMLDiv = document.createElement('DIV'),\r\n objHTML = null;\r\n objHTMLDiv.insertAdjacentHTML('afterbegin', pTemplate);\r\n if (!!objHTMLDiv.firstElementChild) {\r\n objHTML = objHTMLDiv.firstElementChild;\r\n }\r\n return objHTML;\r\n }\r\n /**\r\n * decode HTML special characters to string\r\n * @param {String} pStr Encoded HTML string\r\n * @returns {String} Decoded HTML string\r\n */\r\n static decodeHTMLEntities(pStr) {\r\n if (pStr && typeof pStr === 'string') {\r\n // strip script/html tags\r\n pStr = pStr.replace(/