{"version":3,"sources":["accountbalance.js","allergy.js","announcements.js","appointments.js","bloodpressure.js","bloodsugar.js","chart.js","common.js","conditions.js","connect.js","contact.js","demographics.js","documents.js","emergency.js","employer.js","goals.js","headshot.js","height.js","history.js","lifestyle.js","main.js","medications.js","messages.js","password.js","practiceForms.js","practiceIntake.js","results.js","security.js","securitylog.js","spo2.js","summary.js","test.js","timezone.js","weight.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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC3mDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC1GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACnCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC9vBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACvIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC7HA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC/XA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACh/BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACtIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AClPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACnDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACtEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACxNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC1EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;AC7MA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC5DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACjHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACtGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACnKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC/eA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC3bA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACvVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACrCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACnFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC/fA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AClLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC5KA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACrCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AChHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACtPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC9BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC1CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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":"mml.js","sourcesContent":["function accountBalanceScreen() {\n $(\".intake\").show();\n $(\".installments\").show();\n $(\".planpayments\").show();\n var today = new Date();\n var hours = today.getHours();\n var minutes = today.getMinutes();\n var ampm = hours >= 12 ? 'pm' : 'am';\n hours = hours % 12;\n hours = hours ? hours : 12;\n minutes = minutes < 10 ? '0' + minutes : minutes;\n var strTime = hours + ':' + minutes + ' ' + ampm;\n var date = (today.getMonth() + 1) + '-' + today.getDate() + '-' + today.getFullYear();\n var time = today.getHours() + \":\" + today.getMinutes();\n var dateTime = date + ' ' + 'at' + ' ' + strTime + ' ' + 'EST';\n var paidValue = \"\";\n var isIntake = window.location.href.indexOf(\"accountbalance\") <= -1;\n\n var self = this;\n\n self.screenTitle = \"Billing\";\n self.associatedNavItem = \"navBalance\";\n self.associatedMobileNavItem = \"mobileAccount\";\n self.numeric_balance_font = 56;\n self.text_balance_font = 26; \n self.databaseKey = '';\n self.databases = [];\n self.statements = [];\n\n self.balances = {};\n self.stripeCustomer = '';\n self.stripeSources = [];\n self.stripeDatabase = '';\n\n self.chargeAmount = '';\n self.chargeSource = '';\n self.paymentDisabled;\n\n self.paymentReady = false;\n self.coPayAmount = '';\n self.copayInd = '';\n self.intakeId = '';\n self.paySimple = '';\n\n self.merchantKey = '';\n self.paymentPlanID = '';\n self.nodeUrl = ';'\n\n self.m_estimate_index = 0;\n self.m_signature_is_drawing = false;\n self.m_estimates = [];\n self.m_databaseKey = \"\";\n self.m_showEstimateHistoryModal = true;\n self.m_currentEstimate_PdfBase64 = \"\";\n self.m_initial_estimate_intake = false;\n self.m_newest_estimate_pdf_base64 = \"\";\n\n self.initPaysimple = function (databaseKey, merchantKey) {\n // Reinitalize PMT each time window is displayed.\n\t $(\"#pmt\").html(\"\");\n \n\t // Clear any previous errors displayed\n\t $('#addPaymentAlert').html('').hide();\n \n pmt = window.paymentMethodTokenization({\n container: document.querySelector('#pmt'),\n\n //debug: true,\n merchantKey: merchantKey,\n requireCardholderName: false,\n styles: {\n body: {\n 'overflow': 'auto',\n backgroundColor: '#fff',\n },\n\n container: {\n\n default: {\n 'margin-bottom': '15px',\n 'width': '100%',\n },\n\n\n cardNumber: {\n 'color': '677692',\n },\n\n cardholderName: {\n 'display': 'none',\n },\n\n label: {\n\n default: {\n 'color': '#677692',\n 'margin-bottom': '5px',\n\n ':hover': {\n color: '#cccccc',\n cursor: 'pointer',\n },\n },\n\n cardNumber: {\n color: '#677692',\n },\n\n },\n\n },\n\n input: {\n\n default: {\n 'border': '1px solid #677692',\n 'color': '#00375b',\n 'background': '#fff',\n 'padding': '5px',\n\n\n ':placeholder': {\n color: '#677692',\n },\n },\n\n },\n\n validation: {\n\n default: {\n 'background': '#FFC7C7',\n 'color': '#E43E3E',\n },\n\n },\n }\n\n });\n pmt.trigger.setMode('cc-input');\n\n pmt.on('add-payment-method-succeeded', function (response) {\n accountbalance.addNewPaymentMethod(databaseKey, window.account, response.paymentMethodToken);\n })\n\n pmt.on('add-payment-method-failed', function (response) {\n console.log(response);\n UserMessageDisplay_Timeout(50, \"Payment Status\", \"critical\", \"ok\", \"1\", \"Unable to process credit card payments at this time. Please try again later\", \"no\", \"1\", \"1\");\n })\n }\n self.updateBalance = function (databaseKey, databaseName, stripePk, paySimple, title, merchantKey) {\n \n return function (xmlDoc) {\n var connectedTemplate = $(\"#connectedTemplate\").html();\n var paysimpleTemplate = $(\"#paysimpleTemplate\").html();\n var notConnectedTemplate = $(\"#notConnectedTemplate\").html();\n\n var template;\n var copay = '0';\n \n if (template == undefined) { \n if (paySimple == 1 && $(xmlDoc).find('patient_balance').first().text() != \"NOT_ACTIVE\") {\n template = paysimpleTemplate;\n self.paySimple = 1;\n } else if (stripePk == '' && paySimple == 0) {\n template = notConnectedTemplate;\n } else if (stripePk != '' && paySimple == 0) {\n self.paySimple = 0;\n self.getOrCreateStripeCustomer();\n template = connectedTemplate;\n } else if ($(xmlDoc).find('patient_balance').first().text() === \"NOT_ACTIVE\" && paySimple == 1 || stripePk != '') {\n template = notConnectedTemplate; \n } \n }\n\n if (intakeform != undefined) {\n self.intakeId = intakesection.intake_assign_id;\n if (intakeform.currentSection == \"cp\") {\n self.getOrCreateStripeCustomer;\n copay = intakesection.stripeValue;\n self.copayInd = 'Y';\n self.coPayAmount = copay.replace('$', '') + '';\n \n } else if (intakeform.currentSection == \"ob\") {\n\n self.coPayAmount = '';\n self.copayInd = 'N';\n self.intakeId = 0;\n\n }\n if (intakeform.currentSection == \"cp\" || intakeform.currentSection == \"ob\") {\n if (intakesection.stripePaidValue == \"\") {\n $(\"#paidValue\").hide();\n }\n }\n }\n\n self.onAccountBalance = function () {\n $(\".title\").text(\"Account Balance\");\n $(\".intake\").show();\n };\n\n\n self.hasBalance = function (accountbalance) { \n accountbalance = accountbalance || false;\n\t var recentPayment\n var balance = $(xmlDoc).find('patient_balance').first().text();\n if (balance === \"\") {\n balance = 0;\n }\n var ok_to_display_plans = true;\n var display_value = ((isNaN(balance) || (+balance == 0)) && (intakeform.currentSection != \"cp\") ? \"none\" : \"inline-block\");\n var balance_display = (balance != 0 ? \"$\" + balance : \"No Balance\"); \n var balance_font = (balance != 0 || intakeform.currentSection == \"cp\" ? self.numeric_balance_font : self.text_balance_font); \n $('#practicePlans').css('display', 'none'); \n\n if (xmlDoc.getElementsByTagName('payment_amount').length > 0) {\n recentPayment = \"Most Recent Payment: \" + \"$\" + parseFloat($(xmlDoc).find('payment_amount').first().text()) + \" on \" + $(xmlDoc).find('payment_date').first().text();\n } else {\n recentPayment = \"No Recent Payments\";\n }\n document.getElementById('practiceList').innerHTML += template.format(databaseKey, databaseName, balance_display, common.getDateString(), copay, recentPayment, title, merchantKey, display_value,balance_font);\n\n self.balances[databaseKey] = parseFloat(balance);\n if (accountbalance) {\n self.onAccountBalance();\n title = \"Account Balance\";\n self.copayInd = \"N\";\n } \n else {\n $(\".intake\").hide();\n $(\".installments\").hide();\n $(\".planpayments\").hide();\n showPlans = false;\n if (intakeform.currentSection == \"cp\") {\n ok_to_display_plans = false;\n var label = \"\"; \n if (intakesection.copayLabel === \"fee\") {\n label = \"Fee\"\n } else if (intakesection.copayLabel === \"co pay\") {\n label = \"Co-Pay\"\n }\n $(\".title\").text(label);\n $(\".amountDue\").text(\"$\" + self.coPayAmount); \n } \n else if (intakeform.currentSection == \"ob\") {\n $(\".title\").text(\"Outstanding Balance\"); \n } \n }\n if (ok_to_display_plans) {\n self.DisplayPaymentPlanInformation();\n }\n }\n\n self.noBalance = function (accountbalance) {\n var recentPayment;\n var balance = $(xmlDoc).find('patient_balance').first().text();\n var ok_to_display_plans = true;\n $('#practicePlans').css('display', 'none'); \n if (balance === \"NOT_ACTIVE\") {\n balance = \"Please contact your practice\";\n } \n else {\n balance = \"No Balance\";\n }\n if (xmlDoc.getElementsByTagName('payment_amount').length > 0) {\n recentPayment = \"Most Recent Payment: \" + \"$\" + parseFloat($(xmlDoc).find('payment_amount').first().text()) + \" on \" + $(xmlDoc).find('payment_date').first().text();\n\n } else {\n recentPayment = \"No Recent Payments\";\n }\n \n document.getElementById('practiceList').innerHTML += template.format(databaseKey, databaseName, balance, common.getDateString(), copay, recentPayment, title, merchantKey, \"none\",self.text_balance_font);\n \n self.balances[databaseKey] = 0;\n if (accountbalance) {\n self.onAccountBalance();\n title = \"Account Balance\"\n self.copayInd = \"N\";\n } else {\n $(\".intake\").hide();\n $(\".installments\").hide();\n $(\".planpayments\").hide();\n\n if (intakeform.currentSection == \"cp\") {\n $(\".title\").text(\"Co-Pay\");\n ok_to_display_plans = false;\n } else if (intakeform.currentSection == \"ob\") {\n $(\".title\").text(\"Outstanding Balance\");\n }\n }\n if (ok_to_display_plans) { \n self.DisplayPaymentPlanInformation();\n }\n }\n\n self.DisplayPaymentPlanInformation = function () {\n var payment_plan_xml = $(xmlDoc).find('plan_xml').first();\n \n if (payment_plan_xml) {\n $('#practicePlans').css('display', 'flex');\n self.DisplayPaymentPlans(payment_plan_xml.text(),databaseKey, databaseName, merchantKey);\n }\n }\n\n // Check if the patient balance is part of the webservice\n if ($(xmlDoc).find('patient_balance').length > 0 && $(xmlDoc).find('patient_balance').first().text() != \"NOT_ACTIVE\" || self.copayInd == \"Y\") {\n if (window.location.href.indexOf(\"accountbalance\") <= -1) {\n if (databaseKey == readCookie(\"databaseId\").toUpperCase()) {\n self.hasBalance();\n\n }\n } else if (window.location.href.indexOf(\"accountbalance\") > -1) {\n self.hasBalance(true);\n }\n\n } else {\n // Check if user is on the intake\n if (window.location.href.indexOf(\"accountbalance\") <= -1) {\n if (databaseKey == readCookie(\"databaseId\").toUpperCase()) {\n self.noBalance();\n }\n } else if (window.location.href.indexOf(\"accountbalance\") > -1) {\n self.noBalance(true);\n } \n }\n \n //Check if the user is on the co-pay screen \n $('#noPractices').css('display', 'none');\n $('#practiceList').css('display', 'flex');\n $('#practicePlans').css('display', 'flex');\n $(\".title\").text(self.title);\n $('#otherAmountInput').val('');\n $('#dbKey-' + databaseKey).text(databaseKey);\n if ($(xmlDoc).find('patient_balance').first().text() === \"NOT_ACTIVE\") {\n $(\".notActive\").show();\n $(\".intake\").hide();\n $(\".installments\").hide();\n $(\".planpayments\").hide();\n $(\".amountDue\").hide();\n }\n }\n }\n\n self.changePayment = function () {\n if ($('#paymentMethods').val() !== 'add') {\n self.updateDefaultSource(self.stripeSources[+$('#paymentMethods').val()].id);\n }\n }\n\n self.paymentMethodSelect = function () {\n // if ($('#paymentMethods').val() == 'add') {\n // $('#paymentMethods')[0].selectedIndex = 0;\n // $('#paymentMethods').blur();\n // self.addPaymentMethod();\n // }\n }\n self.getAmountFromInput = function (inputField) {\n var amount = 0;\n var amountInput = $(inputField);\n if (amountInput.val() == \"\") {\n amount = 0;\n } else {\n amount = parseFloat(amountInput.val().replace(',', '')) * 100;\n }\n return amount;\n }\n self.getAmountFromHTML = function (inputField) {\n var amount = 0;\n var amountInput = $(inputField).html();\n if (amountInput == \"\") {\n amount = 0;\n } else {\n amount = parseFloat(amountInput.replace(',', '')) * 100;\n }\n return amount;\n }\n self.updatePaymentButton = function () {\n var minimumAmount = 100;\n var maximumAmount = 0;\n var amount = 0;\n var remainingAmount = self.getAmountFromHTML(\"#remainingBalanceAmount\");\n var balanceAmount = self.getAmountFromHTML(\"#balanceAmount\");\n var otherAmountInput = self.getAmountFromInput(\"#otherAmountInput\");\n\n maximumAmount = (remainingAmount === 0 ? balanceAmount : remainingAmount);\n // Override if on the co-pay screen\n if (intakeform.currentSection == \"cp\") {maximumAmount = 999999;}\n\n if (otherAmount.checked == true) {\n amount = otherAmountInput;\n } \n else {\n if (self.coPayAmount == '') {\n amount = self.getPaymentAmount();\n } else {\n amount = parseFloat(self.coPayAmount) * 100;\n }\n }\n \n var paymentMethodSelected = false;\n if (self.paySimple == 1) { \n paymentMethodSelected = ($('#ps_paymentMethods')[0].value != \"\");\n\n if (paymentMethodSelected == true) {\n $('#psDeletePaymentMethod').show();\n }\n } else {\n $('#psDeletePaymentMethod').hide();\n minimumAmount = 500;\n paymentMethodSelected = ($('#paymentMethods')[0].value != \"\")\n }\n if ((paymentMethodSelected) && (amount >= minimumAmount) && (amount <= maximumAmount)) {\n $('#paymentButton').prop('disabled', false);\n self.paymentDisabled = false;\n self.paymentReady = true;\n $(\"#paymentRange\").hide();\n } else {\n $('#paymentButton').prop('disabled', true);\n self.paymentDisabled = true;\n self.paymentReady = false;\n\n $(\"#paymentRange\").text(`Enter a payment between $${minimumAmount/100} and $${maximumAmount/100}.`);\n $(\"#paymentRange\").show();\n }\n }\n\n self.updatePaymentMethods = function () {\n var html = '';\n var template = '';\n\n for (var i = 0; i < self.stripeSources.length; i++) {\n var item = self.stripeSources[i];\n\n if (item.object == \"source\") {\n item = item.card;\n }\n\n html += template.format(i, item.brand + '...' + item.last4);\n }\n\n html += template.format('add', '');\n\n $('#paymentMethods').html(html);\n\n self.updatePaymentButton();\n }\n\n self.DisplayPaymentPlans = function (payment_plan_xml,databaseKey, databaseName, merchantKey,fred) {\n document.getElementById('practicePlans').innerHTML = \"\";\n if (payment_plan_xml == \"\") {\n return;\n }\n const paymentPlanTemplate = $(\"#paymentPlanTemplate\").html();\n const parser = new DOMParser();\n const xmlDoc = parser.parseFromString(payment_plan_xml, \"text/xml\");\n const plans = xmlDoc.getElementsByTagName(\"Plan\");\n\n // Iterate through each Plan element and extract information\n for (let i = 0; i < plans.length; i++) {\n const plan = plans[i];\n const planID = plan.getElementsByTagName(\"ID\")[0].textContent;\n const dueDate = plan.getElementsByTagName(\"DueDate\")[0].textContent;\n const pastDue = plan.getElementsByTagName(\"PastDue\")[0].textContent;\n const installmentAmount = plan.getElementsByTagName(\"InstallmentAmount\")[0].textContent;\n const remainingAmount = plan.getElementsByTagName(\"RemainingAmount\")[0].textContent; \n const installmentCounter = plan.getElementsByTagName(\"InstallmentCounter\")[0].textContent;\n const lastPayment = plan.getElementsByTagName(\"LastPayment\")[0].textContent;\n const recentPayment = `Most Recent Plan Payment: ${lastPayment}`; \n const display_value = (remainingAmount == 0 ? \"none\" : \"inline-block\");\n const display_color = (pastDue == \"1\" ? \" color: red;\" : \"\");\n document.getElementById('practicePlans').innerHTML += \n paymentPlanTemplate.format(databaseKey, databaseName, installmentAmount, remainingAmount, merchantKey, dueDate, recentPayment, installmentCounter, planID, display_value,display_color);\n }\n }\n\n self.stripeTokenHandler = function (token) {\n\n var data = {\n key: key,\n dbKey: self.stripeDatabase,\n source: token.id\n };\n\n var callback = function (result) {\n self.stripeSources.push(result);\n self.updatePaymentMethods();\n\n common.closeModals();\n $(\"#paymentLoader\").hide();\n $('#cover').fadeIn();\n $('#makePayment').fadeIn();\n };\n\n self.makeStripeCall('customer/createSource', data, callback);\n\n }\n\n self.updateDefaultSource = function (source) {\n\n var data = {\n key: key,\n dbKey: self.stripeDatabase,\n default_source: source\n };\n\n self.paymentReady = false;\n\n var callback = function (result) {\n self.paymentReady = true;\n }\n\n self.makeStripeCall('customer/update', data, callback);\n\n }\n\n self.getStripePayments = function (databaseKey) {\n var data = {\n key: key,\n dbKey: databaseKey,\n customerId: self.customer,\n limit: 100\n };\n\n\n var callback = function (result) {\n var template = '
\"{0}\"' +\n '

{2}...{3}

{5}

' +\n '

${1}

{4}

';\n\n var html = '';\n\n $.each(result.data, function (index, charge) {\n var date = new Date(charge.created * 1000);\n var dateString = common.withZero(date.getMonth() + 1) + '/' + common.withZero(date.getDate()) + '/' + date.getFullYear();\n\n if (charge.source.object == 'source' && charge.source.type == 'card') {\n html += template.format(charge.source.card.brand.replace(/ /g, '-'), (charge.amount / 100).toFixed(2), charge.source.card.brand, charge.source.card.last4, dateString, charge.metadata.mml_source);\n } else {\n html += template.format(charge.source.brand.replace(/ /g, '-'), (charge.amount / 100).toFixed(2), charge.source.brand, charge.source.last4, dateString, charge.metadata.mml_source);\n }\n });\n\n if (html == '') {\n $('#paymentHistoryList').html(\"You have no payment history at the moment\")\n } else {\n $('#paymentHistoryList').html(html);\n }\n\n $('#cover').css('display', 'inherit');\n $('#paymentHistory').css('display', 'inherit');\n }\n\n self.makeStripeCall('charge/getByCustomer', data, callback);\n\n }\n\n self.stripeGetCustomer = function () {\n\n var data = {\n key: key,\n dbKey: self.stripeDatabase\n };\n\n var callback = function (result) {\n self.stripeCustomer = result.id;\n self.stripeSources = result.sources.data;\n self.updatePaymentMethods();\n };\n\n self.makeStripeCall('customer/get', data, callback);\n\n }\n\n self.finishPayment = function () { \n var databaseName = '';\n\n for (var i = 0; i < self.databases.length; i++) {\n if (self.databases[i][0] == self.stripeDatabase) {\n databaseName = self.databases[i][1];\n break;\n }\n }\n\n var data = {\n key: key,\n dbKey: self.stripeDatabase,\n amount: self.chargeAmount,\n currency: 'usd',\n cardToken: self.chargeSource,\n mml_account_id: account,\n mml_source: 'MML Desktop',\n mml_copayInd: self.copayInd,\n mml_intakeId: self.intakeId,\n description: 'MML Payment Made to ' + databaseName,\n statement_descriptor: 'MML ' + databaseName\n };\n\n $(\"#confirmPayment\").prop('disabled', true).html(\"\");\n $(\"#confirmBack\").prop('disabled', true);\n\n var callback = function (result) {\n $(\"#confirmPayment\").prop('disabled', false).html(\"Confirm Payment\");\n $(\"#confirmBack\").prop('disabled', false);\n\n if (result.hasOwnProperty('type') && result.type === 'StripeInvalidRequestError' || result.type === 'StripeCardError') {\n $(\"#confirmPayment\").prop('disabled', false).html(\"Confirm Payment\");\n $(\"#confirmBack\").prop('disabled', false);\n $('#stripePaymentErrorMessage').html(result.message);\n console.warn('There has been an error with the stripe payment.');\n } else {\n common.closeModals();\n\n $('#paymentAmountThanks').html((result.amount / 100).toFixed(2));\n $('#paymentConfirmation').fadeOut();\n\n $('#thankYou').fadeIn();\n\n if (intakeform.currentSection == 'cp') {\n intakesection.paid_stripe(result.amount);\n }\n }\n };\n\n self.makeStripeCall('charge/add', data, callback, \"POST\");\n\n }\n\n self.stripeCreateCustomer = function () {\n\n var data = {\n key: key,\n dbKey: self.stripeDatabase,\n description: mainUser.firstName + ' ' + mainUser.lastName,\n email: mainUser.emailAddress\n };\n\n var callback = function (result) {\n self.stripeCustomer = result.id;\n xmlQuery(xml.create('iSalusExternal.SaveStripe')(result.id), console.log);\n common.clearConnectionCache();\n };\n\n self.makeStripeCall('customer/add', data, callback);\n\n }\n\n self.getStripeServer = function (xmlDoc) {\n self.nodeUrl = $(xmlDoc).find('StripeServer').text();\n\n }\n\n self.makeStripeCall = function (method, data, callback, type) {\n\n var type = type || \"GET\";\n\n if (type == \"POST\") {\n data = JSON.stringify(data);\n }\n\n $.ajax({\n type: type,\n url: self.nodeUrl + method,\n contentType: \"application/json; charset=utf-8\",\n data: data,\n dataType: \"json\",\n success: callback,\n error: function (jqXHR, exception) {\n console.log(jqXHR);\n }\n });\n }\n\n self.chooseAmount = function (object_id) { \n document.getElementById('otherAmountInput').disabled = (object_id == 2 ? false : true); \n\n if (object_id == 1) {\n $('#paymentButtonAmount').text($('#balanceAmount').html());\n $('#otherAmountInput').val('');\n } \n else if (object_id == 3) {\n $('#paymentButtonAmount').text($('#installmentBalanceAmount').html());\n $('#otherAmountInput').val('');\n } \n else if (object_id == 4) {\n $('#paymentButtonAmount').text($('#remainingBalanceAmount').html());\n $('#otherAmountInput').val('');\n } \n else {\n $('#paymentButtonAmount').text($('#otherAmountInput').val());\n }\n\n self.updatePaymentButton();\n }\n\n self.updateAmount = function (event) {\n var amount = +($('#otherAmountInput').cleanVal());\n var str = amount + '';\n\n if (amount < 100) {\n while (str.length < 3) {\n str = '0' + str;\n }\n }\n $('#otherAmountInput').val($('#otherAmountInput').masked(str));\n $('#paymentButtonAmount').text($('#otherAmountInput').val());\n\n self.updatePaymentButton();\n }\n\n self.makePayment = function (databaseKey, copay) {\n self.paySimple = 0;\n self.stripeDatabase = databaseKey;\n var balance;\n if (self.copayInd === \"Y\") {\n balance = copay.replace('$', '');\n if (intakesection.copayLabel === \"fee\") {\n $('label[for=\"accountBalance\"]').html(\"Telehealth Fee Of $
\" + balance + \"
\");\n\n } else {\n $('label[for=\"accountBalance\"]').html(\"Co Payment Of $
\" + balance + \"
\");\n }\n } else {\n balance = self.balances[databaseKey].toFixed(2);\n }\n\n $('#balanceAmount').html(balance);\n $('#paymentButtonAmount').text(balance);\n $('#databaseToPay').val(databaseKey);\n\n $('#accountBalance').click();\n self.updatePaymentMethods();\n\n $('#cover').css('display', 'inherit');\n $(\"#paymentLoader\").hide();\n $('#psDeletePaymentMethod').hide();\n $('#ps_paymentMethods').hide();\n $('#paymentMethods').show();\n $('#makePayment').css('display', 'inherit');\n }\n\n self.getPaymentAmount = function () {\n var database = $('#databaseToPay').val();\n\n if ($('input:radio[name=\"startDateType\"]:checked').val() == 'balance') {\n return Math.floor(self.balances[database] * 100);\n } \n else if ($('input:radio[name=\"startDateType\"]:checked').val() == 'installment') {\n var installmentAmount = self.getAmountFromHTML(\"#installmentBalanceAmount\");\n return Math.floor(installmentAmount);\n } \n else if ($('input:radio[name=\"startDateType\"]:checked').val() == 'remaining') {\n var remainingAmount = self.getAmountFromHTML(\"#remainingBalanceAmount\");\n return Math.floor(remainingAmount);\n } \n else {\n return +$('#otherAmountInput').val().replace(',', '');\n }\n }\n\n self.confirmPayment = function () {\n if (!self.paymentDisabled) {\n var database = $('#databaseToPay').val();\n var databaseName = '';\n var amount;\n\n if (self.coPayAmount == '') {\n amount = self.getPaymentAmount();\n\n } else {\n if ($('#otherAmountInput').val() != '') {\n amount = parseFloat($('#otherAmountInput').val().replace(',', '')) * 100;\n } else {\n amount = self.coPayAmount * 100;\n }\n }\n\n for (var i = 0; i < self.databases.length; i++) {\n if (self.databases[i][0] == database) {\n databaseName = self.databases[i][1];\n break;\n }\n }\n\n self.chargeAmount = amount + '';\n self.chargeSource = self.stripeSources[+$('#paymentMethods').val()].id;\n\n $('#paymentAmount').html('hello');\n $('#databaseName').html(databaseName);\n $('#databaseNameThanks').html(databaseName);\n $('#makePayment').fadeOut();\n $('#paymentConfirmation').fadeIn();\n\n }\n\n }\n\n self.addPaymentMethod = function () {\n $(\"#addCard\").attr(\"disabled\", false).html(\"Add New Card\");\n\n $('#cover').fadeIn();\n\n if (self.paySimple == 1) {\n self.initPaysimple(self.databaseKey, self.merchantKey);\n $('#paymentLoader').hide();\n $('#makePayment').fadeOut();\n $('#ps_addPayment').fadeIn();\n } \n else {\n $('#paymentLoader').hide();\n $('#makePayment').fadeOut();\n $('#addPayment').fadeIn();\n }\n }\n\n ////////////////////////////////////////////////////////////////\n /* PaySimple Payment Plan Implementation */\n ////////////////////////////////////////////////////////////////\n\n self.getPaymentPlanSources = function (databaseKey, installmentAmount, remainingAmount, merchantKey,planID) { \n self.paySimple = 1; \n $('#balanceAmount').html(0);\n $('#installmentBalanceAmount').html(installmentAmount);\n $('#remainingBalanceAmount').html(remainingAmount);\n $('#paymentButtonAmount').text(installmentAmount);\n $('#databaseToPay').val(databaseKey);\n $('#merchantKey').val(merchantKey);\n\n self.merchantKey = document.getElementById('merchantKey').value;\n self.paymentPlanID = planID;\n\n $('#installmentAmount').click();\n\n $('#cover').css('display', 'inherit');\n $('#paymentLoader').hide();\n $('#makePayment').css('display', 'inherit');\n $('#ps_paymentMethods').show();\n $('#accountInfo').hide();\n $('#installmentPlan').show();\n $('#remainingPlan').show();\n $(\"#paymentRange\").hide();\n $('#paymentMethods').hide();\n $('#dbKey').text(databaseKey);\n\n self.databaseKey = databaseKey; \n self.loadPaymentSources();\n }\n\n\n\n ////////////////////////////////////////////////////////////////\n /* PaySimple Implementation */\n ////////////////////////////////////////////////////////////////\n\n self.getPaymentSources = function (databaseKey, copay, merchantKey) {\n self.paySimple = 1;\n if (copay != '0') {\n balance = copay.replace('$', '');\n if (intakesection.copayLabel === \"fee\") {\n $('label[for=\"accountBalance\"]').html(\"Telehealth Fee Of $
\" + balance + \"
\");\n\n } else {\n $('label[for=\"accountBalance\"]').html(\"Co Payment Of $
\" + balance + \"
\");\n }\n } else {\n balance = self.balances[databaseKey].toFixed(2);\n $('label[for=\"accountBalance\"]').html(\"Account Balance Of $
\" + balance + \"
\");\n }\n\n\n $('#balanceAmount').html(balance);\n $('#installmentBalanceAmount').html(0);\n $('#remainingBalanceAmount').html(0);\n $('#paymentButtonAmount').text(balance);\n $('#databaseToPay').val(databaseKey);\n $('#merchantKey').val(merchantKey);\n\n self.merchantKey = document.getElementById('merchantKey').value;\n self.paymentPlanID = '0';\n\n $('#accountBalance').click();\n\n $('#cover').css('display', 'inherit');\n $('#paymentLoader').hide();\n $('#makePayment').css('display', 'inherit');\n $('#ps_paymentMethods').show();\n $('#paymentMethods').hide();\n $('#accountInfo').show();\n $('#installmentPlan').hide();\n $('#remainingPlan').hide();\n $(\"#paymentRange\").hide();\n $('#dbKey').text(databaseKey);\n self.databaseKey = databaseKey;\n\n self.loadPaymentSources();\n }\n\n self.loadPaymentSources = function () {\n var xmlString = \"\";\n xmlString = \"paysimpleGetPaymentMethods\" + account + \"\";\n xmlQuery(xml.create('iSalusExternal.PaySimple')(xmlString), self.paysimpleCallback);\n }\n\n self.addNewPaymentMethod = function (databaseKey, accountId, token) {\n\n var xmlString = \"\";\n xmlString = \"paysimpleAddPaymentMethod\" + token + \"\" + databaseKey + \"\" + accountId + \"\";\n xmlQuery(xml.create('iSalusExternal.PaySimple')(xmlString), self.paysimpleCallback);\n }\n\n\n self.DeletePaymentMethod = function (databaseKey) {\n if ($('#ps_paymentMethods')[0].value != '') {\n var xmlString = \"\";\n xmlString = \"paysimpleDeletePaymentMethod\" + $('#ps_paymentMethods')[0].value + \"\" + databaseKey + \"\" + account + \"\";\n xmlQuery(xml.create('iSalusExternal.PaySimple')(xmlString), self.paysimpleCallback);\n $('#confirmDeletePayment').fadeOut();\n }\n }\n\n self.confirmDeletePaymentMethod = function () {\n $('#cardName').text($(\"#ps_paymentMethods>option:selected\").html());\n $('#confirmDeletePayment').fadeIn();\n }\n\n self.confirmNewPayment = function () {\n $('#stripePaymentErrorMessage').html('');\n\n if (!self.paymentDisabled) {\n var database = $('#databaseToPay').val();\n var databaseName = '';\n var amount;\n\n if (self.coPayAmount == '') {\n amount = self.getNewPaymentAmount();\n } \n else {\n if ($('#otherAmountInput').val() != '') {\n amount = $('#otherAmountInput').val().replace(',', '');\n } else {\n amount = self.coPayAmount;\n }\n }\n\n for (var i = 0; i < self.databases.length; i++) {\n if (self.databases[i][0] == database) {\n databaseName = self.databases[i][1];\n break;\n }\n }\n\n self.chargeSource = $('#paymentMethods')[0].value;\n\n if (self.paySimple == 1) {\n self.chargeAmount = amount + '';\n $(\"#confirmPaymentPS\").removeClass('btn--disabled').html(\"Confirm Payment\").attr(\"onClick\", \"accountbalance.finishNewPayment($('#dbKey')[0].innerHTML)\");\n $(\"#confirmBackPS\").removeClass('btn--disabled');\n $('#ps_paymentConfirmation').fadeIn();\n $('#ps_paymentAmount').html('$' + amount);\n $('#ps_databaseName').html(databaseName);\n } else {\n self.chargeAmount = parseFloat(amount.toString().replace(',', '')) * 100 + '';\n $('#paymentConfirmation').fadeIn();\n $('#paymentAmount').html('$' + (self.chargeAmount / 100).toFixed(2));\n $('#databaseName').html(databaseName);\n }\n\n $('#databaseNameThanks').html(databaseName);\n $('#makePayment').fadeOut(); \n }\n }\n\n self.getNewPaymentAmount = function () {\n var database = $('#databaseToPay').val();\n var otherAmount = $(\"#otherAmountInput\").val();\n\n if ($('input:radio[name=\"startDateType\"]:checked').val() == 'balance') {\n return (self.balances[database]);\n } \n else if ($('input:radio[name=\"startDateType\"]:checked').val() == 'installment') { \n var installmentAmount = parseFloat(self.getAmountFromHTML(\"#installmentBalanceAmount\")/100);\n return installmentAmount;\n } \n else if ($('input:radio[name=\"startDateType\"]:checked').val() == 'remaining') {\n var remainingAmount = self.getAmountFromHTML(\"#remainingBalanceAmount\")/100;\n return remainingAmount;\n } \n else {\n return otherAmount;\n }\n }\n\n self.finishNewPayment = function (databaseKey) {\n var payType = 'G'\n if (self.copayInd == 'Y') {\n payType = 'C';\n }\n\n var xmlString = \"\";\n xmlString = \"paysimpleSubmitPayment\" + databaseKey + \"\" + account + \"\";\n xmlString += \"\" + $('#ps_paymentMethods')[0].value + \"\" + payType + \"MML Payment\" + self.chargeAmount + \"\";\n\n if (window.location.href.indexOf(\"accountbalance\") <= -1) {\n xmlString += \"\" + intakesection.intake_assign_id + \"\";\n }\n if (self.paymentPlanID != '0') {\n xmlString += \"\" + self.paymentPlanID + \"\";\n }\n $(\"#confirmPaymentPS\").addClass('btn--disabled').html(\"\").attr(\"onClick\",\"\");\n $(\"#confirmBackPS\").addClass('btn--disabled');\n xmlQuery(xml.create('iSalusExternal.PaySimple')(xmlString), self.paysimpleCallback);\n }\n\n self.showEstimateDetails = function (index) {\n let estimate = self.estimates[index]; \n xmlQuery(xml.create('iSalusExternal.GetEstimate')(estimate.key, estimate.mmlPatientCostEstimateId), self.getEstimateData(index)); \n }\n\n self.reShowEstimateDetails = function (index, isSigned) {\n return function () {\n let estimate = self.estimates[index]; \n xmlQuery(xml.create('iSalusExternal.GetEstimate')(estimate.key, estimate.mmlPatientCostEstimateId), self.getEstimateData(index, isSigned)); \n }\n }\n\n self.showEstimateHistory = function (xmlDoc) {\n let template = '

${1}

{0}

View Details

';\n let html = '';\n self.estimates = [];\n\n $(xmlDoc).find('history_item').each(function () {\n let estimate = {\n mmlPatientCostEstimateId: $(this).find('MmlPatientCostEstimateId').text(),\n estimationId: $(this).find('EstimationId').text(),\n key: $(this).find('database_key').text(),\n title: $(this).find('database_title').text(),\n estimationCreateDate: $(this).find('EstimationCreateDate').text(),\n patientAmountInNetworkEstimate: $(this).find('PatientAmountInNetworkEstimate').text(),\n patientAmountOutOfNetworkEstimate: $(this).find('PatientAmountOutOfNetworkEstimate').text(),\n htmlReportData: $(this).find('HtmlReportData').text(),\n pdfReportBase64: $(this).find('PdfReportBase64').text(),\n patientElectronicSignatureDate: $(this).find('PatientElectronicSignatureDate').text()\n };\n\n html += template.format(estimate.estimationCreateDate, estimate.patientAmountInNetworkEstimate, self.estimates.length);\n\n self.estimates.push(estimate); \n });\n\n self.m_estimates = self.estimates;\n \n if (self.estimates.length == 0) {\n $('#estimateList').html(\"You have no estimates at the moment\")\n } else {\n $('#estimateList').html(html);\n }\n\n if (self.m_showEstimateHistoryModal) {\n self.estimateHistoryModal();\n }\n else {\n if (self.m_initial_estimate_intake) {\n self.estimateBackToIntakeContinue();\n }\n }\n\n //let's reset the variable\n self.m_showEstimateHistoryModal = true;\n }\n \n self.getEstimateData = function (index, isSigned) {\n return function (xmlDoc) {\n common.closeModals();\n\n let estimate = self.estimates[index];\n estimate.patientElectronicSignatureDate = isSigned ? self.getCurrentDate() : estimate.patientElectronicSignatureDate;\n let template = \"

Created Date: {0}

Cost Estimate: ${1}

From: {2}

Electronically Signed on: {3}

\";\n let html = template.format(estimate.estimationCreateDate, estimate.patientAmountInNetworkEstimate, estimate.title, estimate.patientElectronicSignatureDate.length > 0 ? estimate.patientElectronicSignatureDate : \"Not Signed\");\n\n let filename = \"MyMedicalLocker Patient Estimate \" + estimate.estimationCreateDate.replace(/\\//g, '-') + \".pdf\";\n const downloadLabel = ((estimate.patientElectronicSignatureDate.length > 0) || (0 == estimate.htmlReportData.length)) ? ' 0)) ? '

Sign Estimate ' : '';\n html += downloadLabel + ' download=\"' + filename + '\" href=\"data:application/pdf;base64,' + $(xmlDoc).find('estimate_pdf').text() + '\">Download Estimate PDF ';\n html += '\"\"

';\n\n $('#estimateDetails').html(html);\n\n $('#cover').fadeIn();\n $('#estimateDetailView').fadeIn();\n }\n } \n\n self.getCurrentDate = function () {\n const currentDate = new Date();\n\n // Get the month, day, and year components\n const month = currentDate.getMonth() + 1; // Month is zero-based, so add 1\n const day = currentDate.getDate();\n const year = currentDate.getFullYear();\n\n // Format the date components as mm/dd/yyyy\n const formattedDate = `${month.toString().padStart(2, '0')}/${day.toString().padStart(2, '0')}/${year}`;\n\n return formattedDate; \n }\n\n self.getEstimateHistory = function (databaseKey) {\n xmlQuery(xml.create('iSalusExternal.GetEstimateHistory')(databaseKey), self.showEstimateHistory); \n }\n\n self.getEstimateHistoryPrepNoModal = function (databaseKey) {\n xmlQuery(xml.create('iSalusExternal.GetEstimateHistory')(databaseKey), self.showEstimateHistory); \n }\n\n self.getEstimateCurrent = function (databaseKey) {\n xmlQuery(xml.create('iSalusExternal.GetEstimateHistory')(databaseKey), self.showEstimateHistory); \n }\n\n self.estimateHistoryModal = function () {\n $('#cover').fadeIn();\n $('#estimateHistory').fadeIn();\n } \n\n self.signEstimateModalFromHistory = function () {\n const inputBox = document.getElementById(\"signatureFieldDynamic\");\n inputBox.id = \"signatureField\";\n signaturePad.clear(); \n $(\"#signEstimateView\").fadeIn(\"fast\");\n $(\"#signaturePopup\").fadeIn(\"fast\"); \n $(\"#cover\").fadeIn(\"fast\"); \n window.setTimeout(\"accountbalance.delayedEstimateSignInitialize()\", 50); \n }\n\n self.signEstimateModal = function () {\n $(\"#signaturePopupTitle\").text(\"Sign Estimate\").attr(\"type\", \"estimate\");\n\n signaturePad.clear();\n $(\"#signaturePopup\").fadeIn(\"fast\");\n \n $(\"#cover\").fadeIn(\"fast\"); \n window.setTimeout(\"accountbalance.delayedEstimateSignInitialize()\", 50); \n }\n\n self.delayedEstimateSignInitialize = function () {\n html2canvas($(\"#capture\"), {\n onrendered: function (canvas) {\n theCanvas = canvas;\n initialcanvasData = theCanvas.toDataURL();\n }\n });\n }\n\n self.isDrawingSignatureType = function (isDrawing) {\n self.m_signature_is_drawing = isDrawing;\n }\n\n self.applyEstimateSignatureExt = function (canvastoDataURL, current_estimation_id) {\n const indexCurrentEstimate = accountbalance.m_estimates.findIndex(item => item.estimationId === `${current_estimation_id}`);\n self.m_estimate_index = indexCurrentEstimate;\n const currentEstimate = accountbalance.m_estimates.find(item => item.estimationId === `${current_estimation_id}`);\n alert(\"This will take a few seconds, please wait while we return the estimate with your new signature before confirming this section\");\n accountbalance.saveSignedEstimateToPdfFromIntake(currentEstimate.key, currentEstimate.mmlPatientCostEstimateId, canvastoDataURL);\n }\n\n self.applyEstimateSignature = function () {\n $(\"#estimateDetailView\").fadeOut(\"fast\");\n $(\"#cover\").fadeOut(\"fast\");\n\n html2canvas($(\"#capture\"), {\n onrendered: function (canvas) {\n theCanvas = canvas;\n newcanvasData = theCanvas.toDataURL();\n\n //note the below comparison (initialcanvasData == newcanvasData) is accurate only if I type my signature, not if I draw it\n //note that below isEmpty function does not return an accurate state. It's accurate if I draw but not if I type. Typed in sig shows as Empty.\n //so need to detect where we're coming from, the drawing canvas or typing canvas.\n const isSignatureEmpty = signaturePad.isEmpty();\n const isTypedSignatureEmpty = !(signatureField?.value?.length);\n\n if ((initialcanvasData == newcanvasData) || (self.m_signature_is_drawing && isSignatureEmpty) || (!self.m_signature_is_drawing && isTypedSignatureEmpty)) {\n alert(\"Please sign the estimate\");\n } else {\n let estimate = self.estimates[self.m_estimate_index];\n self.saveSignedEstimateToPdf(estimate.key, estimate.mmlPatientCostEstimateId, theCanvas.toDataURL());\n }\n }\n });\n }\n\n self.saveSignedEstimateToPdf = function (key, mmlPatientCostEstimateId, canvasURL) {\n xmlQuery(xml.create('iSalusExternal.SaveSignedEstimateToPdf')(key, mmlPatientCostEstimateId, canvasURL), self.syncEstimator(self.m_estimate_index, false, key)); \n }\n\n self.saveSignedEstimateToPdfFromIntake = function (key, mmlPatientCostEstimateId, canvasURL) {\n xmlQuery(xml.create('iSalusExternal.SaveSignedEstimateToPdf')(key, mmlPatientCostEstimateId, canvasURL), self.syncEstimator(self.m_estimate_index, true, key)); \n}\n\n self.syncEstimator = function (index, isIntake, key) {\n return function () {\n const arr_sync = ['PatientCostEstimator'];\n xmlQuery(xml.create('iSalusExternal.Sync')(arr_sync), isIntake ? self.estimateBackToIntake(index, key) : self.reShowEstimateDetails(index, true)); \n }\n }\n\n self.estimateBackToIntake = function (index, key) {\n return function () {\n //run getEstimateHistory again so the PDF gets refreshed\n self.m_showEstimateHistoryModal = false;\n self.m_estimate_index = index;\n xmlQuery(xml.create('iSalusExternal.GetEstimateHistory')(key), self.showEstimateHistory); \n $(\"#intakeform.signEstimate\").hide();\n }\n }\n\n self.estimateBackToIntakeContinue = function () {\n //We should have updated estimate history now, so let's get the new signed base64 pdf to display\n const signedEstimate = accountbalance.m_estimates[self.m_estimate_index];\n self.m_newest_estimate_pdf_base64 = signedEstimate.pdfReportBase64;\n const pdfObj = document.getElementById(\"pdfEstimateObject\");\n //update our embedded pdf with the new signed version\n pdfObj.setAttribute(\"src\", \"data:application/pdf;base64,\" + signedEstimate.pdfReportBase64);\n self.m_initial_estimate_intake = false;\n }\n self.getInstallments = function (databaseKey,paymentPlanId) { \n var xmlString = \"\";\n xmlString = \"paysimpleGetInstallments\" + databaseKey + \"\" + account + \"\" + paymentPlanId + \"\";\n xmlQuery(xml.create('iSalusExternal.PaySimple')(xmlString), self.paysimpleCallback);\n $('#cover').fadeIn();\n $('#installmentData').fadeIn();\n }\n self.getPlanPayments = function (databaseKey,paymentPlanId) { \n var xmlString = \"\";\n xmlString = \"paysimpleGetPlanPayments\" + databaseKey + \"\" + account + \"\" + paymentPlanId + \"\";\n xmlQuery(xml.create('iSalusExternal.PaySimple')(xmlString), self.paysimpleCallback);\n $('#cover').fadeIn();\n $('#planPaymentsData').fadeIn();\n }\n self.getPaymentHistory = function (databaseKey) {\n\n var xmlString = \"\";\n xmlString = \"paysimpleGetPaymentHistory\" + databaseKey + \"\" + account + \"\";\n xmlQuery(xml.create('iSalusExternal.PaySimple')(xmlString), self.paysimpleCallback);\n $('#cover').fadeIn();\n $('#paymentHistory').fadeIn();\n }\n\n self.paysimpleCallback = function (xmlDoc) {\n var action = $(xmlDoc).find('action')[0].textContent;\n\n switch (action) {\n case 'GetPlanPayments':\n if ($(xmlDoc).find('PlanPaymentsList').length > 0) {\n var paymentList = [];\n var html = ''; \n paymentList.push($(xmlDoc).find('PlanPaymentsList')[0].childNodes);\n \n var template_header =\n '' +\n\t '{0}' +\n\t '{1}' +\n\t ''; \n var template =\n '' +\n\t '{0}' +\n\t '{1}' +\n\t ''; \n\n html += template_header.format(\"Date\",\"Amount\",\"Applied\");\n for (var i = 0; i < paymentList[0].length; i++) {\n var item = paymentList[0][i];\n \n html += template.format(\n item.childNodes[0].textContent,\n item.childNodes[1].textContent\n );\n };\n html =\n \"\" +\n \"\" +\n \"\" +\n \"\" + \n \"\" +\n html +\n \"
\";\n \n $('#planPaymentsList').html(html);\n } else {\n $('#planPaymentsList').html(\"You have no payments at the moment\")\n }\n break;\n case 'GetInstallments':\n if ($(xmlDoc).find('InstallmentList').length > 0) {\n var installmentList = [];\n var html = '';\n var has_deferments = false;\n installmentList.push($(xmlDoc).find('InstallmentList')[0].childNodes);\n \n var template_header =\n '' +\n\t '{0}' +\n\t '{1}' +\n\t '{2}' +\n\t '{3}' +\n\t '{4}' +\n\t ''; \n var template =\n '' +\n\t '{0}' +\n\t '{1}' +\n\t '{2}' +\n\t '{3}' +\n\t '{4}' +\n\t ''; \n\n html += template_header.format(\"#\",\"Due\",\"Amount\",\"Payments\",\"Payment Date(s)\");\n for (var i = 0; i < installmentList[0].length; i++) {\n var item = installmentList[0][i];\n if (item.childNodes[0].textContent.includes(\"*\")) {\n has_deferments = true;\n }\n html += template.format(\n item.childNodes[0].textContent,\n item.childNodes[1].textContent,\n item.childNodes[2].textContent,\n item.childNodes[3].textContent,\n (item.childNodes[4].textContent ? item.childNodes[4].textContent : \" \"),\n );\n };\n html =\n \"\" +\n \"\" +\n \"\" +\n \"\" +\n \"\" +\n \"\" +\n \"\" +\n \"\" +\n html +\n \"
\";\n\n if (has_deferments) html += \"

* Represents a deferred payment.

\";\n $('#installmentList').html(html);\n } else {\n $('#installmentList').html(\"You have no installments at the moment\")\n }\n break;\n case 'GetPaymentHistory':\n if ($(xmlDoc).find('payment_history_list').length > 0) {\n\n var paymentHistory = [];\n\n paymentHistory.push($(xmlDoc).find('payment_history_list')[0].childNodes);\n\n var template = '
\"{0}\"' +\n '

{2}...{3}

{7}

' +\n '

${1}

{4}

';\n\n var html = '';\n var paymentCount = 0;\n for (var i = 0; i < paymentHistory[0].length; i++) {\n var item = paymentHistory[0][i];\n var status = item.childNodes[5].textContent;\n switch (status) {\n case 'failed':\n status = 'error';\n break;\n case 'success':\n status = 'success';\n break;\n case 'declined':\n status = 'error';\n break;\n }\n\n html += template.format(\n item.childNodes[0].textContent,\n item.childNodes[4].textContent,\n item.childNodes[0].textContent,\n item.childNodes[1].textContent,\n item.childNodes[2].textContent,\n item.childNodes[3].textContent,\n item.childNodes[6].textContent,\n item.childNodes[5].textContent,\n status,\n paymentCount++\n );\n }\n\n $('#paymentHistoryList').html(html);\n } else {\n $('#paymentHistoryList').html(\"You have no payment history at the moment\")\n }\n break;\n\n case 'GetPaymentMethods':\n\n self.psSources = [];\n self.psSources.push($(xmlDoc).find('payment_methods_list').find('list_item'));\n\n var html = '';\n var template = '';\n var methods = self.psSources[0];\n\n for (var i = 0; i < methods.length; i++) {\n var item = methods[i];\n var encode = $(item).find('encode').first().text();\n var decode = $(item).find('decode').first().text();\n html += template.format(encode, decode);\n }\n $('#ps_paymentMethods').html(html);\n\n if (html === '') {\n $(\"#psDeletePaymentMethod\").hide();\n } else {\n $(\"#psDeletePaymentMethod\").show();\n }\n self.updatePaymentButton();\n break;\n\n case 'AddPaymentMethod':\n\n var result = $(xmlDoc).find('AddPaymentMethodResult').first().text();\n if (result != 1) {\n $(\"#addPaymentAlert\").fadeIn().html(result); \n } else {\n self.loadPaymentSources();\n $('#ps_addPayment').fadeOut();\n $('#paymentLoader').hide();\n $('#makePayment').fadeIn();\n\n pmt.trigger.resetForm();\n }\n break;\n\n case 'DeletePaymentMethod':\n\n var result = $(xmlDoc).find('DeletePaymentMethodResult').first().text();\n if (result != 1) {\n alert(result);\n } else {\n self.loadPaymentSources();\n }\n break;\n\n case 'SubmitPayment':\n\n $(\"#confirmPayment\").prop('disabled', false).html(\"Confirm Payment\");\n $(\"#confirmBack\").prop('disabled', false);\n\n var result = $(xmlDoc).find('PaymentResult').first().text();\n\n if (result != 1) {\n $('#psPaymentErrorMessage').html(result);\n $(\"#confirmPaymentPS\").removeClass('btn--disabled').html(\"Confirm Payment\").attr(\"onClick\",\"accountbalance.finishNewPayment($('#dbKey')[0].innerHTML)\");\n $(\"#confirmBackPS\").removeClass('btn--disabled');\n } else {\n $('#paymentAmountThanks').html(self.chargeAmount);\n $('#psPaymentErrorMessage').html('')\n $('#ps_paymentConfirmation').fadeOut();\n $('#cover').fadeIn();\n $('#thankYou').fadeIn();\n\n if (intakeform.currentSection == 'cp') {\n intakesection.paid_stripe(self.chargeAmount);\n\n var save_xml = intakesection.save();\n if (save_xml != \"\") {\n if (intakeform.sendToMMLWeb) {\n const post_data = {\n \"mmlIntakeId\": readCookie(\"formId\"),\n \"sectionId\": intakeform.currentSection,\n \"sectionName\": save_xml.xml_get(\"section_name\"),\n \"sectionData\": save_xml\n }\n postChoiceApiEndpoint(\"Intake\", \"IntakeSectionSave\", post_data)\n .then (data => {\n if (data == \"\") {\n self.sectionNotSavedEx(\"\");\n }\n else {\n if (data.success == true) {\n self.sectionSaved();\n }\n else {\n if (data.infectedItems != null) {\n intakesection.clear_infected_items(data.infectedItems);\n }\n self.sectionNotSavedEx(data.message);\n }\n }\n }); \n }\n else {\n xmlQuery(xml.create(\"iSalusExternal.SaveIntakeSection\")(readCookie(\"formId\"), intakeform.currentSection, save_xml), self.sectionSaved, self.sectionNotSaved);\n }\n }\n }\n }\n break;\n\n default:\n // code block\n }\n }\n\n\n\n ////////////////////////////////////////////////////////////////\n /* PaySimple Implementation */\n ////////////////////////////////////////////////////////////////\n\n self.getStatementData = function (index) {\n return function (xmlDoc) {\n common.closeModals();\n\n var statement = self.statements[index];\n var template = \"

Submitted date: {0}

Due date: {1}

Statement balance: ${2}

From: {3}

\";\n var html = template.format(statement.submitted, statement.due, statement.balance, statement.title);\n\n var filename = \"MyMedicalLocker Statement \" + statement.submitted.replace(/\\//g, '-') + \".pdf\";\n\n html += '

Download Full Statement PDF ';\n html += '\"\"

';\n\n $('#statementDetails').html(html); \n $('#cover').fadeIn();\n $('#statementDetailView').fadeIn();\n }\n }\n\n self.showStatementDetails = function (index) {\n var statement = self.statements[index];\n\n xmlQuery(xml.create('iSalusExternal.GetStatement')(statement.key, statement.number), self.getStatementData(index));\n }\n self.showInstallments = function (v1,v2) {\n alert(v1 + \" \"+ v2);\n }\n self.statementHistoryModal = function () {\n $('#cover').fadeIn();\n $('#statementHistory').fadeIn();\n }\n\n self.ps_showPaymentModal = function () {\n $('#psPaymentErrorMessage').html('').hide();\n $('#ps_paymentConfirmation').fadeOut();\n $('#makePayment').fadeIn();\n }\n\n self.showStatementHistory = function (xmlDoc) {\n var template = '

${1}

{0}

View Details

';\n var html = '';\n self.statements = [];\n\n $(xmlDoc).find('list_item').each(function () {\n var statement = {\n submitted: $(this).find('statement_submitted').text(),\n balance: $(this).find('statement_balance').text(),\n key: $(this).find('database_key').text(),\n title: $(this).find('database_title').text(),\n number: $(this).find('statement_number').text(),\n due: $(this).find('statement_due').text()\n };\n\n html += template.format(statement.submitted, statement.balance, self.statements.length);\n\n\n self.statements.push(statement);\n });\n\n if (self.statements.length == 0) {\n $('#statementList').html(\"You have no statements at the moment\")\n } else {\n $('#statementList').html(html);\n }\n\n self.statementHistoryModal();\n }\n\n self.statementHistory = function (databaseKey) {\n xmlQuery(xml.create('iSalusExternal.GetStatements')(databaseKey, '', ''), self.showStatementHistory);\n }\n\n self.getOrCreateStripeCustomer = function () {\n if (self.paySimple != 1) {\n if (mainUser.stripeInd !== '') {\n if (mainUser.stripeInd == 'Y') {\n self.stripeGetCustomer();\n } else {\n self.stripeCreateCustomer();\n }\n } else {\n console.warn('there has been a stripe error.')\n }\n }\n }\n\n self.getDatabaseKey = function (xmlDoc) {\n self.databaseKey = '';\n self.databases = [];\n\n $(xmlDoc).find('list_item').each(function () {\n if ($(this).find('account_id').text() == account) {\n var stripePk = $(this).find('stripe_pk').text();\n paySimple = $(this).find('PaySimple').text();\n var databaseKey = $(this).find('database_key').text();\n self.m_databaseKey = databaseKey;\n var databaseName = $(this).find('client_name').text();\n merchantKey = $(this).find('MerchantKey').text();\n var title = \"Account Balance\";\n\n self.databases.push([databaseKey, databaseName, stripePk, paySimple, title, merchantKey]);\n\n if (stripePk !== '') {\n self.stripeDatabase = databaseKey;\n }\n }\n });\n\n $('#practiceList').html('');\n $('#practicePlans').html('');\n\n if (self.databases.length > 0) {\n $.each(self.databases, function (index, value) {\n xmlQuery(xml.create('iSalusExternal.GetClaimReport')(value[0]), self.updateBalance(value[0], value[1], value[2], value[3], value[4], value[5]));\n }); \n } \n else {\n $('#noPractices').css('display', 'inherit');\n $('#practiceList').css('display', 'none');\n $('#practicePlans').css('display', 'none');\n }\n }\n\n self.loadData = function () {\n currentScreen = accountbalance;\n xmlQuery(xml.create('iSalusExternal.GlobalParameters'), self.getStripeServer);\n common.getConnection(self.getDatabaseKey);\n\n }\n}","\nfunction allergyScreen(){\n var self = this;\n\n self.screenTitle = \"Allergies\";\n self.associatedNavItem = \"navAboutMe\";\n\n self.updateAllergies = function(xmlDoc) {\n var html = \"\";\n\n var template = '{0}{1}{2}{3}';\n\n\n $(xmlDoc).find('list_item').each(function () {\n var reactionTreatment = $(this).find('reaction_treatment').text().split('/');\n \n if (reactionTreatment.length > 1) {\n var reaction = reactionTreatment[0];\n var treatment = reactionTreatment[1];\n if (treatment.length > 50) {\n treatment = treatment.substring(0, 50) + '...';\n }\n } else {\n var reaction = reactionTreatment[0];\n var treatment = '';\n }\n\n html += template.format($(this).find('allergy_desc').text(),\n $(this).find('allergy_type_desc').text(), \n reaction, treatment, $(this).find('allergy_id').text());\n });\n\n if(html == ''){\n document.getElementById('noAllergies').style.display = 'inherit';\n document.getElementById('table').style.display = 'none';\n } else {\n document.getElementById('noAllergies').style.display = 'none';\n document.getElementById('table').style.display = 'table';\n }\n document.getElementById('allergy-table').innerHTML = html;\n }\n\n self.showAllergy = function(xmlDoc){\n $('#popup').fadeIn();\n $('#cover').fadeIn();\n document.getElementById('allergyName').value = $(xmlDoc).find('description').text();\n document.getElementById('treatment').value = $(xmlDoc).find('treatment').text();\n document.getElementById('reaction').value = $(xmlDoc).find('reaction').text();\n var type = $(xmlDoc).find('allergen_type_code').text();\n var id = $(xmlDoc).find('allergen_id').text();\n\n document.getElementById('allergyId').value = $(xmlDoc).find('allergy_id').text();\n\n xmlQuery(xml.create('iSalusExternal.GetAllergenList')(type), common.renderDropdown('allergenDropdown', id));\n document.getElementById(\"allergenType\").selectedIndex = parseInt(type) - 1;\n }\n\n self.newAllergy = function(){\n $('#popup').fadeIn();\n $('#cover').fadeIn();\n document.getElementById('allergyId').value = '';\n document.getElementById('allergyName').value = '';\n document.getElementById('treatment').value = '';\n document.getElementById('reaction').value = '';\n document.getElementById(\"allergenType\").selectedIndex = 0;\n xmlQuery(xml.create('iSalusExternal.GetAllergenList')('1'), common.renderDropdown('allergenDropdown'));\n }\n\n self.removeFromDatabase = function(xmlDoc){\n var type = $(xmlDoc).find('allergen_type_code').text();\n var id = $(xmlDoc).find('allergen_id').text();\n var allergy = $(xmlDoc).find('allergy_id').text();\n\n xmlQuery(xml.create('iSalusExternal.SaveAllergy')(allergy, type, id, '', '', 'Y'), common.refresh);\n }\n\n self.deleteAllergy = function(){\n var id = document.getElementById('deleteAllergyId').value;\n xmlQuery(xml.create('iSalusExternal.GetAllergy')(id), self.removeFromDatabase);\n }\n\n self.deleteConfirmation = function(id){\n document.getElementById('deleteAllergyId').value = id;\n document.getElementById('popup-confirmation').style.display = 'inherit';\n document.getElementById('cover').style.display = 'inherit';\n }\n\n self.saveAllergy = function(){\n var allergyId = document.getElementById('allergyId').value;\n var allergenTypeCode = $(\"#allergenType\").val();\n var allergenId = $(\"#allergenDropdown\").val();\n var treatment = document.getElementById('treatment').value;\n var reaction = document.getElementById('reaction').value;\n\n xmlQuery(xml.create('iSalusExternal.SaveAllergy')(allergyId, allergenTypeCode, allergenId, treatment, reaction, 'N'), common.refresh)\n }\n\n self.editAllergy = function(id){\n xmlQuery(xml.create('iSalusExternal.GetAllergy')(id), self.showAllergy);\n }\n\n self.loadData = function(){\n currentScreen = allergy;\n\n xmlQuery(xml.create('iSalusExternal.GetAllergyList'), self.updateAllergies);\n }\n}","\nfunction announcementsScreen(){\n var self = this;\n\n self.screenTitle = \"Announcements\";\n self.associatedNavItem = \"navAboutMe\";\n\n self.updateAnnouncements = function(xmlDoc) {\n var html = '';\n var template = '

{0}

{3}

{1}

{2}

';\n\n $(xmlDoc).find('list_item').each(function(){\n html+=template.format(\n $(this).find('client_name').text(),\n $(this).find('message_name').text(),\n $(this).find('message_html').text(),\n $(this).find('start_date').text()\n );\n });\n\n document.getElementById('announcementsList').innerHTML = html;\n\n if(html == ''){\n document.getElementById('noAnnouncements').style.display = 'inherit';\n document.getElementById('announcementContainer').style.display = 'none';\n } else {\n document.getElementById('noAnnouncements').style.display = 'none';\n document.getElementById('announcementContainer').style.display = 'inherit';\n }\n }\n\n self.loadData = function(){\n currentScreen = announcements;\n xmlQuery(xml.create('iSalusExternal.GetAnnouncements'), self.updateAnnouncements);\n }\n}","function appointmentsScreen() {\n var self = this;\n var daysOfWeek = [\"Sun\", \"Mon\", \"Tues\", \"Wed\", \"Thur\", \"Fri\", \"Sat\", \"Sun\"];\n var months = [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"June\", \"July\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"];\n\n self.prettierDate = function (date, timezone_display) {\n var dateResponse = date.replace(\" \", \" \")\n var prettyDate = new Date(dateResponse.split(\" \")[0]);\n var time = dateResponse.split(\" \")[1];\n var dayOfWeek = daysOfWeek[prettyDate.getDay()];\n var month = months[prettyDate.getMonth()];\n var year = prettyDate.getFullYear();\n var numDate = prettyDate.getDate();\n if (timezone_display == undefined)\n timezone_display = \"\";\n return dayOfWeek + \", \" + month + \" \" + numDate + \" \" + year + \" at \" + time + (timezone_display == \"\" ? \"\" : \" \" + timezone_display);\n }\n\n\n self.screenTitle = \"Appointments\";\n self.associatedNavItem = \"navAppointments\";\n self.associatedMobileNavItem = \"mobileSchedule\";\n\n self.databaseKey = '';\n self.employerBased = false;\n self.appointmentTypeList = [];\n self.locationList = [];\n self.resourceList = [];\n self.providerInfo = {};\n self.appointmentList = [];\n self.weekOffset = 0;\n self.filterList = [];\n self.searchResults = [];\n self.selectedAppointment = '';\n self.times = [];\n self.canBook = false;\n self.selectedCategory = 0;\n self.clientList = {};\n self.databases = [];\n\n self.updateList = function (kind) {\n return function (xmlDoc) {\n var html = '';\n var mobileHtml = '';\n\n var template = '
{0}
{3}{1} for {2}{9}';\n\n var mobileTemplate = '

{0}

{3}

{1} for {2}

\"\"
';\n\n var template2 = '{2}{0}{1}{3}';\n self.appointmentList = [];\n\n var index = 0;\n $(xmlDoc).find('list_item').each(function () {\n\n var appointmentId = $(this).find('appointment_id').text();\n var date = self.prettierDate($(this).find('appointment_time').text(), $(this).find('timezone_display').text());\n var name = $(this).find('account_name').text();\n var duration = $(this).find('duration').text();\n var location = $(this).find('location').text();\n \n var locationAddress = ($(this).find('location_address').text() == '' ? 'No Address on File' : $(this).find('location_address').text());\n \n \n var locationPhone = ($(this).find('location_phone').text() == '' ? 'No Phone Number on File' : $(this).find('location_phone').text());\n var address = $(this).find('location_address').text().replace('~', '
');\n if ($(this).find('telemedicine_ind').text() === 'Y') {\n address = 'Telehealth Visit';\n }\n var provider = $(this).find('scheduled_with').text();\n var reason = $(this).find('appointment_type').text();\n var requestedDate = self.prettierDate($(this).find('requested_date').text(), \"\");\n var status = $(this).find('status').text();\n switch (status) {\n case \"Completed\":\n status = \"

Completed

\";\n break;\n case \"Pending\":\n status = \"

Pending

\";\n break;\n\n }\n var accountName = $(this).find('account_name').text();\n var message = $(this).find('message').text();\n var responseMessage = $(this).find('response_message').text();\n var databaseKey = $(this).find('database_key').text();\n var telehealthInd = $(this).find('telemedicine_ind').text();\n var isTelehealth = ($(this).find('telemedicine_ind').text() == 'N' ? '' : '');\n var intakeID = $(this).find('mml_intake_id').text();\n var hasIntake = ($(this).find('mml_intake_id').text() == '' ? '' : '');\n var intakeTitle = $(this).find('intake_name').text();\n var intakeStatus = $(this).find('intake_status').text();\n var intakeStatusClass = $(this).find(\"intake_status\").text().toLowerCase().split(\" \").join(\"-\");\n var intakeDue = $(this).find('intake_due').text();\n var intakeInstructions = $(this).find('intake_instructions').text();\n \n \n\n var found = false;\n if (self.providerInfo.hasOwnProperty(databaseKey)) {\n for (var i = 0; i < self.providerInfo[databaseKey].length; i++) {\n if (provider == self.providerInfo[databaseKey][i][0]) {\n if (kind == '3') {\n html += template2.format(provider, reason, duration, date, self.appointmentList.length);\n } else {\n var providerImg = self.providerInfo[databaseKey][i][1] ? 'data:image/jpeg;base64,' + self.providerInfo[databaseKey][i][1] : './resources/images/icon/icon-provider.svg';\n\n html += template.format(provider, reason, duration, date, location, providerImg, self.appointmentList.length, locationAddress, locationPhone, address, telehealthInd, intakeID, intakeTitle, intakeStatus, intakeDue, intakeInstructions, hasIntake, isTelehealth, intakeStatusClass);\n\n mobileHtml += mobileTemplate.format(provider, reason, duration, date, location, providerImg, self.appointmentList.length, locationAddress, locationPhone, address, telehealthInd, intakeID, intakeTitle, intakeStatus, intakeDue, intakeInstructions, hasIntake, isTelehealth, intakeStatusClass);\n }\n found = true;\n break;\n }\n }\n }\n\n if (!found) {\n if (kind == '3') {\n html += template2.format(location, accountName, status, requestedDate, self.appointmentList.length);\n } else {\n html += template.format(provider, reason, duration, date, location, './resources/images/icon/icon-provider.svg', self.appointmentList.length, locationAddress, locationPhone, address, isTelehealth, intakeID, intakeTitle, intakeStatus, intakeDue, intakeInstructions, hasIntake);\n }\n }\n\n self.appointmentList.push([appointmentId, date, name, duration, location, address, provider, reason, message, responseMessage, databaseKey, locationPhone, telehealthInd, intakeID, intakeTitle, intakeStatus, intakeDue, intakeInstructions, hasIntake]);\n });\n\n if (html == '') {\n self.setPlaceholder(self.selectedCategory);\n if (self.databases.length > 0) {\n document.getElementById('noAppointments').style.display = 'inherit';\n document.getElementById('table').style.display = 'none';\n document.getElementById('noPractices').style.display = 'none';\n } else {\n document.getElementById('noAppointments').style.display = 'none';\n document.getElementById('noPractices').style.display = 'inherit';\n \n }\n \n } else {\n document.getElementById('noAppointments').style.display = 'none';\n document.getElementById('table').style.display = 'table';\n }\n\n document.getElementById('appointmentList').innerHTML = html;\n document.getElementById('mobileAppointmentList').innerHTML = mobileHtml;\n }\n }\n\n self.showAppointmentRequest = function (which) {\n $('#popupRequest').fadeIn();\n $('#cover').fadeIn();\n document.getElementById('patientRequest').innerText = self.appointmentList[which][8].replace(/\\{CR\\}/g, \"\\n\");\n document.getElementById('patientRequest').scrollTop = 0;\n document.getElementById('physicianResponse').innerText = self.appointmentList[which][9].replace(/\\{CR\\}/g, \"\\n\");\n document.getElementById('physicianResponse').scrollTop = 0;\n }\n\n\n self.showTelehealthInfo = function () {\n $(\"#telehealthInfo\").fadeIn();\n $(\"#dialogCover\").fadeIn();\n }\n\n self.showAppointment = function (which) {\n document.getElementById('appointmentActions').innerHTML = \"\";\n if (self.selectedCategory === '0') {\n $('#appointmentCancelButton').show();\n } else {\n $('#appointmentCancelButton').hide();\n }\n var id = self.appointmentList[which][13];\n var title = self.appointmentList[which][14];\n var databaseId = self.appointmentList[which][10];\n var status = self.appointmentList[which][15];\n var date = self.appointmentList[which][16];\n var practice = \"\";\n var instructions = self.appointmentList[which][17];\n var intakeButtonClasses\n var intakeButtonLabel\n document.getElementById('popup-appointment-info').style.display = 'inherit';\n document.getElementById('formStatus').classList.remove(document.getElementById('formStatus').classList[1]);\n document.getElementById('cover').style.display = 'inherit';\n document.getElementById('infoDate').innerText = self.appointmentList[which][1];\n document.getElementById('infoAddress').innerHTML = self.appointmentList[which][5].replace('~', '
');\n document.getElementById('infoPhone').innerHTML = self.appointmentList[which][11];\n document.getElementById('infoForm').innerHTML = (title === \"\" ? \"No form assigned\" : title);\n \n \n\n document.getElementById('infoProvider').innerText = self.appointmentList[which][6];\n document.getElementById('infoLocation').innerText = self.appointmentList[which][4];\n document.getElementById('infoReason').innerText = self.appointmentList[which][7];\n document.getElementById('providerImage').src = './resources/images/icon/icon-provider.svg';\n if (self.appointmentList[which][12] === 'Y') {\n document.getElementById('appointmentActions').innerHTML += '';\n }\n if (id !== \"\") { \n document.getElementById('formStatus').classList.add(\"status--\" + status.toLowerCase().split(\" \").join(\"-\"));\n document.getElementById('formStatus').innerHTML = status.toLowerCase();\n if (status === \"Expired\") {\n intakeButtonClasses = \"btn--disabled\";\n intakeButtonLabel = \"Form Expired\";\n } else if (status === \"Completed\") {\n intakeButtonClasses = \"btn--success\";\n intakeButtonLabel = \"Form Complete\";\n } else if (status === \"Submitted\") {\n intakeButtonClasses = \"btn--outline\";\n intakeButtonLabel = \"Form Submitted\";\n } else if (status === \"In Progress\") {\n intakeButtonClasses = \"btn--outline\";\n intakeButtonLabel = \"Continue Form\";\n } else if (status === \"New\") {\n intakeButtonClasses = \"btn--outline\";\n intakeButtonLabel = \"Start Form\";\n }\n document.getElementById('appointmentActions').innerHTML += '';\n } \n\n document.getElementById('cancelAppointmentId').value = self.appointmentList[which][0];\n document.getElementById('cancelAppointmentKey').value = self.appointmentList[which][10];\n\n var databaseKey = self.appointmentList[which][10];\n\n if (self.providerInfo.hasOwnProperty(databaseKey)) {\n for (var j = 0; j < self.providerInfo[databaseKey].length; j++) {\n if (self.appointmentList[which][6] == self.providerInfo[databaseKey][j][0]) {\n if (self.providerInfo[databaseKey][j][1]) {\n document.getElementById('providerImage').src = 'data:image/jpeg;base64,' + self.providerInfo[databaseKey][j][1];\n }\n break;\n }\n }\n }\n }\n\n self.confirmAppointmentCancel = function () {\n\n $('#popup-confirmation').fadeIn();\n $('#popup-appointment-info').fadeOut();\n }\n\n self.cancelAppointment = function () {\n var id = document.getElementById('cancelAppointmentId').value;\n var key = document.getElementById('cancelAppointmentKey').value;\n\n xmlQuery(xml.create('iSalusExternal.CancelAppointment')(account, key, id), self.afterCancel);\n }\n\n self.afterCancel = function (xmlDoc) {\n common.refresh();\n var passed = $(xmlDoc).find('passed').text() == 'Y';\n document.getElementById('cancelAppointmentStatus').innerHTML = passed ? 'You have successfully cancelled the appointment.' : 'The appointment could not be cancelled.';\n document.getElementById('popup-after-cancel').style.display = 'inherit';\n document.getElementById('cover').style.display = 'inherit';\n }\n\n self.closeModals = function () {\n $('.popup').each(function () {\n this.style.display = 'none';\n });\n document.getElementById('cover').style.display = 'none';\n }\n\n self.setHeader = function (number) {\n var template = '{1}'\n var html = '';\n var list = [];\n\n if (parseInt(number) < 3) {\n list = [\n [3, 'Physician'],\n [5, 'Appointment Date'],\n [2, 'Reason for Visit'],\n [3, 'Location']\n ];\n } else {\n list = [\n [2, 'Status'],\n [5, 'Practice'],\n [3, 'For'],\n [2, 'Requested Date']\n ];\n }\n\n for (var i = 0; i < list.length; i++) {\n html += template.format(list[i][0], list[i][1]);\n }\n\n document.getElementById('tableHeader').innerHTML = html;\n }\n\n self.setPlaceholder = function (number) {\n var options = ['Upcoming Appointments', 'Previous Appointments', 'Cancelled Appointments', 'Appointment Requests'];\n\n document.getElementById('placeholderText').innerText = options[number];\n }\n\n self.selectAppointments = function (number) {\n for (var i = 0; i < 4; i++) {\n if (i + '' === number) {\n $('#appointment-category-' + i).addClass('text-tab-item--active');\n } else {\n $('#appointment-category-' + i).removeClass('text-tab-item--active');\n }\n }\n self.setHeader(number);\n self.selectedCategory = number;\n xmlQuery(xml.create('iSalusExternal.GetAppointments')(number), self.updateList(number));\n }\n\n self.changeFilter = function () {\n var boxes = ['mon', 'tue', 'wed', 'thu', 'fri', 'sat', 'sun'];\n var elem = null;\n self.filterList = [];\n\n for (var i = 0; i < boxes.length; i++) {\n elem = document.getElementById('employer-checkbox-' + boxes[i]);\n if (!elem.checked) {\n self.filterList.push(elem.value);\n }\n }\n\n self.getAppointmentSearch();\n }\n\n self.changeWeek = function (number) {\n self.weekOffset += number;\n self.getAppointmentSearch();\n }\n\n self.pickAppointment = function (id) {\n self.selectedAppointment = id;\n $('#bookButton').removeClass('btn--disabled');\n self.canBook = true;\n\n for (var i = 0; i < self.searchResults.length; i++) {\n if (id == self.searchResults[i]) {\n $('#appointment-tile-' + self.searchResults[i]).removeClass('status--submitted').addClass('status--in-progress');\n } else {\n $('#appointment-tile-' + self.searchResults[i]).removeClass('status--in-progress').addClass('status--submitted');\n }\n }\n }\n\nself.showTimes = function (xmlDoc) {\n self.times = [];\n var template = '
' +\n '

{0}

';\n var weekTemplate = '

Week of {0}

';\n var html = '';\n var header = '';\n\n header += weekTemplate.format($(xmlDoc).find('week_of').text());\n\n self.searchResults = [];\n html += '
'\n $(xmlDoc).find('date_item').each(function () {\n var date = $(this).find('schedule_date').text();\n\n var day = $(this).find('long_date').text().split(',')[0];\n if (self.filterList.indexOf(day) > -1) {\n return 'continue';\n }\n\n html += '

' + $(this).find('long_date').text() + \" with \" + $(this).find('resource_name').text() + '

';\n\n var slots = {};\n var appointmentTypeId = document.getElementById('employerReason').value;\n\n $(this).find('resource_item').each(function () {\n var resourceName = $(this).find('resource_name').text();\n var resourceId = $(this).find('resource_id').text();\n\n $(this).find('service_item').each(function () {\n var serviceLocation = $(this).find('service_location').text();\n var serviceLocationId = $(this).find('service_location_id').text();\n\n $(this).find('appt_item').each(function () {\n var startTime = $(this).find('display_start_time').text();\n var endTime = $(this).find('display_end_time').text();\n var displayStartTime = $(this).find('display_start_time').text();\n var placeholderId = $(this).find('placeholder_id').text();\n var placeholderInd = $(this).find('placeholder_ind').text();\n //var appointmentTypeId = $(this).find('appointment_type_id').text();\n\n self.times.push([date, resourceName, resourceId, serviceLocation, startTime, endTime, placeholderId, placeholderInd, appointmentTypeId, serviceLocationId]);\n\n if (slots.hasOwnProperty(startTime)) {\n slots[startTime][0] += 1;\n } else {\n slots[startTime] = [1, placeholderId, displayStartTime];\n }\n });\n });\n });\n\n\n for (var i in slots) {\n if (i != undefined) {\n html += template.format(slots[i][2] + \"
slots: \" + slots[i][0], slots[i][1]);\n self.searchResults.push(slots[i][1]);\n }\n }\n\n html += '
';\n });\n html += '
';\n document.querySelector('#employerClinicTimes').innerHTML = header + (html || 'No results found for those criteria.');\n if ($(\"#employerClinicTimes\").children(\".grid\").html() === '') {\n $(\"#employerClinicTimes\").children(\".grid\").html('

No appointments found for that search criteria

');\n }\n }\n\n self.getAppointmentSearch = function () {\n\n var errorFlag = {\n 'error': false\n };\n\n var timeframe = common.validateNotEmpty('employerTimeframe', 'employerTimeframeError', errorFlag);\n var appointmentType = common.validateNotEmpty('employerReason', 'employerReasonError', errorFlag);\n var location = common.validateNotEmpty('employerLocation', 'employerLocationError', errorFlag);\n var provider = document.getElementById('employerProvider').value;\n\n\n if (!errorFlag.error) {\n xmlQuery(xml.create('iSalusExternal.GetAppointmentSearch')(self.databaseKey, appointmentType, location, provider, timeframe, self.weekOffset.toString()), self.showTimes);\n }\n }\n\n self.showPracticeMessage = function (message) {\n return function (xmlDoc) {\n self.resetKey();\n $(\"#popup-employer\").fadeOut();\n $(\"#popupRequest\").fadeOut();\n\n if ($(xmlDoc).find('passed').text() == 'Y') {\n var messageResponse = $(xmlDoc).find('message_response').text() || message;\n document.getElementById('practiceMessageContent').innerHTML = messageResponse || 'Your message has been received.';\n } else {\n document.getElementById('practiceMessageContent').innerHTML = $(xmlDoc).find('message').text();\n }\n $('#cover').fadeIn();\n $('#popupPracticeMessage').fadeIn();\n\n\n common.refreshState = true;\n }\n }\n\n self.bookAgain = function (xmlDoc) {\n common.closeModals();\n\n var messageResponse = $(xmlDoc).find('message_response').text();\n\n if ($(xmlDoc).find('passed').text() == 'Y') {\n document.getElementById('popupBookAgain').style.display = 'inherit';\n } else {\n document.getElementById('bookingFailedMessage').innerHTML = $(xmlDoc).find('message').text();\n document.getElementById('popupBookingFailed').style.display = 'inherit';\n }\n document.getElementById('cover').style.display = 'inherit';\n\n common.refreshState = true;\n }\n\n self.bookAppointment = function () {\n if (self.canBook) {\n for (var i = 0; i < self.times.length; i++) {\n if (self.times[i][6] == self.selectedAppointment) {\n var appointmentTypeId = self.times[i][8];\n var serviceLocationId = self.times[i][9];\n var resourceId = self.times[i][2];\n var placeholderId = self.times[i][6];\n var placeholderInd = self.times[i][7];\n var scheduleDate = self.times[i][0];\n var startTime = self.times[i][4];\n var endTime = self.times[i][5];\n\n if (typeof (isNeurocore) !== 'undefined') {\n var accountId = document.getElementById('employerClient').value;\n var xml2 = new XmlCreator(key);\n xml2.setAccount(accountId);\n xmlQuery(xml2.create('iSalusExternal.BookAppointment')(self.databaseKey, appointmentTypeId, serviceLocationId, resourceId, placeholderId, placeholderInd, scheduleDate, startTime, endTime), self.bookAgain);\n } else {\n xmlQuery(xml.create('iSalusExternal.BookAppointment')(self.databaseKey, appointmentTypeId, serviceLocationId, resourceId, placeholderId, placeholderInd, scheduleDate, startTime, endTime), self.showPracticeMessage('Your appointment has been booked.'));\n }\n break;\n }\n }\n }\n }\n\n self.sendAppointmentRequest = function () {\n var phone = document.getElementById('phone').value;\n var other = document.getElementById('other').value;\n var provider = document.getElementById('provider').value;\n var reason = document.getElementById('reason').value;\n var timeframe = document.getElementById('timeframe').value;\n var preferred = document.getElementById('preferredTime').value;\n var important = document.getElementById('mostImportant').value;\n\n var days = [];\n days.push(document.getElementById('checkbox-Mon').checked);\n days.push(document.getElementById('checkbox-Tue').checked);\n days.push(document.getElementById('checkbox-Wed').checked);\n days.push(document.getElementById('checkbox-Thu').checked);\n days.push(document.getElementById('checkbox-Fri').checked);\n days.push(document.getElementById('checkbox-Sat').checked);\n days.push(document.getElementById('checkbox-Sun').checked);\n\n for (var i = 0; i < days.length; i++) {\n if (days[i]) {\n days[i] = 'Y';\n } else {\n days[i] = 'N';\n }\n }\n\n xmlQuery(xml.create('iSalusExternal.SendAppointmentRequest')(phone, other, self.databaseKey, provider, reason, timeframe, days[0], days[1], days[2], days[3], days[4], days[5], days[6], preferred, important), self.showPracticeMessage('Your request has been received.'));\n }\n\n self.getCreateInfo = function (openModal) {\n return function (xmlDoc) {\n var appointmentXml = $(xmlDoc).find('appointment_type_list');\n var tempAppointment = [\n ['', '']\n ];\n\n $(appointmentXml).find('list_item').each(function () {\n tempAppointment.push([$(this).find('encode').text(), $(this).find('decode').text()]);\n });\n\n var locationXml = $(xmlDoc).find('location_list');\n var tempLocation = [\n ['', '']\n ];\n\n $(locationXml).find('list_item').each(function () {\n tempLocation.push([$(this).find('encode').text(), $(this).find('decode').text()]);\n });\n\n var resourceXml = $(xmlDoc).find('resource_list');\n var tempResource = [\n ['', '']\n ];\n\n $(resourceXml).find('list_item').each(function () {\n if ($(this).find('h').text() != '1') {\n tempResource.push([$(this).find('encode').text(), $(this).find('decode').text()]);\n }\n });\n\n self.appointmentTypeList = tempAppointment;\n self.locationList = tempLocation.sort(function (a, b) {\n return a[1].toLowerCase().localeCompare(b[1].toLowerCase());\n });\n self.resourceList = tempResource;\n\n self.createSelect('employerLocation', self.locationList);\n self.createSelect('employerReason', self.appointmentTypeList);\n self.createSelect('employerProvider', self.resourceList);\n\n if (openModal) {\n $(\"#popupDatabase\").fadeOut();\n\n self.newAppointment();\n }\n }\n }\n\n self.createSelect = function (id, list) {\n if (typeof (list) !== 'undefined') {\n var html = '';\n var template = '';\n\n for (var i = 0; i < list.length; i++) {\n html += template.format(list[i][0], list[i][1]);\n }\n\n var elem = document.getElementById(id);\n elem.innerHTML = html;\n elem.selectedIndex = 0;\n }\n }\n\n self.renderProviderDropdown = function (databaseKey) {\n var html = '';\n var template = '';\n\n for (var i = 0; i < self.providerInfo[databaseKey].length; i++) {\n html += template.format(self.providerInfo[databaseKey][i][0]);\n }\n\n var elem = document.getElementById('provider');\n elem.innerHTML = html;\n elem.selectedIndex = 0;\n }\n\n self.getProviderInfo = function (databaseKey) {\n return function (xmlDoc) {\n var tempList = [];\n\n $(xmlDoc).find('list_item').each(function () {\n var name = $(this).find('ProviderName').text();\n var headshot = $(this).find('base64').text();\n\n tempList.push([name, headshot]);\n });\n\n self.providerInfo[databaseKey] = tempList;\n\n self.selectAppointments('0');\n }\n }\n\n self.selectDatabase = function (number, employerBased) {\n self.databaseKey = self.databases[number][0];\n self.employerBased = employerBased == '1';\n\n self.createSelect('employerClient', self.clientList[self.databaseKey]);\n self.renderProviderDropdown(self.databaseKey);\n\n xmlQuery(xml.create('iSalusExternal.GetAppointmentCreate')(self.databaseKey), self.getCreateInfo(true));\n }\n\n self.showDatabaseSelect = function () {\n var html = '';\n var template = '
{1}
';\n\n for (var i = 0; i < self.databases.length; i++) {\n html += template.format(i, self.databases[i][1], self.databases[i][2]);\n }\n\n document.getElementById('popupDatabaseList').innerHTML = html;\n document.getElementById('popupDatabase').style.display = 'inherit';\n document.getElementById('cover').style.display = 'inherit';\n }\n\n self.resetKey = function () {\n $(\"input[type='text'], select\").val(\"\");\n if (self.databases.length != 1) {\n self.databaseKey = '';\n }\n }\n\n self.getDatabaseKey = function (xmlDoc) {\n self.databaseKey = '';\n self.databases = [];\n\n self.saveClientList(xmlDoc);\n\n $(xmlDoc).find('list_item').each(function () {\n if ($(this).find('account_id').text() == account) {\n self.databases.push([$(this).find('database_key').text(), $(this).find('client_name').text(), $(this).find('employer_module_active').text()]);\n }\n });\n\n if (self.databases.length == 1) {\n self.databaseKey = self.databases[0][0];\n self.employerBased = self.databases[0][2] == '1';\n\n self.createSelect('employerClient', self.clientList[self.databaseKey]);\n\n xmlQuery(xml.create('iSalusExternal.GetAppointmentCreate')(self.databaseKey), self.getCreateInfo(false));\n }\n\n if (self.databases.length > 0) {\n document.getElementById('noPractices').style.display = 'none';\n document.getElementById('appointmentList').style.display = 'table-row-group';\n document.getElementById('table').style.display = 'table';\n $('mainHeader').fadeOut();\n\n self.providerInfo = {};\n for (var i = 0; i < self.databases.length; i++) {\n xmlQuery(xml.create('iSalusExternal.GetProviders')(self.databases[i][0]), self.getProviderInfo(self.databases[i][0]));\n }\n } else {\n document.getElementById('noPractices').style.display = 'inherit';\n document.getElementById('appointmentList').style.display = 'none';\n document.getElementById('noAppointments').style.display = 'none';\n document.getElementById('table').style.display = 'none';\n $('mainHeader').fadeIn();\n }\n }\n\n self.newAppointment = function () {\n self.filterList = [];\n\n if (self.databaseKey != '') {\n if (self.employerBased) {\n document.getElementById('popup-employer').style.display = 'inherit';\n document.getElementById('cover').style.display = 'inherit';\n document.getElementById('employer-checkbox-mon').checked = true;\n document.getElementById('employer-checkbox-tue').checked = true;\n document.getElementById('employer-checkbox-wed').checked = true;\n document.getElementById('employer-checkbox-thu').checked = true;\n document.getElementById('employer-checkbox-fri').checked = true;\n document.getElementById('employer-checkbox-sat').checked = true;\n document.getElementById('employer-checkbox-sun').checked = true;\n document.getElementById('employerClinicTimes').innerHTML = '';\n $('#bookButton').addClass('btn--disabled');\n self.canBook = false;\n self.times = [];\n self.selectedAppointment = '';\n self.weekOffset = 0;\n } else {\n if (self.databases.length == 1) {\n self.renderProviderDropdown(self.databaseKey);\n }\n document.getElementById('popup').style.display = 'inherit';\n document.getElementById('cover').style.display = 'inherit';\n document.getElementById('checkbox-Mon').checked = false;\n document.getElementById('checkbox-Tue').checked = false;\n document.getElementById('checkbox-Wed').checked = false;\n document.getElementById('checkbox-Thu').checked = false;\n document.getElementById('checkbox-Fri').checked = false;\n document.getElementById('checkbox-Sat').checked = false;\n document.getElementById('checkbox-Sun').checked = false;\n }\n } else {\n if (self.databases.length > 1) {\n self.showDatabaseSelect();\n }\n }\n }\n\n self.saveClientList = function (xmlDoc) {\n self.clientList = {};\n\n $(xmlDoc).find('list_item').each(function () {\n var thisKey = $(this).find('database_key').text();\n\n if (!self.clientList.hasOwnProperty(thisKey)) {\n self.clientList[thisKey] = [];\n }\n\n self.clientList[thisKey].push([$(this).find('account_id').text(), $(this).find('account_name').text()]);\n });\n }\n\n self.loadData = function () {\n currentScreen = appointments;\n\n if (typeof (isNeurocore) !== 'undefined') {\n document.getElementById('appointment-category-3').style.display = 'none';\n document.getElementById('employerClientSection').style.display = 'inherit';\n document.getElementById('employerProviderSection').style.display = 'none';\n document.getElementById('employerSundayBox').style.display = 'none';\n\n $('.checkboxContainer').each(function () {\n $(this).addClass('col-2')\n });\n }\n\n xmlQuery(xml.create('iSalusWindow.GetList')('preferred_time'), common.renderDropdown('preferredTime', '', true));\n xmlQuery(xml.create('iSalusWindow.GetList')('time_important'), common.renderDropdown('mostImportant', '', true));\n\n xmlQuery(xml.create('iSalusExternal.Sync')(['Appointments', 'Intake']),\n function () {\n common.getConnection(self.getDatabaseKey);\n }\n );\n }\n}","\nfunction bloodPressureScreen(){\n var self = this;\n\n self.screenTitle = \"Blood Pressure\";\n self.associatedNavItem = \"navMyVitals\";\n\n self.data = [];\n\n self.makePretty = function(string) {\n var x = string.indexOf('mmHg');\n\n if(x > 0){\n return string.slice(0, x) + ' ' + string.slice(x);\n }\n\n return string;\n }\n\n self.updateBloodPressure = function(xmlDoc) {\n var html = \"\";\n // var template = '

{0}

' +\n // '

{1}

{2}

' +\n // '

{3}

{4}

' +\n // '
';\n\n var template = '{1}{2}{0}{3}{4}'\n\n updateChart(xmlDoc);\n\n $(xmlDoc).find('list_item').each(function () {\n var date = $(this).find('bp_date').text();\n var time = $(this).find('encounter_date_time').text();\n var pressure = $(this).find('bp_data').text();\n var systolic = $(this).find('systolic').text();\n var diastolic = $(this).find('diastolic').text();\n var pulse = ($(this).find('pulse').text() === \"\" ? \"\" : $(this).find('pulse').text() + \" bpm\");\n var from = $(this).find('self_reported').text();\n var journalId = $(this).find('journal_id').text();\n var note = $(this).find('note').text();\n var databaseTitle = $(this).find('database_title').text();\n var reported = from == 'Y' ? 'Self-Reported' : databaseTitle;\n self.data.push([journalId, time.split(' ')[0], systolic, diastolic, pulse, note]);\n html += template.format(date, self.makePretty(pressure), pulse, note, reported, journalId);\n });\n\n if(html == ''){\n document.getElementById('noBloodPressure').style.display = 'inherit';\n document.getElementById('table').style.display = 'none';\n document.getElementById('bloodPressureChartContainer').style.display = 'none';\n document.getElementById('bloodPressureChartContainer').style.visibility = 'hidden';\n } else {\n document.getElementById('noBloodPressure').style.display = 'none';\n document.getElementById('table').style.display = 'table';\n document.getElementById('bloodPressureChartContainer').style.display = 'inherit';\n document.getElementById('bloodPressureChartContainer').style.visibility = 'inherit';\n }\n\n document.getElementById('bloodpressure-table').innerHTML = html;\n }\n\n self.editBloodPressure = function(journalId){\n document.getElementById('popup').style.display = 'inherit';\n document.getElementById('cover').style.display = 'inherit';\n \n for(var i = 0; i < self.data.length; i++){\n if(self.data[i][0] == journalId){\n document.getElementById('journalId').value = self.data[i][0];\n document.getElementById('systolic').value = self.data[i][2];\n document.getElementById('diastolic').value = self.data[i][3];\n document.getElementById('pulse').value = self.data[i][4];\n document.getElementById('note').value = self.data[i][5];\n document.getElementById('encounterDateTime').value = self.data[i][1];\n break;\n }\n }\n }\n\n self.newBloodPressure = function(){\n document.getElementById('popup').style.display = 'inherit';\n document.getElementById('cover').style.display = 'inherit';\n document.getElementById('journalId').value = '';\n document.getElementById('systolic').value = '';\n document.getElementById('diastolic').value = '';\n document.getElementById('pulse').value = '';\n document.getElementById('note').value = '';\n document.getElementById('encounterDateTime').value = common.getDateString();\n }\n\n self.deleteBloodPressure = function(){\n var journalId = document.getElementById('deleteJournalId').value;\n\n for(var i = 0; i < self.data.length; i++){\n if(self.data[i][0] == journalId){\n var encounterDate = self.data[i][1];\n break;\n }\n }\n\n xmlQuery(xml.create('iSalusExternal.SaveJournalBP')(account, journalId, '1', '1', '1', '', encounterDate, 'Y'), common.refresh);\n }\n\n self.deleteConfirmation = function(id){\n document.getElementById('deleteJournalId').value = id;\n document.getElementById('popup-confirmation').style.display = 'inherit';\n document.getElementById('cover').style.display = 'inherit';\n }\n\n self.saveBloodPressure = function(){\n\n var errorFlag = {'error': false};\n\n var journalId = document.getElementById('journalId').value;\n var diastolic = common.validateCustomField('diastolic', 'diastolicError', errorFlag, function(x){return x < 400 && x > 20}, 'Invalid reading.');\n var systolic = common.validateCustomField('systolic', 'systolicError', errorFlag, function(x){return x < 400 && x > 20}, 'Invalid reading.');\n var pulse = document.getElementById('pulse').value;\n var note = document.getElementById('note').value;\n var encounterDateTime = common.validateDateField('encounterDateTime', 'encounterDateTimeError', errorFlag);\n\n if(!errorFlag.error){\n xmlQuery(xml.create('iSalusExternal.SaveJournalBP')(account, journalId, systolic, diastolic, pulse, note, encounterDateTime, 'N'), common.refresh)\n }\n }\n\n self.loadData = function(){\n currentScreen = bloodpressure;\n self.data = [];\n\n if(account == ''){\n setTimeout(self.loadData, 200);\n }else{\n xmlQuery(xml.create('iSalusExternal.GetJournalBP')(account), self.updateBloodPressure);\n }\n }\n}","\nfunction bloodSugarScreen(){\n var self = this;\n\n self.screenTitle = \"Blood Sugar\";\n self.associatedNavItem = \"navMyVitals\";\n\n self.data = [];\n\n self.makePretty = function(string) {\n var x = string.indexOf('mg/dL');\n\n if(x > 0){\n return string.slice(0, x) + ' ' + string.slice(x);\n }\n\n return string;\n }\n\n self.updateBloodSugar = function(xmlDoc) {\n var html = \"\";\n var template = '{1}{0}{2}{3}{4}'\n updateChart(xmlDoc);\n\n $(xmlDoc).find('list_item').each(function () {\n var date = $(this).find('bs_date').text();\n var time = $(this).find('encounter_date_time').text();\n var reading = ($(this).find('bs_data').text() >= \"130\" ? \"\" + $(this).find('bs_data').text() + \"\" : \"\" + $(this).find('bs_data').text() + \"\");\n var bloodSugar = $(this).find('blood_sugar').text();\n var eventCode = $(this).find('event_code').text();\n var eventDesc = $(this).find('event_desc').text();\n var from = $(this).find('self_reported').text();\n var journalId = $(this).find('journal_id').text();\n var note = $(this).find('note').text();\n var databaseTitle = $(this).find('database_title').text();\n var reported = from == 'Y' ? 'Self-Reported' : databaseTitle;\n self.data.push([journalId, time.split(' ')[0], bloodSugar, eventCode, note]);\n html += template.format(date, self.makePretty(reading), eventDesc, note, reported, journalId);\n });\n\n if(html == ''){\n document.getElementById('noBloodSugar').style.display = 'inherit';\n document.getElementById('table').style.display = 'none';\n document.getElementById('bloodSugarChartContainer').style.display = 'none';\n document.getElementById('bloodSugarChartContainer').style.visibility = 'hidden';\n } else {\n document.getElementById('noBloodSugar').style.display = 'none';\n document.getElementById('table').style.display = 'table';\n document.getElementById('bloodSugarChartContainer').style.display = 'inherit';\n document.getElementById('bloodSugarChartContainer').style.visibility = 'inherit';\n }\n\n document.getElementById('bloodsugar-table').innerHTML = html;\n }\n\n self.editBloodSugar = function(journalId){\n document.getElementById('popup').style.display = 'inherit';\n document.getElementById('cover').style.display = 'inherit';\n \n for(var i = 0; i < self.data.length; i++){\n if(self.data[i][0] == journalId){\n document.getElementById('journalId').value = self.data[i][0];\n document.getElementById('bloodSugar').value = self.data[i][2];\n document.getElementById('eventCode').value = self.data[i][3];\n document.getElementById('note').value = self.data[i][4];\n document.getElementById('encounterDateTime').value = self.data[i][1];\n break;\n }\n }\n }\n\n self.newBloodSugar = function(){\n document.getElementById('popup').style.display = 'inherit';\n document.getElementById('cover').style.display = 'inherit';\n document.getElementById('journalId').value = '';\n document.getElementById('bloodSugar').value = '';\n document.getElementById('eventCode').value = '';\n document.getElementById('note').value = '';\n document.getElementById('encounterDateTime').value = common.getDateString();\n }\n\n self.deleteBloodSugar = function(){\n var journalId = document.getElementById('deleteJournalId').value;\n\n for(var i = 0; i < self.data.length; i++){\n if(self.data[i][0] == journalId){\n var encounterDate = self.data[i][1];\n break;\n }\n }\n\n xmlQuery(xml.create('iSalusExternal.SaveJournalBS')(account, journalId, '1', '1', '', encounterDate, 'Y'), common.refresh);\n }\n\n self.deleteConfirmation = function(id){\n document.getElementById('deleteJournalId').value = id;\n document.getElementById('popup-confirmation').style.display = 'inherit';\n document.getElementById('cover').style.display = 'inherit';\n }\n\n self.saveBloodSugar = function(){\n\n var errorFlag = {'error': false};\n\n var journalId = document.getElementById('journalId').value;\n var bloodSugar = common.validateCustomField('bloodSugar', 'bloodSugarError', errorFlag, function(x){return x < 3000 && x > 0}, 'Not a valid reading.');\n var eventCode = document.getElementById('eventCode').value;\n var note = document.getElementById('note').value;\n var encounterDateTime = common.validateDateField('encounterDateTime', 'encounterDateTimeError', errorFlag);\n\n if(!errorFlag.error){\n xmlQuery(xml.create('iSalusExternal.SaveJournalBS')(account, journalId, bloodSugar, eventCode, note, encounterDateTime, 'N'), common.refresh)\n }\n }\n\n self.loadData = function(){\n currentScreen = bloodsugar;\n self.data = [];\n\n if(account == ''){\n setTimeout(self.loadData, 200);\n }else{\n xmlQuery(xml.create('iSalusExternal.GetJournalBS')(account), self.updateBloodSugar);\n }\n }\n}","function chartScreen() {\n var self = this;\n var daysOfWeek = [\"Sun\", \"Mon\", \"Tues\", \"Wed\", \"Thur\", \"Fri\", \"Sat\", \"Sun\"];\n var months = [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"June\", \"July\", \"Aug\", \"Sep\",\"Oct\", \"Nov\", \"Dec\"];\n\n self.prettierDate = function(date) {\n var dateResponse = date.replace(\" \", \" \")\n var prettyDate = new Date(dateResponse.split(\" \")[0]);\n var time = dateResponse.split(\" \")[1];\n var dayOfWeek = daysOfWeek[prettyDate.getDay()];\n var month = months[prettyDate.getMonth()];\n var year = prettyDate.getFullYear();\n var numDate = prettyDate.getDate();\n return dayOfWeek + \", \" + month + \" \" + numDate + \", \" + year + \" at \" + time;\n }\n\n self.screenTitle = \"My Chart\";\n self.associatedNavItem = \"navAboutMe\";\n self.associatedMobileNavItem = \"mobileChart\";\n\n\n self.databaseKey = '';\n self.databases = [];\n\n self.labResultList = {};\n\n self.checkDate = function () {\n if ($(\"#dateRangeTo\").val().length === 10 && $(\"#dateRangeFrom\").val().length === 10) {\n $(\"#filterDone\").attr(\"disabled\", false);\n } else {\n $(\"#filterDone\").attr(\"disabled\", true);\n }\n }\n self.filterChart = function () {\n $(\"#dateRangeFrom\").val(\"\");\n $(\"#dateRangeTo\").val(\"\");\n $(\"#popupDateRange\").fadeIn();\n $(\"#cover\").fadeIn();\n $(\"#resetFilter\").on(\"click\", function () {\n $(\"#myChartList > tr\").each(function () {\n $(this).removeClass(\"is-hidden\");\n })\n $(\"#resetFilter\").hide();\n $(\"#dateResults\").hide().html(\"\");\n })\n $(\"#filterDone\").on(\"click\", function () {\n var filterFrom = $(\"#dateRangeFrom\").val();\n var filterTo = $(\"#dateRangeTo\").val();\n var filterFromParse = Date.parse(filterFrom);\n var filterToParse = Date.parse(filterTo);\n if (filterFromParse > filterToParse) {\n alert(\"The From Date cannot be larger than the To Date\");\n return;\n } else {\n $(\"#myChartList > tr\").each(function () {\n\n var chartDate = $(this).attr(\"date\").i_integer();\n if (chartDate >= filterFromParse && chartDate <= filterToParse) {\n $(this).removeClass(\"is-hidden\");\n } else {\n $(this).addClass(\"is-hidden\");\n }\n });\n\n $(\"#dateResults\").show().html(\"Showing Results for:
\" + filterFrom + \" - \" + filterTo);\n $(\"#resetFilter\").show();\n $(\"#popupDateRange\").fadeOut();\n $(\"#cover\").fadeOut();\n\n $(\"#filterDone\").attr(\"disabled\", true);\n\n }\n })\n }\n\n self.updateList = function (xmlDoc) {\n var html = '';\n // var template = '
' +\n // '

{0}

{1}

' +\n // '

{2}

';\n var template = '
{0}{2}{1}'\n\n $(xmlDoc).find('list_item').each(function () {\n var date = self.prettierDate($(this).find('post_date_time').text());\n var rawDate = $(this).find('post_date_time').text();\n var action = ($(this).find('mychart_desc').text().toLowerCase() == \"manual pull\" ? \"\" : $(this).find('mychart_desc').text().toLowerCase());\n var section = $(this).find('database_title').text();\n var recordId = $(this).find('record_id').text();\n var type = $(this).find('mychart_type').text();\n var readInd = $(this).find('read_ind').text();\n\n var url = './viewchart?t={0}&i={1}&d={2}&a={3}'.format(type, recordId, encodeURIComponent(date), account);\n\n html += template.format(action, section, date, url, readInd, \"\" + Date.parse(rawDate.i_left(10)));\n\n });\n\n if (html === '') {\n document.getElementById('noChart').style.display = 'inherit';\n document.getElementById('table').style.display = 'none';\n } else {\n document.getElementById('noChart').style.display = 'none';\n document.getElementById('table').style.display = 'table';\n }\n\n document.getElementById('myChartList').innerHTML = html;\n }\n\n self.showChart = function (xmlDoc) {\n var educationType = $(xmlDoc).find('education_type').text();\n\n if (educationType !== '') {\n if (educationType === 'U') {\n window.open($(xmlDoc).find('data').text(), '_blank');\n } else {\n document.getElementById('popup').style.display = 'inherit';\n document.getElementById('cover').style.display = 'inherit';\n\n document.getElementById('myChartDataContainer').contentDocument.documentElement.innerHTML = $(xmlDoc).find('data').text();\n }\n } else {\n document.getElementById('popup').style.display = 'inherit';\n document.getElementById('cover').style.display = 'inherit';\n\n document.getElementById('myChartDataContainer').contentDocument.documentElement.innerHTML = $(xmlDoc).find('html_data').text();\n }\n }\n\n self.getChart = function (mychartType, recordId) {\n xmlQuery(xml.create('iSalusExternal.MyChartData')(mychartType, recordId), self.showChart);\n }\n\n self.selectChartTab = function (kind) {\n\n var kinds = ['S', 'E', 'C', 'R'];\n\n for (var i = 0; i < kinds.length; i++) {\n if (kinds[i] === kind) {\n $('#chart-category-' + kinds[i]).addClass('text-tab-item--active');\n } else {\n $('#chart-category-' + kinds[i]).removeClass('text-tab-item--active');\n }\n }\n }\n\n self.updateEmptyState = function (kind) {\n var empty = {\n 'S': \"You Have No Chart Data\",\n 'E': \"You Have No Education Material\",\n 'C': \"You Have No CCM Plans\",\n 'R': \"You Have No Lab Results\"\n };\n var prefix = 'resources/images/icon/';\n var icons = {\n 'S': \"icon-empty-chart.svg\",\n 'E': \"icon-empty-education.svg\",\n 'C': \"icon-empty-ccm.svg\",\n 'R': \"icon-empty-labs.svg\"\n };\n\n document.getElementById('emptyStateName').innerText = empty[kind];\n document.getElementById('emptyIcon').src = prefix + icons[kind];\n }\n\n self.selectCategory = function (kind) {\n // $('#mainLoader').fadeOut();\n self.updateEmptyState(kind);\n\n if (kind == 'E' || kind == 'C') {\n document.getElementById('pullSummaryButton2').style.display = 'none';\n } else {\n document.getElementById('pullSummaryButton2').style.display = 'inline-block';\n }\n\n if (kind === 'S') {\n $(\"#dateRangeFilter\").show();\n $(\"#pullSummaryButton\").show();\n $(\"#dateRangeFilter\").show();\n $(\"#pullSummaryButton\").show();\n } else {\n $(\"#dateRangeFilter\").hide();\n $(\"#pullSummaryButton\").hide();\n $(\"#dateRangeFilter\").hide();\n $(\"#pullSummaryButton\").hide();\n }\n\n self.selectChartTab(kind);\n\n $('#table').css(\"display\", \"table\");\n $('#labTable').hide();\n\n xmlQuery(xml.create('iSalusExternal.MyChartList')(kind), self.updateList);\n }\n\n self.showDownloadLink = function (xmlDoc) {\n $('#cover').show();\n $('#downloadLab').show();\n $('#downloadLabButton').attr(\"href\", 'data:application/pdf;base64,' + $(xmlDoc).find('result_pdf').text());\n }\n\n self.viewLabResult = function (databaseKey, labRequisitionId, recordId) {\n xmlQuery(xml.create('iSalusExternal.GetLabResult')(databaseKey, labRequisitionId, recordId), self.showDownloadLink);\n }\n\n self.viewHistory = function (labRequisitionId) {\n var template = '

{0}

View

';\n var html = '';\n\n for (var i = 0; i < self.labResultList[labRequisitionId].length; i++) {\n var item = self.labResultList[labRequisitionId][i];\n html += template.format(item.reviewedDate, account, item.databaseKey, item.labRequisitionId, item.recordId);\n }\n\n $('#resultsHistoryList').html(html);\n $('#popupResultsHistory').show();\n $('#cover').show();\n }\n\n self.processLabResults = function (xmlDoc) {\n var template = '{0}{1}{2}{3}ViewHistory';\n var html = '';\n\n self.labResultList = {};\n\n $(xmlDoc).find('list_item').each(function () {\n var item = {\n databaseKey: $(this).find('database_key').text(),\n databaseTitle: $(this).find('database_title').text(),\n labRequisitionId: $(this).find('lab_requisition_id').text(),\n recordId: $(this).find('record_id').text(),\n patientComment: $(this).find('patient_comment').text(),\n orderList: $(this).find('order_list').text().split('|'),\n reviewedDate: $(this).find('reviewed_date').text(),\n readInd: $(this).find('read_ind').text()\n };\n\n var exists = self.labResultList.hasOwnProperty(item.labRequisitionId);\n\n if (!exists) {\n var orders = '';\n for (var i = 0; i < item.orderList.length; i++) {\n orders += '

{0}

'.format(item.orderList[i]);\n }\n\n self.labResultList[item.labRequisitionId] = [];\n\n html += template.format(item.reviewedDate, item.databaseTitle, orders, item.patientComment, item.readInd == 'Y' ? 'read' : 'unread', item.databaseKey, item.labRequisitionId, item.recordId, account);\n }\n\n self.labResultList[item.labRequisitionId].push(item);\n });\n\n if (html == '') {\n document.getElementById('noChart').style.display = 'inherit';\n document.getElementById('labTable').style.display = 'none';\n document.getElementById('table').style.display = 'none';\n } else {\n document.getElementById('noChart').style.display = 'none';\n document.getElementById('labTable').style.display = 'table';\n document.getElementById('table').style.display = 'none';\n }\n\n $('#labTemplate').html(html);\n }\n\n self.showLabResults = function () {\n $(\"#dateRangeFilter\").hide();\n $(\"#pullSummaryButton\").hide();\n self.selectChartTab('R');\n self.updateEmptyState('R');\n\n $('#labTable').css(\"display\", \"table\");\n $('#table').hide();\n\n xmlQuery(xml.create('iSalusExternal.GetLabResults')(account), self.processLabResults);\n }\n\n self.selectDatabase = function (number) {\n self.databaseKey = self.databases[number][0];\n\n common.closeModals();\n\n self.pullClinicalSummary();\n }\n\n self.showDatabaseSelect = function () {\n var html = '';\n var template = '
{1}
';\n\n for (var i = 0; i < self.databases.length; i++) {\n html += template.format(i, self.databases[i][1]);\n }\n\n document.getElementById('popupDatabaseList').innerHTML = html;\n document.getElementById('popupDatabase').style.display = 'inherit';\n document.getElementById('cover').style.display = 'inherit';\n }\n\n self.getDatabaseKey = function (xmlDoc) {\n self.databaseKey = '';\n self.databases = [];\n\n $(xmlDoc).find('list_item').each(function () {\n if ($(this).find('account_id').text() == account) {\n self.databases.push([$(this).find('database_key').text(), $(this).find('client_name').text()]);\n }\n });\n\n if (self.databases.length == 1) {\n self.databaseKey = self.databases[0][0];\n }\n\n if (self.databases.length < 1) {\n $('#pullSummaryButton').addClass('btn--disabled');\n $('#pullSummaryButton2').addClass('btn--disabled');\n } else {\n $('#pullSummaryButton').removeClass('btn--disabled');\n $('#pullSummaryButton2').removeClass('btn--disabled');\n }\n }\n\n self.syncAndRefresh = function () {\n $(\"#chartLoader\").hide();\n xmlQuery(xml.create('iSalusExternal.Sync')(['Messages', 'Appointments', 'ClinicalSummary', 'PatientEducation', 'CCMCarePlan', 'Vitals', 'Medications']), common.refresh);\n }\n\n self.pullButton = function () {\n var selector = '#pullSummaryButton';\n $(selector + \" > span\").html(\"Pulling...\");\n $(selector + \" > .save\").addClass(\"saving\");\n $(selector).removeClass('dataDone');\n $(selector).removeClass('timedOut');\n\n setTimeout(function () {\n if ($(selector).hasClass('dataDone')) {\n $(selector + \" > span\").html(\"Summary Pulled\");\n $(selector + ' > .save').removeClass(\"saving\");\n $(selector + ' > .save').attr('src', \"resources/images/icon/icon-check.svg\");\n }\n $(selector).addClass('timedOut');\n }, 2000);\n }\n\n self.buttonFinished = function () {\n var selector = '#pullSummaryButton';\n\n if ($(selector).hasClass('timedOut')) {\n $(selector + \" > span\").html(\"Summary Pulled\");\n $(selector + ' > .save').removeClass(\"saving\");\n $(selector + ' > .save').attr('src', \"resources/images/icon/icon-check.svg\");\n }\n $(selector).addClass('dataDone');\n }\n\n self.pullClinicalSummary = function () {\n if (self.databaseKey != '') {\n $(\"#chartLoader\").show();\n xmlQuery(xml.create('iSalusExternal.PullClinicalSummary')(self.databaseKey), self.syncAndRefresh);\n } else {\n if (self.databases.length > 1) {\n self.showDatabaseSelect();\n }\n }\n }\n\n self.toggleRead = function (elem) {\n $(elem).removeClass('chart-item--N');\n $(elem).addClass('chart-item--Y');\n }\n\n self.finishSync = function (xmlDoc) {\n console.log('Synced!');\n }\n\n self.loadData = function () {\n currentScreen = chart;\n\n xmlQuery(xml.create('iSalusExternal.Sync')(['LabResults']), self.finishSync);\n\n self.selectCategory('S');\n common.getConnection(self.getDatabaseKey);\n }\n}\n","function commonFunctions() {\n var self = this;\n self.refreshState = false;\n\n self.datepickerOptions = {\n showButtonPanel: true,\n changeMonth: true,\n changeYear: true,\n showOtherMonths: true,\n selectOtherMonths: true,\n yearRange: \"-100:+0\",\n changeMonth: true\n };\n\n self.skipModalClosing = false;\n self.firstLoad = true;\n\n self.specialCharacterMask = {\n translation: {\n Q: { pattern: /[0-9a-zA-Z ,;:!@.(){}\\[\\]/?-]/, recursive: true }\n }\n };\n\n self.cachedConnectionResponse = \"\";\n\n self.showField = function(value, kind) {\n var values = [\"A\", \"Y\", \"D\"];\n\n for (var i = 0; i < values.length; i++) {\n if (value == values[i]) {\n document.getElementById(values[i] + kind).style.display = \"inherit\";\n } else {\n document.getElementById(values[i] + kind).style.display = \"none\";\n }\n }\n };\n\n self.withZero = function(n) {\n var s = n.toString();\n if (s.length == 1) {\n return \"0\" + s;\n } else {\n return s;\n }\n };\n\n self.getDateString = function(offset, separator) {\n var offset = offset || 0;\n var separator = separator || \"/\";\n var date = new Date();\n date.setDate(date.getDate() + offset);\n return (\n self.withZero(date.getMonth() + 1) +\n separator +\n self.withZero(date.getDate()) +\n separator +\n date.getFullYear()\n );\n };\n\n self.closeModals = function() {\n $(\".popup\").each(function() {\n $(this).fadeOut();\n });\n\n $(\"#cover\").fadeOut();\n\n $(\".field-error\").each(function() {\n $(this).html(\"\");\n });\n\n $(\".failure-state\").each(function() {\n $(this).html(\"\");\n });\n\n if (self.refreshState) {\n currentScreen.loadData();\n self.refreshState = false;\n }\n };\n\n self.refresh = function(xmlDoc) {\n self.closeModals();\n currentScreen.loadData();\n };\n\n self.renderDropdown = function(listId, def, emptyVal) {\n var def = def || null;\n var emptyVal = emptyVal || false;\n\n return function(xmlDoc) {\n var html = \"\";\n var template = '';\n\n if (emptyVal) {\n html += template.format(\"\", \"\", \"\");\n }\n\n $(xmlDoc)\n .find(\"list_item\")\n .each(function() {\n if (\n $(this)\n .find(\"h\")\n .text() == \"0\"\n ) {\n html += template.format(\n $(this)\n .find(\"encode\")\n .text(),\n $(this)\n .find(\"decode\")\n .text(),\n \"\"\n );\n } else {\n html += template.format(\n $(this)\n .find(\"encode\")\n .text(),\n $(this)\n .find(\"decode\")\n .text(),\n \" disabled\"\n );\n }\n });\n\n document.getElementById(listId).innerHTML = html;\n\n if (def != null) {\n var select = document.getElementById(listId);\n for (var i = 0; i < select.length; i++) {\n var option = select.options[i];\n if (def == option.value) {\n select.selectedIndex = i;\n break;\n }\n }\n }\n };\n };\n\n self.seed = 1;\n self.colors = [\"#F05452\", \"#F0396F\", \"#99C13D\", \"#2D6270\"];\n self.hasRendered = false;\n\n self.pseudoRandom = function() {\n var x = Math.sin(self.seed++) * 10000;\n return x - Math.floor(x);\n };\n\n self.updateProfileImage = function(accountInfo) {\n if (accountInfo[1] != \"\") {\n xmlQuery(\n xml.create(\"iSalusExternal.GetImage\")(accountInfo[1]),\n self.updateSmallImage(accountInfo[0])\n );\n } else {\n ('\"\"');\n }\n };\n\n self.updateImage = function(xmlDoc) {\n var imageType = $(xmlDoc)\n .find(\"image_type\")\n .text()\n .toLowerCase();\n var base64encoded =\n \"data:image/\" +\n imageType +\n \";base64,\" +\n $(xmlDoc)\n .find(\"base64\")\n .text();\n document\n .getElementById(\"patientImgData\")\n .setAttribute(\"src\", base64encoded);\n document\n .getElementById(\"userCurrentImage\")\n .setAttribute(\"src\", base64encoded);\n document.getElementById(\"userCurrentImage\").style.display = \"inherit\";\n document.getElementById(\"patientPlaceholder\").style.display = \"none\";\n };\n\n self.updateSmallImage = function(target) {\n return function(xmlDoc) {\n var imageType = $(xmlDoc)\n .find(\"image_type\")\n .text()\n .toLowerCase();\n var base64encoded =\n \"data:image/\" +\n imageType +\n \";base64,\" +\n $(xmlDoc)\n .find(\"base64\")\n .text();\n document\n .getElementById(\"profileImage-\" + target)\n .setAttribute(\"src\", base64encoded);\n document.getElementById(\"profileImage-\" + target).style.display =\n \"inherit\";\n // document.getElementById('placeholder-'+target).style.display = \"none\";\n };\n };\n\n self.createPlaceholder = function(target, initials) {\n return function() {\n document.getElementById(\"patientPlaceholder\").style.display = \"inherit\";\n document.getElementById(\"userCurrentImage\").setAttribute(\"src\", \"\");\n document.getElementById(\"userCurrentImage\").style.display = \"none\";\n };\n };\n\n self.getUrlParameter = function(name) {\n name = name.replace(/[\\[]/, \"\\\\[\").replace(/[\\]]/, \"\\\\]\");\n var regex = new RegExp(\"[\\\\?&]\" + name + \"=([^&#]*)\");\n var results = regex.exec(location.search);\n return results === null\n ? \"\"\n : decodeURIComponent(results[1].replace(/\\+/g, \" \"));\n };\n\n self.updateSmallPlaceholder = function(target, initials) {\n self.seed = parseInt(target);\n var index = Math.floor(self.pseudoRandom() * self.colors.length);\n document.getElementById(\"placeholder-\" + target).style.backgroundColor =\n \"#2C3E50\";\n document.getElementById(\"placeholder-\" + target).style.display = \"inherit\";\n document.getElementById(\"placeholder-\" + target).innerText = initials;\n document.getElementById(\"profileImage-\" + target).setAttribute(\"src\", \"\");\n document.getElementById(\"profileImage-\" + target).style.display = \"none\";\n };\n\n self.checkFeatureFlag = function(xmlDoc) {\n \n if ($(xmlDoc).find('list_item').length > 0) {\n \n var telemedicineDatabases = 0;\n var totalDatabases = 0;\n \n $(xmlDoc).find('list_item').each(function () {\n totalDatabases++\n var hasTelemedicine = $(this).find(\"telemedicine_only\").text();\n if (hasTelemedicine == 1) {\n telemedicineDatabases++\n }\n });\n if (totalDatabases === telemedicineDatabases) {\n if (window.location.href.indexOf(\"intake\") == -1) {\n\n self.buildNavigation(\"telehealth\");\n $(\".nav-item\").on(\"click\", function (event) {\n $(event.currentTarget).siblings().find(\".subnav\").slideUp();\n $(event.currentTarget).siblings().find(\".nav-item_arrow\").removeClass(\"rotate\");\n $(event.currentTarget).find(\".subnav\").slideToggle();\n $(event.currentTarget).find(\".nav-item_arrow\").toggleClass(\"rotate\");\n \n });\n window.location.href = \"./#!/appointments\";\n\n }\n \n }\n } \n };\n\n self.buildNavigation = function(flag) {\n let navHtml = \"\";\n\n let nav = [\n {\n name: \"Appointments\",\n id: \"navAppointments\",\n mobileId: \"mobileSchedule\",\n icon: \"icon-appointment\",\n link: \"#!appointments\"\n },\n {\n name: \"Messages\",\n id: \"navMessages\",\n mobileId: \"mobileMessage\",\n icon: \"icon-message\",\n link: \"#!messages\"\n },\n {\n name: \"Forms\",\n id: \"navForms\",\n mobileId: \"mobileForms\",\n icon: \"icon-form\",\n link: \"#!forms\"\n },\n {\n name: \"Account\",\n id: \"navMyAccount\",\n mobileId: \"mobileAccount\",\n icon: \"icon-user\",\n link: \"javascript:void(0)\",\n children: [\n {\n name: \"Security\",\n link: \"#!security\"\n },\n {\n name: \"Password\",\n link: \"#!password\"\n },\n {\n name: \"Connect\",\n link: \"#!connect\"\n }\n ]\n }\n ];\n\n let mobileNav = [\n {\n name: \"Appointments\",\n id: \"navAppointments\",\n mobileId: \"mobileSchedule\",\n icon: \"icon-appointment\",\n link: \"#!appointments\"\n },\n {\n name: \"Messages\",\n id: \"navMessages\",\n mobileId: \"mobileMessage\",\n icon: \"icon-message\",\n link: \"#!messages\"\n },\n {\n name: \"Forms\",\n id: \"navForms\",\n mobileId: \"mobileForms\",\n icon: \"icon-form\",\n link: \"#!forms\"\n }\n ];\n\n let navList = $(\"#mmlNav\");\n let mobileNavList = $(\".mobile\");\n let mobileNavHtml = \"\";\n\n if (flag === \"telehealth\") {\n navList.html(navHtml);\n mobileNavList.html(mobileNavHtml);\n }\n\n };\n\n self.installAnywhereCare = function() {\n if (/Android/i.test(navigator.userAgent)) {\n window.location.href =\n \"https://play.google.com/store/apps/details?id=com.isalushealthcare.AnywhereCare&hl=en\";\n } else if (/iPhone|iPad|iPod/i.test(navigator.userAgent)) {\n window.location.href =\n \"https://apps.apple.com/us/app/anywherecare/id1189165196\";\n }\n };\n\n self.showProfile = function(xmlDoc) {\n var elem = null;\n var gender = \"\";\n\n if (account == \"\" || account == mainUser.accountId) {\n elem = $(xmlDoc).find(\"main\");\n account = $(elem)\n .find(\"account_id\")\n .text();\n mainUser.accountId = account;\n mainUser.firstName = $(elem)\n .find(\"first_name\")\n .text();\n mainUser.emailAddress = $(elem)\n .find(\"email_address\")\n .text();\n mainUser.lastName = $(elem)\n .find(\"last_name\")\n .text();\n mainUser.imageId = $(elem)\n .find(\"image_id\")\n .text();\n mainUser.stripeInd = $(elem)\n .find(\"stripe_user_ind\")\n .text();\n } else {\n $(xmlDoc)\n .find(\"list_item\")\n .each(function() {\n if (\n $(this)\n .find(\"account_id\")\n .text() == account\n ) {\n elem = this;\n }\n });\n }\n\n currentUser.accountId = $(elem)\n .find(\"account_id\")\n .text();\n currentUser.firstName = $(elem)\n .find(\"first_name\")\n .text();\n currentUser.lastName = $(elem)\n .find(\"last_name\")\n .text();\n currentUser.birthDate = $(elem)\n .find(\"birth_date\")\n .text();\n currentUser.genderCode = $(elem)\n .find(\"gender_code\")\n .text();\n currentUser.emailAddress = $(elem)\n .find(\"email_address\")\n .text();\n currentUser.userAlias = $(elem)\n .find(\"user_alias\")\n .text();\n currentUser.imageId = $(elem)\n .find(\"image_id\")\n .text();\n currentUser.stripeInd = $(elem)\n .find(\"stripe_user_ind\")\n .text();\n\n emailAddress = $(elem)\n .find(\"email_address\")\n .text();\n\n var patientName =\n $(elem)\n .find(\"first_name\")\n .text() +\n \" \" +\n $(elem)\n .find(\"last_name\")\n .text();\n var initials =\n $(elem)\n .find(\"first_name\")\n .text()\n .charAt(0) +\n $(elem)\n .find(\"last_name\")\n .text()\n .charAt(0);\n document.getElementById(\"patientName\").innerText = patientName;\n document.getElementById(\"usersCurrentName\").innerText = patientName;\n\n if (\n $(elem)\n .find(\"gender_code\")\n .text() == \"M\"\n ) {\n gender = \"Male, \";\n } else if (\n $(elem)\n .find(\"gender_code\")\n .text() == \"F\"\n ) {\n gender = \"Female, \";\n }\n\n document.getElementById(\"patientDetails\").innerText =\n gender +\n $(elem)\n .find(\"birth_date\")\n .text();\n\n if (!self.hasRendered) {\n var profileTemplate =\n '
  • \"profile

    {1} {2}

    {3}

  • ';\n //var profileTemplate = ''\n var profiles = profileTemplate.format(\n mainUser.accountId,\n mainUser.firstName,\n mainUser.lastName,\n \"Me\"\n );\n\n var accountImages = [\n [\n mainUser.accountId,\n mainUser.imageId,\n mainUser.firstName,\n mainUser.lastName\n ]\n ];\n\n var familyCount = 0;\n profiles +=\n '

    My Family

    ';\n\n $(xmlDoc)\n .find(\"list_item\")\n .each(function() {\n var accountId = $(this)\n .find(\"account_id\")\n .text();\n var firstName = $(this)\n .find(\"first_name\")\n .text();\n var lastName = $(this)\n .find(\"last_name\")\n .text();\n var relationship = $(this)\n .find(\"relationship\")\n .text();\n accountImages.push([\n accountId,\n $(this)\n .find(\"image_id\")\n .text(),\n firstName,\n lastName\n ]);\n profiles += profileTemplate.format(\n accountId,\n firstName,\n lastName,\n relationship\n );\n familyCount++;\n });\n profiles +=\n '
    Add Family Member
    ';\n\n document.getElementById(\"userSwitch\").innerHTML = profiles;\n\n for (var i = 0; i < accountImages.length; i++) {\n self.updateProfileImage(accountImages[i]);\n }\n\n if (familyCount > 0) {\n $(\"#myFamilyTitle\").show();\n }\n\n self.hasRendered = true;\n }\n\n var imageId = $(elem)\n .find(\"image_id\")\n .text();\n\n if (imageId != \"\") {\n xmlQuery(\n xml.create(\"iSalusExternal.GetImage\")(imageId),\n self.updateImage,\n self.createPlaceholder(account, initials)\n );\n } else {\n self.createPlaceholder(account, initials)();\n }\n\n if (!self.skipModalClosing) {\n self.closeModals();\n } else {\n self.skipModalClosing = false;\n }\n if (!self.firstLoad) {\n currentScreen.loadData();\n } else {\n self.firstLoad = false;\n }\n };\n\n self.resetButton = function(id) {\n var selector = \"#\" + id;\n $(selector + \" > span\").html(\"Save Changes\");\n $(selector + \" > .save\").attr(\"src\", \"resources/images/icon/icon-save.svg\");\n $(selector).removeClass(\"dataDone\");\n $(selector).removeClass(\"timedOut\");\n };\n\n self.saveButton = function(id) {\n var selector = \"#\" + id;\n $(selector + \" > span\").html(\"Saving...\");\n $(selector + \" > .save\").addClass(\"saving\");\n $(selector).removeClass(\"dataDone\");\n $(selector).removeClass(\"timedOut\");\n\n setTimeout(function() {\n if ($(selector).hasClass(\"dataDone\")) {\n $(selector + \" > span\").html(\"Changes Saved\");\n $(selector + \" > .save\").removeClass(\"saving\");\n $(selector + \" > .save\").attr(\n \"src\",\n \"resources/images/icon/icon-check.svg\"\n );\n }\n $(selector).addClass(\"timedOut\");\n }, 2000);\n };\n\n self.buttonDataUpdated = function(id) {\n var selector = \"#\" + id;\n\n if ($(selector).hasClass(\"timedOut\")) {\n $(selector + \" > span\").html(\"Changes Saved\");\n $(selector + \" > .save\").removeClass(\"saving\");\n $(selector + \" > .save\").attr(\n \"src\",\n \"resources/images/icon/icon-check.svg\"\n );\n }\n $(selector).addClass(\"dataDone\");\n };\n\n self.webserviceError = function(id) {\n return function(xmlDoc) {\n $(\".save-button\").each(function() {\n $(this)\n .find(\".save\")\n .first()\n .removeClass(\"saving\");\n $(this)\n .find(\"span\")\n .first()\n .html(\"Save Changes\");\n $(this).removeClass(\"timedOut\");\n $(this).removeClass(\"dataDone\");\n });\n\n if (typeof $spans !== \"undefined\") {\n $spans.each(function() {\n var $this = $(this);\n $sibling = $this.siblings(\".toggleable\");\n if ($sibling[0].tagName == \"INPUT\") {\n $sibling.val($this.text());\n }\n });\n }\n\n var message =\n $(xmlDoc)\n .find(\"description\")\n .text() ||\n $(xmlDoc)\n .find(\"message\")\n .text();\n document.getElementById(id).innerHTML = message;\n };\n };\n\n self.displayError = function(id, errorMessage) {\n return function(xmlDoc) {\n $(\".save-button\").each(function() {\n $(this)\n .find(\".save\")\n .first()\n .removeClass(\"saving\");\n $(this)\n .find(\"span\")\n .first()\n .html(\"Save Changes\");\n $(this).removeClass(\"timedOut\");\n $(this).removeClass(\"dataDone\");\n });\n\n if (typeof $spans !== \"undefined\") {\n $spans.each(function() {\n var $this = $(this);\n $sibling = $this.siblings(\".toggleable\");\n if ($sibling[0].tagName == \"INPUT\") {\n $sibling.val($this.text());\n }\n });\n }\n document.getElementById(id).innerHTML = errorMessage;\n };\n };\n\n\n self.validatePhoneField = function(inputId, errorId, errorObj, optional) {\n var phoneRegex = /^[\\+]?[(]?[0-9]{3}[)]?[-\\s\\.]?[0-9]{3}[-\\s\\.]?[0-9]{4,6}$/im;\n var inputValue = document.getElementById(inputId).value;\n var optional = optional || false;\n\n if (phoneRegex.test(inputValue) || (optional && inputValue == \"\")) {\n document.getElementById(errorId).innerHTML = \"\";\n return inputValue;\n } else {\n document.getElementById(errorId).innerHTML = \"Not a valid phone number.\";\n errorObj.error = true;\n return \"\";\n }\n };\n\n self.validateDateField = function(\n inputId,\n errorId,\n errorObj,\n optional,\n earliest\n ) {\n var dateRegex = /^[0-9]{2}\\/[0-9]{2}\\/[0-9]{4}$/;\n var inputValue = document.getElementById(inputId).value;\n var optional = optional || false;\n var earliest = earliest || \"01/01/1800\";\n\n if (dateRegex.test(inputValue) || (optional && inputValue == \"\")) {\n if (new Date(inputValue) > new Date(earliest)) {\n document.getElementById(errorId).innerHTML = \"\";\n return inputValue;\n } else {\n document.getElementById(errorId).innerHTML =\n \"Invalid date, earliest possible is \" + earliest + \".\";\n errorObj.error = true;\n return \"\";\n }\n } else {\n document.getElementById(errorId).innerHTML = \"Not a valid date.\";\n errorObj.error = true;\n return \"\";\n }\n };\n\n self.validateEmailField = function(inputId, errorId, errorObj) {\n var emailRegex = /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\n var inputValue = document.getElementById(inputId).value;\n\n if (emailRegex.test(inputValue)) {\n document.getElementById(errorId).innerHTML = \"\";\n return inputValue;\n } else {\n document.getElementById(errorId).innerHTML = \"Not a valid email.\";\n errorObj.error = true;\n return \"\";\n }\n };\n\n self.validateNameField = function(inputId, errorId, errorObj) {\n var nameRegex = /^[a-z ,.'-]+$/i;\n var inputValue = document.getElementById(inputId).value;\n\n if (nameRegex.test(inputValue)) {\n document.getElementById(errorId).innerHTML = \"\";\n return inputValue;\n } else {\n document.getElementById(errorId).innerHTML = \"Not a valid name.\";\n errorObj.error = true;\n return \"\";\n }\n };\n\n self.validateNotEmpty = function(inputId, errorId, errorObj) {\n var inputValue = document.getElementById(inputId).value;\n\n if (inputValue != \"\") {\n document.getElementById(errorId).innerHTML = \"\";\n return inputValue;\n } else {\n document.getElementById(errorId).innerHTML =\n \"This field cannot be empty.\";\n errorObj.error = true;\n return \"\";\n }\n };\n\n self.validateMatchingField = function(\n inputId,\n errorId,\n errorObj,\n comparison,\n errorString\n ) {\n var inputValue = document.getElementById(inputId).value;\n var valid = inputValue == comparison;\n\n if (valid) {\n document.getElementById(errorId).innerHTML = \"\";\n return inputValue;\n } else {\n document.getElementById(errorId).innerHTML = errorString;\n errorObj.error = true;\n return \"\";\n }\n };\n\n self.validateCustomField = function(\n inputId,\n errorId,\n errorObj,\n validationFunction,\n errorString\n ) {\n var inputValue = document.getElementById(inputId).value;\n var valid = validationFunction(inputValue);\n\n if (valid) {\n document.getElementById(errorId).innerHTML = \"\";\n return inputValue;\n } else {\n document.getElementById(errorId).innerHTML = errorString;\n errorObj.error = true;\n return \"\";\n }\n };\n\n self.abortXmlQueries = function() {\n for (var i = 0; i < xmlRequests.length; i++) {\n if (!xmlRequests[i].hasOwnProperty(\"persist\")) {\n xmlRequests[i].abort();\n xmlRequests.splice(i);\n }\n }\n };\n\n self.setTitle = function(title) {\n document.getElementById(\"screenTitle\").innerText = title;\n };\n\n self.selectNavItem = function(id) {\n var items = [\n \"navDashboard\",\n \"navAboutMe\",\n \"navMyPractices\",\n \"navMyVitals\",\n \"navMyAccount\",\n \"navAppointments\",\n \"navMessages\",\n \"navChart\",\n \"navBalance\",\n \"navForms\",\n \"navResults\"\n ];\n for (var i = 0; i < items.length; i++) {\n if (items[i] == id) {\n $(\"#\" + items[i]).addClass(\"highlight\");\n } else {\n $(\"#\" + items[i]).removeClass(\"highlight\");\n }\n }\n };\n\n self.selectMobileNavItem = function(id) {\n var mobileItems = [\n \"mobileDash\",\n \"mobileAccount\",\n \"mobileMessage\",\n \"mobileChart\",\n \"mobileSchedule\",\n \"mobileForms\"\n ];\n for (var i = 0; i < mobileItems.length; i++) {\n if (mobileItems[i] === id) {\n $(\"#\" + mobileItems[i]).addClass(\"highlight\");\n } else if (mobileItems[i] != id) {\n $(\"#\" + mobileItems[i]).removeClass(\"highlight\");\n }\n }\n };\n\n self.switchScreen = function(screen, inputs) {\n self.abortXmlQueries();\n\n self.setTitle(screen.screenTitle);\n self.selectNavItem(screen.associatedNavItem);\n self.selectMobileNavItem(screen.associatedMobileNavItem);\n if (inputs == undefined) screen.loadData();\n else screen.loadData(inputs);\n };\n\n self.clearConnectionCache = function() {\n self.cachedConnectionResponse = \"\";\n };\n\n self.cacheConnectionRequest = function(callback) {\n return function(xmlDoc) {\n self.cachedConnectionResponse = xmlDoc;\n callback(xmlDoc);\n };\n };\n\n self.getConnection = function(callback) {\n if (self.cachedConnectionResponse == \"\") {\n xmlQuery(\n xml.create(\"iSalusExternal.GetConnection\"),\n self.cacheConnectionRequest(callback)\n );\n } else {\n callback(self.cachedConnectionResponse);\n }\n };\n\n self.filterChar = function(e) {\n if (\n e.charCode == 60 ||\n e.charCode == 62 ||\n e.charCode == 38 ||\n e.charCode == 124\n ) {\n e.preventDefault();\n }\n };\n\n var daysOfWeek = [\"Sun\", \"Mon\", \"Tues\", \"Wed\", \"Thur\", \"Fri\", \"Sat\", \"Sun\"];\n var months = [\n \"Jan\",\n \"Feb\",\n \"Mar\",\n \"Apr\",\n \"May\",\n \"June\",\n \"July\",\n \"Aug\",\n \"Sep\",\n \"Oct\",\n \"Nov\",\n \"Dec\"\n ];\n\n self.prettierDate = function(date) {\n var dateResponse = date.replace(\" \", \" \");\n var prettyDate = new Date(dateResponse.split(\" \")[0]);\n var time = dateResponse.split(\" \")[1];\n var dayOfWeek = daysOfWeek[prettyDate.getDay()];\n var month = months[prettyDate.getMonth()];\n var year = prettyDate.getFullYear();\n var numDate = prettyDate.getDate();\n return dayOfWeek + \", \" + month + \" \" + numDate + \" \" + year;\n };\n\n //Reset Date Fields on Mobile\n\n self.createDate = function(element) {\n if (\n /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(\n navigator.userAgent\n )\n ) {\n $(element).attr(\"readonly\", \"readonly\");\n }\n $(element).datepicker();\n $(element)\n .datepicker(\"option\", common.datepickerOptions)\n .mask(\"00/00/0000\");\n };\n self.iOSDate = function(value) {\n var dateValue = value;\n var dateSplit = dateValue.split(\"-\");\n var year = dateSplit[0];\n var month = dateSplit[1];\n var day = dateSplit[2];\n var modDate = month + \"/\" + day + \"/\" + year;\n // $(element).val(month + \"/\" + day + \"/\" + year);\n return modDate;\n };\n\n //Remove smart punctuation from iOS devices\n self.attachFilterToInputs = function() {\n try {\n $(\"[name$='content']\").on(\"input\", preventPretentiousPunctuation);\n } catch (err) {\n // do nothing\n }\n };\n\n self.preventPretentiousPunctuation = function(event) {\n try {\n var str = $(void 0).val();\n var replacedStr = \"\";\n replacedStr = str.replace(/[\\u2018\\u2019\\u201C\\u201D]/g, function (c) {\n return \"''\\\"\\\"\".substr(\"\\u2018\\u2019\\u201C\\u201D\".indexOf(c), 1);\n });\n \n if (str !== replacedStr) {\n $(void 0).val(replacedStr);\n }\n } catch (err) {// do nothing\n }\n };\n}\n","\nfunction conditionsScreen(){\n var self = this;\n\n self.updateConditions = function(xmlDoc) {\n var html = \"\";\n var template = '{1}{2}{0}';\n\n\n $(xmlDoc).find('list_item').each(function () {\n html += template.format(\n $(this).find('condition_type_desc').text(), \n $(this).find('condition_desc').text(), \n $(this).find('occurred_value').text(), \n $(this).find('medical_condition_id').text());\n });\n\n if(html == ''){\n document.getElementById('noConditions').style.display = 'inherit';\n document.getElementById('table').style.display = 'none';\n } else {\n document.getElementById('noConditions').style.display = 'none';\n document.getElementById('table').style.display = 'table';\n }\n document.getElementById('conditions-table').innerHTML = html;\n }\n\n self.showCondition = function(xmlDoc){\n $('#newConditionPopup').fadeIn();\n $('#cover').fadeIn();\n var type = $(xmlDoc).find('condition_type_code').text();\n var id = $(xmlDoc).find('condition_id').text();\n\n var occurredType = $(xmlDoc).find('occurred_type').text();\n if(occurredType == 'A'){\n var select = document.getElementById('Aoccurred');\n var occurredValue = $(xmlDoc).find('occurred_value').text();\n for(var i = 0; i < select.length; i++){\n var option = select.options[i];\n if(occurredValue == option.value){\n select.selectedIndex = i;\n break;\n }\n }\n }else{\n document.getElementById(occurredType+'occurred').value = $(xmlDoc).find('occurred_value').text();\n }\n common.showField(occurredType, 'occurred');\n $(\"input[name=occurredType]\").val([occurredType]);\n\n document.getElementById('conditionId').value = $(xmlDoc).find('medical_condition_id').text();\n document.getElementById('notes').value = $(xmlDoc).find('note').text();\n document.getElementById('result').value = $(xmlDoc).find('results').text();\n document.getElementById('hospital').value = $(xmlDoc).find('hospital').text();\n\n xmlQuery(xml.create('iSalusExternal.GetConditionItems')(type), common.renderDropdown('conditionDropdown', id));\n document.getElementById(\"conditionType\").selectedIndex = parseInt(type) - 1;\n }\n\n self.newCondition = function(){\n $('#newConditionPopup').fadeIn();\n $(\"#cover\").fadeIn();\n $(\"input[name=occurredType]\").val(['Y']);\n common.showField('Y', 'occurred');\n document.getElementById('Aoccurred').selectedIndex = 0;\n document.getElementById('Doccurred').value = '';\n document.getElementById('Yoccurred').selectedIndex = 0;\n document.getElementById('conditionId').value = '';\n document.getElementById('notes').value = '';\n document.getElementById('result').value = '';\n document.getElementById('hospital').value = '';\n document.getElementById(\"conditionType\").selectedIndex = 1;\n\n xmlQuery(xml.create('iSalusExternal.GetConditionItems')('2'), common.renderDropdown('conditionDropdown'));\n }\n\n self.removeFromDatabase = function(xmlDoc){\n var type = $(xmlDoc).find('condition_type_code').text();\n var id = $(xmlDoc).find('medical_condition_id').text();\n var condition = $(xmlDoc).find('condition_id').text();\n\n xmlQuery(xml.create('iSalusExternal.SaveCondition')(id, type, condition, '', '', 'Y', '', '', ''), common.refresh);\n }\n\n self.deleteCondition = function(){\n var id = document.getElementById('deleteConditionId').value;\n xmlQuery(xml.create('iSalusExternal.GetCondition')(id), self.removeFromDatabase);\n }\n\n self.deleteConfirmation = function(id, name){\n $(\"#deleteConditionName\").text(name);\n document.getElementById('deleteConditionId').value = id;\n $('#popup-confirmation').fadeIn();\n document.getElementById('cover').style.display = 'inherit';\n }\n\n self.saveCondition = function(){\n var conditionId = document.getElementById('conditionId').value;\n var conditionTypeCode = $(\"#conditionType\").val();\n var conditionNum = $(\"#conditionDropdown\").val();\n var occurredType = $(\"input[name=occurredType]:checked\").val()\n var occurredValue = document.getElementById(occurredType+'occurred').value;\n var note = document.getElementById('notes').value;\n var results = document.getElementById('result').value;\n var hospital = document.getElementById('hospital').value;\n\n xmlQuery(xml.create('iSalusExternal.SaveCondition')(conditionId, conditionTypeCode, conditionNum, occurredType, occurredValue, 'N', note, results, hospital), common.refresh);\n }\n\n self.editCondition = function(id){\n xmlQuery(xml.create('iSalusExternal.GetCondition')(id), self.showCondition);\n }\n\n self.yearDropdown = function(xmlDoc){\n var birthDate = currentUser.birthDate.split('/');\n var birthYear = parseInt(birthDate[2]);\n\n var template = '';\n var listHtml = \"\";\n\n for(var i = new Date().getFullYear(); i >= birthYear; i--){\n listHtml += template.format(i);\n }\n\n document.getElementById('Yoccurred').innerHTML = listHtml;\n }\n\n self.loadData = function(){\n currentScreen = conditions;\n self.yearDropdown();\n\n xmlQuery(xml.create('iSalusExternal.GetConditionList'), self.updateConditions);\n xmlQuery(xml.create(\"iSalusExternal.GetMedicationAge\"), common.renderDropdown('Aoccurred', '0'));\n }\n}","function connectScreen() {\n var self = this;\n self.dbKey = \"\";\n self.screenTitle = \"Connected Practices\";\n self.associatedNavItem = \"navMyAccount\";\n\n self.enabled = false;\n\n self.connectionDialog = function() {\n if (self.enabled) {\n document.getElementById('popup').style.display = 'inherit';\n document.getElementById('cover').style.display = 'inherit';\n document.getElementById('lastName').value = '';\n document.getElementById('birthDate').value = '';\n document.getElementById('registrationCode').value = '';\n }\n }\n\n self.showList = function(xmlDoc) {\n var html = '';\n var template = '{0}{3}{4} Disconnect API Connections';\n\n $(xmlDoc).find('list_item').each(function() {\n if ($(this).find('account_id').text() == account) {\n var databaseKey\n var address = $(this).find('address1').text() + \" \" + $(this).find('city').text() + \" \" + $(this).find('state').text() + \" \" + $(this).find('zip').text();\n html += template.format($(this).find('client_name').text(), $(this).find('database_key').text(), $(this).find('account_name').text(), $(this).find('business_primary').text(), address);\n }\n });\n\n\n\n if (html === '') {\n $('#noPractices').show();\n $('#practiceContainer').hide();\n } else {\n $('#noPractices').hide();\n $('#practiceContainer').show();\n }\n\n document.getElementById('connectedPracticeList').innerHTML = html;\n\n }\n\n self.confirmDisconnect = function(databaseKey, name, practiceName) {\n var template = \"Are you sure you want to disconnect {0} from {1}?\";\n\n document.getElementById('disconnectConfirmation').innerHTML = template.format(name, practiceName);\n document.getElementById('disconnectDatabaseKey').value = databaseKey;\n\n document.getElementById('cover').style.display = 'inherit';\n document.getElementById('popup-confirmation').style.display = 'inherit';\n }\n\n self.connectionSuccess = function() {\n common.clearConnectionCache();\n common.refresh();\n }\n\n self.disconnect = function() {\n var databaseKey = document.getElementById('disconnectDatabaseKey').value;\n\n xmlQuery(xml.create('iSalusExternal.Disconnect')(databaseKey), self.connectionSuccess);\n }\n\n self.connectionError = function(xmlDoc) {\n document.getElementById('registrationFailure').innerHTML = $(xmlDoc).find('description').text();\n }\n\n self.connect = function() {\n var lastName = $('#registrationLastName').val();\n var birthDate = $('#registrationDob').val();\n var ssn = $('#registrationSsn').val();\n var zip = $('#registrationZip').val();\n var phone = $('#registrationPhone').val();\n var registrationCode = self.getAccessCode();\n\n xmlQuery(xml.create('iSalusExternal.Connect')(lastName, birthDate, ssn, zip, phone, registrationCode), self.connectionSuccess, common.webserviceError('registrationFailure'));\n }\n\n self.hashConnect = function() {\n var lastName = document.getElementById('hashLastName').value;\n var birthDate = document.getElementById('hashBirthDate').value;\n var ssn = '';\n var h = document.getElementById('hash').value;\n var accountId = document.getElementById('hashAccount').value;\n var xml2 = new XmlCreator(key);\n xml2.setAccount(accountId);\n // var userEmailAddress = document.getElementById('userEmailAddress').value;\n\n xmlQuery(xml2.create('iSalusExternal.Connect')('', lastName, birthDate, ssn, undefined, h, currentUser.emailAddress), self.connectionSuccess, common.webserviceError('hashFailure'));\n }\n\n self.createSelect = function(id, list) {\n var html = '';\n var template = '';\n\n for (var i = 0; i < list.length; i++) {\n html += template.format(list[i][0], list[i][1]);\n }\n\n var elem = document.getElementById(id);\n elem.innerHTML = html;\n elem.selectedIndex = 0;\n }\n\n self.updateFamilyMemberDropdown = function(xmlDoc) {\n var main = $(xmlDoc).find('main');\n var familyMembers = [\n [$(main).find('account_id').text(), $(main).find('first_name').text()]\n ];\n\n $(xmlDoc).find('list_item').each(function() {\n familyMembers.push([$(this).find('account_id').text(), $(this).find('first_name').text()]);\n });\n\n self.createSelect('hashAccount', familyMembers);\n }\n\n self.getFamilyMembers = function() {\n xmlQuery(xml.create('iSalusExternal.GetAccount'), self.updateFamilyMemberDropdown);\n }\n\n self.openAccessCodeModal = function() {\n $('#accessCode').show();\n $('#cover').show();\n }\n\n self.getAccessCode = function() {\n return $('#code0').val() + ' ' + $('#code1').val() + ' ' + $('#code2').val();\n }\n\n self.fetchConnectionFields = function() {\n var accessCode = self.getAccessCode();\n\n $('#codeEntryFailure').html('');\n\n xmlQuery(xml.create('iSalusExternal.GetRegistration')(accessCode), function(xmlDoc) {\n var practiceTitle = $(xmlDoc).find('practice_title').text();\n var practicePhone = $(xmlDoc).find('practice_phone').text();\n var practiceLogo = ($(xmlDoc).find('practice_logo').text() == '' ? '' : $(xmlDoc).find('practice_logo').text());\n\n xmlQuery(xml.create('iSalusSecurity.ConnectionSetup')(accessCode), function(xmlDoc) {\n console.log(xmlDoc);\n\n var toggleInput = function(id, xmlDoc, tagName) {\n if ($(xmlDoc).find(tagName).text() === 'Y') {\n return $('#' + id).show();\n }\n return $('#' + id).hide();\n }\n if (practiceLogo != '') {\n $('#practiceLogo').show().attr('src', 'data:img/png;base64,' + practiceLogo);\n }\n $('#practiceTitle').text(practiceTitle);\n\n toggleInput('registrationZipGroup', xmlDoc, 'zip_ind');\n toggleInput('registrationSsnGroup', xmlDoc, 'ssn_ind');\n toggleInput('registrationPhoneGroup', xmlDoc, 'phone_ind');\n\n common.closeModals();\n $('#verifyConnectionInfo input').val('');\n $('#verifyConnectionInfo').fadeIn();\n $('#cover').fadeIn();\n }, common.webserviceError('codeEntryFailure'));\n }, common.webserviceError('codeEntryFailure'));\n }\n\n self.deleteAPI = function(apiKey, id) {\n xmlQuery(xml.create(\"iSalusExternal.DeleteAPIToken\")(apiKey, id, account), self.updateAPIList);\n }\n\n self.createAPI = function(apiKey, id) {\n xmlQuery(xml.create(\"iSalusExternal.CreateAPIToken\")(apiKey, id, account), self.updateAPIList);\n }\n\n self.openAPIList = function(id) {\n xmlQuery(xml.create(\"iSalusExternal.GetAPIList\")(id, account), self.updateAPIList);\n $(\"#apiConnections\").fadeIn();\n $(\"#cover\").fadeIn();\n self.dbKey = id;\n }\n\n self.buildFHIRActivation = function() {\n callChoiceApiEndpoint(\"FHIRActivation\", \"GetActivationInfo\", self.dbKey)\n .then (data => {\n let html = \"\";\n if (Array.isArray(data)) {\n if (data[0].APIID) {\n const fhirActivated = data[0].isFHIRAPIActive ? \"
    DynamicFHIR has been activated. Please click the activate link and then sign in to continue.\" : \"\";\n html = `API ID
    ${data[0].APIID || \"\"}
    Activation Key
    ${data[0].ActivationKey || \"\"}
    Activation Link
    Activate your FHIR API${fhirActivated}`;\n } else {\n html = `No API information Found`;\n }\n } else {\n html = `Failed to retrieve the API information.`;\n }\n $('#FHIRApiContainer').html(html);\n }\n ) \n }\n\n self.openLink = function (url) {\n if (url)\n window.open(url, '_blank');\n }\n\n self.updateAPIList = function(xmlDoc) {\n var html = \"\";\n var template = '
  • {0} Disconnect APICreate API

    {2}

  • '\n $(xmlDoc).find('list_item').each(function() {\n html += template.format(\n $(this).find('api_name').text(),\n $(this).find('api_id').text(),\n $(this).find(\"token\").text(),\n self.dbKey\n );\n });\n\n html += `

  • FHIR API Connection
    Loading...
    `;\n \n $(\"#apiList\").html(html);\n $(\".apiKey\").each(function () {\n if ($(this).text() === \"\") {\n $(this).siblings(\".deleteAPI\").hide();\n $(this).siblings(\".createAPI\").show();\n } else {\n $(this).siblings(\".deleteAPI\").show();\n $(this).siblings(\".createAPI\").hide();\n }\n })\n self.buildFHIRActivation();\n}\n\nself.loadData = function() {\n currentScreen = connect;\n\n common.getConnection(self.showList);\n\n self.getFamilyMembers();\n}\n}\n","\nfunction contactScreen(){\n var self = this;\n\n self.screenTitle = \"Contact\";\n self.associatedNavItem = \"navMyAccount\";\n\n self.updateContact = function(xmlDoc) {\n document.getElementById('address').value = $(xmlDoc).find('address').text();\n document.getElementById('zip').value = $(xmlDoc).find('zip').text();\n document.getElementById('home').value = $(xmlDoc).find('home').text();\n document.getElementById('cell').value = $(xmlDoc).find('cell').text();\n document.getElementById('work').value = $(xmlDoc).find('work').text();\n\n $spans.each(function() {\n var $this = $(this);\n $this.text($this.siblings(\"input\").val());\n });\n }\n\n self.resetFields = function(xmlDoc){\n $inputs.each(function() {\n var $this = $(this);\n $this.hide().siblings(\"span\").text($this.val()).show();\n });\n\n common.buttonDataUpdated('saveContactButton');\n\n self.loadData();\n }\n\n self.saveContact = function(){\n\n var errorFlag = {'error': false};\n\n var address = document.getElementById('address').value;\n var zip = document.getElementById('zip').value;\n var home = common.validatePhoneField('home', 'homeError', errorFlag, true);\n var cell = common.validatePhoneField('cell', 'cellError', errorFlag, true);\n var work = common.validatePhoneField('work', 'workError', errorFlag, true);\n\n if(!errorFlag.error){\n common.saveButton('saveContactButton');\n xmlQuery(xml.create('iSalusExternal.SaveContact')(address, zip, home, cell, work), self.resetFields);\n }\n }\n\n self.loadData = function(){\n currentScreen = contact;\n xmlQuery(xml.create('iSalusExternal.GetContact'), self.updateContact);\n }\n}","\nfunction demographicsScreen(){\n var self = this;\n\n self.screenTitle = \"Demographics\";\n self.associatedNavItem = \"navMyAccount\";\n\n self.updateDemographics = function(xmlDoc) {\n document.getElementById('firstName').value = $(xmlDoc).find('first_name').text();\n document.getElementById('lastName').value = $(xmlDoc).find('last_name').text();\n document.getElementById('birthDate').value = $(xmlDoc).find('birth_date').text();\n $('#genderCode').val([$(xmlDoc).find('gender_code').text()]);\n document.getElementById('maritalCode').value = $(xmlDoc).find('marital_code').text();\n document.getElementById('bloodTypeCode').value = $(xmlDoc).find('blood_type_code').text();\n document.getElementById('ethnicityCode').value = $(xmlDoc).find('ethnicity_code').text();\n document.getElementById('eyeColorCode').value = $(xmlDoc).find('eye_color_code').text();\n document.getElementById('hairColorCode').value = $(xmlDoc).find('hair_color_code').text();\n document.getElementById('birthmarksScars').value = $(xmlDoc).find('birthmarks_scars').text();\n document.getElementById('specialConditions').value = $(xmlDoc).find('special_conditions').text();\n\n $spans.each(function() {\n var $this = $(this);\n $sibling = $this.siblings(\".toggleable\");\n if($sibling[0].tagName == \"INPUT\"){\n $this.text($sibling.val());\n }else{\n $this.text($sibling.find(\":selected\").text());\n }\n });\n }\n\n self.resetFields = function(xmlDoc){\n $inputs.each(function() {\n var $this = $(this);\n $this.hide().siblings(\"span\").show();\n });\n\n common.buttonDataUpdated('saveDemographicsButton');\n\n common.hasRendered = false;\n xmlQuery(xml.create('iSalusExternal.GetAccount'), common.showProfile, logOut);\n }\n\n self.saveDemographics = function(){\n\n var errorFlag = {'error': false};\n\n var firstName = common.validateNameField('firstName', 'firstNameError', errorFlag);\n var lastName = common.validateNameField('lastName', 'lastNameError', errorFlag);\n var birthDate = common.validateDateField('birthDate', 'birthDateError', errorFlag, false, '01/01/1900');\n var genderCode = document.getElementById('genderCode').value;\n var ssn = '';\n var maritalCode = document.getElementById('maritalCode').value;\n var bloodTypeCode = document.getElementById('bloodTypeCode').value;\n var ethnicityCode = document.getElementById('ethnicityCode').value;\n var eyeColorCode = document.getElementById('eyeColorCode').value;\n var hairColorCode = document.getElementById('hairColorCode').value;\n var birthmarksScars = document.getElementById('birthmarksScars').value;\n var specialConditions = document.getElementById('specialConditions').value;\n\n if(!errorFlag.error){\n common.saveButton('saveDemographicsButton');\n xmlQuery(xml.create('iSalusExternal.SaveDemographics')(firstName, lastName, birthDate, genderCode, ssn, maritalCode, bloodTypeCode, ethnicityCode, eyeColorCode, hairColorCode, birthmarksScars, specialConditions), self.resetFields);\n }\n }\n\n self.loadData = function(){\n currentScreen = demographics;\n xmlQuery(xml.create('iSalusExternal.GetDemographics'), self.updateDemographics);\n }\n}","\nfunction documentsScreen(){\n var self = this;\n self.databases = [];\n self.databaseKey = '';\n self.screenTitle = \"Documents\";\n self.associatedNavItem = \"navAboutMe\";\n\n var mode = 0; //0 = update, 1 = create\n\n self.updateDocuments = function(xmlDoc) {\n var html = \"\";\n\n var template = '{0}{1}{3}';\n\n $(xmlDoc).find('type_item').each(function () {\n var docType = $(this).find('document_type_desc').text();\n var docCode = $(this).find('document_type_code').text();\n $(this).find('list_item').each(function () {\n var id = $(this).find('patient_image_id').text();\n var timestamp = new Date().getTime();\n var url = './datapages/MMLDocumentGet.asp?gv='+key+'&ii=PD.'+mainUser.accountId+'.'+id+'.'+docCode+'&ts'+timestamp;\n html += template.format($(this).find('image_name').text(), docType, $(this).find('document_name').text(), $(this).find('document_date_long').text(), id, url);\n });\n });\n\n if(html == ''){\n document.getElementById('noDocuments').style.display = 'inherit';\n document.getElementById('table').style.display = 'none';\n } else {\n document.getElementById('noDocuments').style.display = 'none';\n document.getElementById('table').style.display = 'table';\n }\n document.getElementById('document-table').innerHTML = html;\n }\n\n self.getDatabaseKey = function(xmlDoc) {\n self.databaseKey = '';\n self.databases = [];\n\n $(xmlDoc).find('list_item').each(function(){\n if($(this).find('account_id').text() == account){\n self.databases.push([$(this).find('database_key').text(), $(this).find('client_name').text()]);\n }\n });\n\n if(self.databases.length == 1){\n self.databaseKey = self.databases[0][0];\n\n xmlQuery(xml.create('iSalusExternal.GetProviders')(self.databaseKey));\n }\n }\n\n self.selectDatabase = function(number){\n self.databaseKey = self.databases[number][0];\n\n xmlQuery(xml.create('iSalusExternal.GetProviders')(self.databaseKey));\n }\n\n\n self.showDatabaseSelect = function(){\n var html = '';\n var template = '
    ';\n for(var i = 0; i < self.databases.length; i++){\n html += template.format(self.databases[i][0], self.databases[i][1], i+1);\n }\n\n document.getElementById('documentPracticeSelect').innerHTML = html;\n }\n\n self.shareDocument = function(elem, id) {\n $('#documentShareModal').show();\n $('#cover').show();\n $('#sharedDocumentName').text(elem);\n $('#shareDocumentId').val(id);\n self.showDatabaseSelect();\n }\n\n\n\n self.showDocument = function(xmlDoc){\n self.mode = 0;\n document.getElementById('fileUploadSection').style.display = 'none';\n document.getElementById('popup').style.display = 'inherit';\n document.getElementById('cover').style.display = 'inherit';\n document.getElementById('imageName').value = $(xmlDoc).find('image_name').text();\n document.getElementById('documentDate').value = $(xmlDoc).find('document_date').text();\n document.getElementById('imageDescription').value = $(xmlDoc).find('image_description').text();\n document.getElementById('documentTypeCode').value = $(xmlDoc).find('document_type_code').text();\n document.getElementById('patientImageId').value = $(xmlDoc).find('patient_image_id').text();\n document.getElementById('imageId').value = $(xmlDoc).find('image_id').text();\n }\n\n self.newDocument = function(){\n $(\"#documentLoader\").hide()\n $(\"#editShowDocument\").text('Upload New Document')\n self.mode = 1;\n document.getElementById('fileUploadSection').style.display = 'inherit';\n document.getElementById('popup').style.display = 'inherit';\n document.getElementById('cover').style.display = 'inherit';\n document.getElementById('imageName').value = '';\n document.getElementById('documentDate').value = common.getDateString();\n document.getElementById('imageDescription').value = '';\n document.getElementById('documentTypeCode').selectedIndex = 0;\n document.getElementById('patientImageId').value = '';\n document.getElementById('imageId').value = '';\n }\n\n self.removeFromDatabase = function(xmlDoc){\n var documentDate = $(xmlDoc).find('document_date').text();\n var documentTypeCode = $(xmlDoc).find('document_type_code').text();\n var patientImageId = $(xmlDoc).find('patient_image_id').text();\n var imageId = $(xmlDoc).find('image_id').text();\n\n xmlQuery(xml.create('iSalusExternal.SaveDocument')(patientImageId, documentTypeCode, imageId, '', '', documentDate, 'Y'), common.refresh);\n }\n\n self.deleteDocument = function(xmlDoc){\n var id = document.getElementById('deletePatientImageId').value;\n \n xmlQuery(xml.create('iSalusExternal.GetDocument')(id), self.removeFromDatabase);\n }\n\n self.shareDocumentPractice = function(){\n var patientImageID = $('#shareDocumentId').val();\n var databaseKey = $(\"input[name='practice']:checked\").val();;\n var shareComments = $('#documentComments').val().replace(/&/g, \"and\").replace(/

    {1}

    {2}

    ' +\n // '

    {3}

    ' +\n // '
    ';\n \n var template = '{1}{0}{2}{3}'\n\n $(xmlDoc).find('list_item').each(function () {\n var date = $(this).find('encounter_date_time').text();\n var prettyDate = $(this).find('goal_date').text();\n var goal = $(this).find('goal_data').text();\n var goalMet = $(this).find('goal_met_ind').text();\n var from = $(this).find('self_reported').text();\n var journalId = $(this).find('journal_id').text();\n var note = $(this).find('note').text();\n self.data.push([journalId, date.split(' ')[0], goal, goalMet, from, note]);\n html += template.format(goal, goalMet == 'Y' ? '

    Complete

    ' : '

    In Progress

    ', from == 'Y' ? 'Yes' : 'No', prettyDate, journalId);\n });\n\n if(html == ''){\n document.getElementById('noGoals').style.display = 'inherit';\n document.getElementById('noPracticeGoals').style.display = 'none';\n document.getElementById('table').style.display = 'none';\n } else {\n document.getElementById('noGoals').style.display = 'none';\n document.getElementById('noPracticeGoals').style.display = 'none';\n document.getElementById('table').style.display = 'table';\n }\n document.getElementById('goal-table').innerHTML = html;\n document.getElementById('myGoals').style.display = 'inherit';\n document.getElementById('practiceGoals').style.display = 'none';\n }\n\n self.updatePracticeGoals = function(xmlDoc) {\n var html = '';\n var longTermTemplate = '
    ' +\n '

    {0}

    Active

    ' +\n '

    Created: {1}


    ' +\n '

    Associated Short Term Goals

    {2}
    ';\n var shortTermTemplate = '

    {0}

    {1}

    ';\n var shortTermTopLevelTemplate = '

    '+\n '{0}

    Active

    Created: {1}

    ';\n\n var goalList = $(xmlDoc).find('goal_list');\n var goalData = [];\n\n $(goalList).children('list_item').each(function () {\n var goalTerm = $(this).find('goal_term').text();\n var topLevel = $(this).find('top_level').text();\n if(goalTerm == 'Long Term'){\n goalData.push(['Long', $(this).find('goal_name').text(), $(this).find('created').text(), []]);\n }else{\n if(topLevel == '0'){\n goalData[goalData.length - 1][3].push(['Short', $(this).find('goal_name').text(), $(this).find('created').text()]);\n }else{\n goalData.push(['Short', $(this).find('goal_name').text(), $(this).find('created').text()]);\n }\n }\n });\n\n var longHtml = [];\n var shortHtml = [];\n for(var i = 0; i < goalData.length; i++){\n if(goalData[i][0] == 'Long'){\n var tempHtml = '';\n for(var j = 0; j < goalData[i][3].length; j++){\n tempHtml += shortTermTemplate.format(goalData[i][3][j][1], goalData[i][3][j][2]);\n }\n if(tempHtml == ''){\n tempHtml = 'No associated short term goals.';\n }\n longHtml.push(longTermTemplate.format(goalData[i][1], goalData[i][2], tempHtml));\n }else{\n shortHtml.push(shortTermTopLevelTemplate.format(goalData[i][1], goalData[i][2]));\n }\n }\n\n if(longHtml.length > 0){\n html += '

    Long Term Goals

    ';\n }\n\n while(longHtml.length > 0){\n var a = longHtml.shift() || '';\n var b = longHtml.shift() || '';\n html += '
    {0}{1}
    '.format(a,b);\n }\n\n if(shortHtml.length > 0){\n html += '

    Short Term Goals

    ';\n }\n\n while(shortHtml.length > 0){\n var a = shortHtml.shift() || '';\n var b = shortHtml.shift() || '';\n html += '
    {0}{1}
    '.format(a,b);\n }\n\n if(goalData.length == 0){\n document.getElementById('noGoals').style.display = 'none';\n document.getElementById('noPracticeGoals').style.display = 'inherit';\n document.getElementById('table').style.display = 'none';\n } else {\n document.getElementById('noGoals').style.display = 'none';\n document.getElementById('noPracticeGoals').style.display = 'none';\n document.getElementById('table').style.display = 'table';\n }\n document.getElementById('practiceGoals').innerHTML = html;\n document.getElementById('myGoals').style.display = 'none';\n document.getElementById('practiceGoals').style.display = 'inherit';\n }\n\n self.showGoal = function(journalId){\n document.getElementById('popup').style.display = 'inherit';\n document.getElementById('cover').style.display = 'inherit';\n \n for(var i = 0; i < self.data.length; i++){\n if(self.data[i][0] == journalId){\n document.getElementById('goalId').value = self.data[i][0];\n document.getElementById('goal').value = self.data[i][2];\n document.getElementById('goalMet').value = self.data[i][3];\n document.getElementById('goalNotes').value = self.data[i][5];\n document.getElementById('goalDate').value = self.data[i][1];\n break;\n }\n }\n }\n\n self.newGoal = function(){\n document.getElementById('popup').style.display = 'inherit';\n document.getElementById('cover').style.display = 'inherit';\n document.getElementById('goalId').value = '';\n document.getElementById('goal').value = '';\n document.getElementById('goalMet').value = '';\n document.getElementById('goalNotes').value = '';\n document.getElementById('goalDate').value = common.getDateString();\n }\n\n self.deleteGoal = function(){\n var journalId = document.getElementById('deleteGoalId').value;\n\n for(var i = 0; i < self.data.length; i++){\n if(self.data[i][0] == journalId){\n var encounterDate = document.getElementById('goalDate').value = self.data[i][1];\n break;\n }\n }\n\n xmlQuery(xml.create('iSalusExternal.SaveJournalGoal')(account, journalId, '', 'N', '', encounterDate, 'Y'), common.refresh);\n }\n\n self.deleteConfirmation = function(id){\n document.getElementById('deleteGoalId').value = id;\n document.getElementById('popup-confirmation').style.display = 'inherit';\n document.getElementById('cover').style.display = 'inherit';\n }\n\n self.saveGoal = function(){\n var journalId = document.getElementById('goalId').value;\n var goal = document.getElementById('goal').value;\n var goalMetInd = document.getElementById('goalMet').value;\n var note = document.getElementById('goalNotes').value;\n var encounterDateTime = document.getElementById('goalDate').value;\n\n xmlQuery(xml.create('iSalusExternal.SaveJournalGoal')(account, journalId, goal, goalMetInd, note, encounterDateTime, 'N'), common.refresh)\n }\n\n self.editGoal = function(id){\n self.showGoal(id);\n }\n\n self.getMyGoals = function(){\n $('#tab-my-goals').addClass('text-tab-item--active');\n $('#tab-practice-goals').removeClass('text-tab-item--active');\n $(\"#addGoalButton\").show();\n xmlQuery(xml.create('iSalusExternal.GetJournalGoal')(account), self.updateGoals);\n }\n\n self.getPracticeGoals = function(){\n $('#tab-my-goals').removeClass('text-tab-item--active');\n $('#tab-practice-goals').addClass('text-tab-item--active');\n $(\"#addGoalButton\").hide();\n xmlQuery(xml.create('iSalusExternal.GetPracticeGoals'), self.updatePracticeGoals);\n }\n\n self.loadData = function(){\n currentScreen = goals;\n self.data = [];\n\n if(account == ''){\n setTimeout(self.loadData, 200);\n }else{\n self.getMyGoals();\n }\n }\n}","\nfunction headshotScreen(){\n var self = this;\n\n self.screenTitle = \"Upload Headshot\";\n self.associatedNavItem = \"navMyAccount\";\n\n self.uploadHeadshot = function(){\n $.when($uploadCrop.croppie('result',{\n type: 'base64',\n size: {width: 200, height: 200},\n circle: false\n }))\n .done(\n function(data){\n if(document.getElementById('fileUpload').files.length > 0){\n var fileName = document.getElementById('fileUpload').files[0].name;\n } else {\n var fileName = 'none';\n }\n var base64 = data.substring(22);\n var imageType = 'png';\n xmlQuery(xml.create('iSalusExternal.SaveHeadshot')(fileName, imageType, base64), self.refreshAfterUpload);\n }\n );\n }\n\n self.refreshAfterUpload = function(xmlDoc){\n common.hasRendered = false;\n common.buttonDataUpdated('saveHeadshotButton');\n xmlQuery(xml.create('iSalusExternal.GetAccount'), common.showProfile);\n }\n\n self.updateImage = function(xmlDoc) {\n var imageType = $(xmlDoc).find('image_type').text().toLowerCase();\n var base64encoded = 'data:image/' + imageType + ';base64,' + $(xmlDoc).find('base64').text();\n $.when($('#croppieContainer').croppie('bind', {\n url: base64encoded\n })).done(function(){\n $('#croppieContainer').croppie('setZoom', 0);\n });\n }\n\n self.showImage = function(xmlDoc){\n if(currentUser.imageId != ''){\n xmlQuery(xml.create('iSalusExternal.GetImage')(currentUser.imageId), self.updateImage);\n } else {\n $.when($('#croppieContainer').croppie('bind', {\n url: './resources/images/200.png'\n })).done(function(){\n $('#croppieContainer').croppie('setZoom', 0);\n });\n }\n }\n\n self.loadData = function(){\n currentScreen = headshot;\n\n self.showImage();\n }\n}","\nfunction heightScreen(){\n var self = this;\n\n self.screenTitle = \"Height\";\n self.associatedNavItem = \"navMyVitals\";\n\n self.data = [];\n\n self.updateHeight = function(xmlDoc) {\n var html = \"\";\n var template = '{1}{0}{2}{3}';\n\n updateChart(xmlDoc);\n\n $(xmlDoc).find('list_item').each(function () {\n var date = $(this).find('height_date').text();\n var time = $(this).find('encounter_date_time').text();\n var height = $(this).find('height_data').text();\n var heightFt = $(this).find('height_ft').text();\n var heightIn = $(this).find('height_in').text();\n var from = $(this).find('self_reported').text();\n var journalId = $(this).find('journal_id').text();\n var note = $(this).find('note').text();\n var databaseTitle = $(this).find('database_title').text();\n var reported = from == 'Y' ? 'Self-Reported' : databaseTitle;\n self.data.push([journalId, time.split(' ')[0], heightFt, heightIn, note]);\n html += template.format(date, height, note, reported, journalId);\n });\n\n if(html == ''){\n document.getElementById('noHeight').style.display = 'inherit';\n document.getElementById('table').style.display = 'none';\n document.getElementById('height').style.display = 'none';\n } else {\n document.getElementById('noHeight').style.display = 'none';\n document.getElementById('table').style.display = 'table';\n document.getElementById('height').style.display = 'inherit';\n }\n\n document.getElementById('height-table').innerHTML = html;\n }\n\n self.editHeight = function(journalId){\n document.getElementById('popup').style.display = 'inherit';\n document.getElementById('cover').style.display = 'inherit';\n \n for(var i = 0; i < self.data.length; i++){\n if(self.data[i][0] == journalId){\n document.getElementById('journalId').value = self.data[i][0];\n document.getElementById('heightFt').value = self.data[i][2];\n document.getElementById('heightIn').value = self.data[i][3];\n document.getElementById('note').value = self.data[i][4];\n document.getElementById('encounterDateTime').value = self.data[i][1];\n break;\n }\n }\n }\n\n self.newHeight = function(){\n document.getElementById('popup').style.display = 'inherit';\n document.getElementById('cover').style.display = 'inherit';\n document.getElementById('journalId').value = '';\n document.getElementById('heightFt').value = '';\n document.getElementById('heightIn').value = '';\n document.getElementById('note').value = '';\n document.getElementById('encounterDateTime').value = common.getDateString();\n }\n\n self.deleteHeight = function(){\n var journalId = document.getElementById('deleteJournalId').value;\n\n for(var i = 0; i < self.data.length; i++){\n if(self.data[i][0] == journalId){\n var encounterDate = self.data[i][1];\n break;\n }\n }\n\n xmlQuery(xml.create('iSalusExternal.SaveJournalHeight')(account, journalId, '1', '1', '', encounterDate, 'Y'), common.refresh);\n }\n\n self.deleteConfirmation = function(id){\n document.getElementById('deleteJournalId').value = id;\n document.getElementById('popup-confirmation').style.display = 'inherit';\n document.getElementById('cover').style.display = 'inherit';\n }\n\n self.saveHeight = function(){\n\n var errorFlag = {'error': false};\n\n var journalId = document.getElementById('journalId').value;\n var heightFt = common.validateCustomField('heightFt', 'heightFtError', errorFlag, function(x){return x <= 9 && x >= 0}, 'Not a valid height.');\n var heightIn = common.validateCustomField('heightIn', 'heightInError', errorFlag, function(x){return x < 12 && x >= 0}, 'Not a valid height.');\n var note = document.getElementById('note').value;\n var encounterDateTime = common.validateDateField('encounterDateTime', 'encounterDateTimeError', errorFlag);\n\n if(!errorFlag.error){\n xmlQuery(xml.create('iSalusExternal.SaveJournalHeight')(account, journalId, Math.floor(heightFt), Math.floor(heightIn), note, encounterDateTime, 'N'), common.refresh)\n }\n }\n\n self.loadData = function(){\n currentScreen = journalHeight;\n self.data = [];\n\n if(account == ''){\n setTimeout(self.loadData, 200);\n }else{\n xmlQuery(xml.create('iSalusExternal.GetJournalHeight')(account), self.updateHeight);\n }\n }\n}","\nfunction historyScreen(){\n var self = this;\n\n self.screenTitle = \"Family History\";\n self.associatedNavItem = \"navAboutMe\";\n\n self.updateHistory = function(xmlDoc) {\n var html = \"\";\n var template = '{1}{0}{2}';\n\n $(xmlDoc).find('list_item').each(function () {\n html += template.format(\n $(this).find('relationship_desc').text(), \n $(this).find('condition_desc').text(), \n $(this).find('note').text(), $(this).find('history_id').text(), \n account\n );\n });\n\n if(html == ''){\n document.getElementById('noHistory').style.display = 'inherit';\n document.getElementById('table').style.display = 'none';\n } else {\n document.getElementById('noHistory').style.display = 'none';\n document.getElementById('table').style.display = 'table';\n }\n document.getElementById('history-table').innerHTML = html;\n }\n\n self.showHistory = function(xmlDoc){\n document.getElementById('popup').style.display = 'inherit';\n document.getElementById('cover').style.display = 'inherit';\n var code = $(xmlDoc).find('relationship_code').text();\n var select = document.getElementById('relationshipCode');\n for(var i = 0; i < select.length; i++){\n var option = select.options[i];\n if(code == option.value){\n select.selectedIndex = i;\n break;\n }\n }\n var id = $(xmlDoc).find('family_history_id').text();\n var select = document.getElementById('conditionDropdown');\n for(var i = 0; i < select.length; i++){\n var option = select.options[i];\n if(id == option.value){\n select.selectedIndex = i;\n break;\n }\n }\n\n document.getElementById('historyId').value = $(xmlDoc).find('history_id').text();\n document.getElementById('note').value = $(xmlDoc).find('note').text();\n }\n\n self.newHistory = function(){\n document.getElementById('popup').style.display = 'inherit';\n document.getElementById('cover').style.display = 'inherit';\n document.getElementById('historyId').value = '';\n document.getElementById('note').value = '';\n document.getElementById(\"relationshipCode\").selectedIndex = 0;\n document.getElementById(\"conditionDropdown\").selectedIndex = 0;\n }\n\n self.removeFromDatabase = function(xmlDoc){\n var historyId = $(xmlDoc).find('history_id').text();\n var relationshipCode = $(xmlDoc).find('relationship_code').text();\n var familyHistoryId = $(xmlDoc).find('family_history_id').text();\n\n xmlQuery(xml.create('iSalusExternal.SaveFamilyHistory')(historyId, relationshipCode, familyHistoryId, '', 'Y'), common.refresh);\n }\n\n self.deleteHistory = function(){\n var id = document.getElementById('deleteHistoryId').value;\n xmlQuery(xml.create('iSalusExternal.GetFamilyHistory')(id), self.removeFromDatabase);\n }\n\n self.deleteConfirmation = function(id){\n document.getElementById('deleteHistoryId').value = id;\n document.getElementById('popup-confirmation').style.display = 'inherit';\n document.getElementById('cover').style.display = 'inherit';\n }\n\n self.saveHistory = function(){\n var historyId = document.getElementById('historyId').value;\n var relationshipCode = $(\"#relationshipCode\").val();\n var familyHistoryId = $(\"#conditionDropdown\").val();\n var note = document.getElementById('note').value;\n\n xmlQuery(xml.create('iSalusExternal.SaveFamilyHistory')(historyId, relationshipCode, familyHistoryId, note, 'N'), common.refresh)\n }\n\n self.editHistory = function(id){\n xmlQuery(xml.create('iSalusExternal.GetFamilyHistory')(id), self.showHistory);\n }\n\n self.loadData = function(){\n currentScreen = familyHistory;\n xmlQuery(xml.create('iSalusExternal.GetFamilyHistoryList'), self.updateHistory);\n xmlQuery(xml.create('iSalusExternal.GetFamilyHistoryItems'), common.renderDropdown('conditionDropdown'));\n }\n}","\nfunction lifestyleScreen(){\n var self = this;\n\n self.screenTitle = \"Lifestyle\";\n self.associatedNavItem = \"navAboutMe\";\n\n self.count = 0;\n\n self.updateTobacco = function(xmlDoc){\n document.getElementById('noTobaccoInd').value = $(xmlDoc).find('no_tobacco_ind').text();\n document.getElementById('smokeInd').value = $(xmlDoc).find('smoke_ind').text();\n document.getElementById('smokePacksPerDay').value = $(xmlDoc).find('smoke_packs_per_day').text();\n document.getElementById('smokeYears').value = $(xmlDoc).find('smoke_years').text();\n document.getElementById('cigarInd').value = $(xmlDoc).find('cigar_ind').text();\n document.getElementById('cigarPerDay').value = $(xmlDoc).find('cigar_per_day').text();\n document.getElementById('cigarYears').value = $(xmlDoc).find('cigar_years').text();\n document.getElementById('dipInd').value = $(xmlDoc).find('dip_ind').text();\n document.getElementById('dipCanPerDay').value = $(xmlDoc).find('dip_can_per_day').text();\n document.getElementById('dipYears').value = $(xmlDoc).find('dip_years').text();\n\n self.updateSpans();\n }\n\n self.updateAlcohol = function(xmlDoc){\n document.getElementById('noAlcoholInd').value = $(xmlDoc).find('no_alcohol_ind').text();\n document.getElementById('drinksPerWeek').value = $(xmlDoc).find('drink_per_week').text();\n document.getElementById('drinkYears').value = $(xmlDoc).find('drink_years').text();\n\n self.updateSpans();\n }\n\n self.updateCaffeine = function(xmlDoc){\n document.getElementById('coffeeInd').value = $(xmlDoc).find('coffee_ind').text();\n document.getElementById('coffeeCupsPerDay').value = $(xmlDoc).find('coffee_cups_per_day').text();\n document.getElementById('colaInd').value = $(xmlDoc).find('cola_ind').text();\n document.getElementById('colaCansPerDay').value = $(xmlDoc).find('cola_cans_per_day').text();\n document.getElementById('teaInd').value = $(xmlDoc).find('tea_ind').text();\n document.getElementById('teaCupsPerDay').value = $(xmlDoc).find('tea_cups_per_day').text();\n\n self.updateSpans();\n }\n\n self.updateExercise = function(xmlDoc){\n document.getElementById('exercise1').value = $(xmlDoc).find('excercise_1').text();\n document.getElementById('exercise1Times').value = $(xmlDoc).find('excercise_1_times').text();\n document.getElementById('exercise2').value = $(xmlDoc).find('excercise_2').text();\n document.getElementById('exercise2Times').value = $(xmlDoc).find('excercise_2_times').text();\n document.getElementById('exercise3').value = $(xmlDoc).find('excercise_3').text();\n document.getElementById('exercise3Times').value = $(xmlDoc).find('excercise_3_times').text();\n\n self.updateSpans();\n }\n\n self.updateDrugs = function(xmlDoc){\n document.getElementById('noDrugsInd').value = $(xmlDoc).find('no_drugs_ind').text();\n document.getElementById('cocaineInd').value = $(xmlDoc).find('cocaine_ind').text();\n document.getElementById('heroinInd').value = $(xmlDoc).find('heroin_ind').text();\n document.getElementById('marijuanaInd').value = $(xmlDoc).find('marijuana_ind').text();\n document.getElementById('steroidInd').value = $(xmlDoc).find('steroid_ind').text();\n document.getElementById('painKillerInd').value = $(xmlDoc).find('pain_killer_ind').text();\n document.getElementById('ecstasyInd').value = $(xmlDoc).find('ectasy_ind').text();\n document.getElementById('otherInd').value = $(xmlDoc).find('other_ind').text();\n document.getElementById('otherDrugs').value = $(xmlDoc).find('other_drugs').text();\n\n self.updateSpans();\n }\n\n self.updateSpans = function(){\n $spans.each(function() {\n var $this = $(this);\n $sibling = $this.siblings(\".toggleable\");\n if($sibling[0].tagName == \"INPUT\"){\n $this.text($sibling.val());\n }else{\n $this.text($sibling.find(\":selected\").text());\n }\n });\n }\n\n self.resetFields = function(xmlDoc){\n $inputs.each(function() {\n var $this = $(this);\n $this.hide().siblings(\"span\").show();\n });\n\n self.loadData();\n }\n\n self.waitForReload = function(xmlDoc){\n if(self.count >= 4){\n self.count = 0;\n $inputs.each(function() {\n var $this = $(this);\n $this.hide().siblings(\"span\").text($this.val()).show();\n });\n\n common.buttonDataUpdated('saveLifestyleButton');\n\n self.loadData();\n } else {\n self.count += 1;\n }\n }\n\n self.saveLifestyle = function(){\n var noTobaccoInd = document.getElementById('noTobaccoInd').value;\n var smokeInd = document.getElementById('smokeInd').value;\n var smokePacksPerDay = document.getElementById('smokePacksPerDay').value;\n var smokeYears = document.getElementById('smokeYears').value;\n var cigarInd = document.getElementById('cigarInd').value;\n var cigarPerDay = document.getElementById('cigarPerDay').value;\n var cigarYears = document.getElementById('cigarYears').value;\n var dipInd = document.getElementById('dipInd').value;\n var dipCanPerDay = document.getElementById('dipCanPerDay').value;\n var dipYears = document.getElementById('dipYears').value;\n\n var noAlcoholInd = document.getElementById('noAlcoholInd').value;\n var alcoholInd = noAlcoholInd == 'Y' ? 'N' : 'Y';\n var drinksPerWeek = document.getElementById('drinksPerWeek').value;\n var drinkYears = document.getElementById('drinkYears').value;\n\n var coffeeInd = document.getElementById('coffeeInd').value;\n var coffeeCupsPerDay = document.getElementById('coffeeCupsPerDay').value;\n var colaInd = document.getElementById('colaInd').value;\n var colaCansPerDay = document.getElementById('colaCansPerDay').value;\n var teaInd = document.getElementById('teaInd').value;\n var teaCupsPerDay = document.getElementById('teaCupsPerDay').value;\n\n var exercise1 = document.getElementById('exercise1').value;\n var exercise1Times = document.getElementById('exercise1Times').value;\n var exercise2 = document.getElementById('exercise2').value;\n var exercise2Times = document.getElementById('exercise2Times').value;\n var exercise3 = document.getElementById('exercise3').value;\n var exercise3Times = document.getElementById('exercise3Times').value;\n\n var noDrugsInd = document.getElementById('noDrugsInd').value;\n var cocaineInd = document.getElementById('cocaineInd').value;\n var heroinInd = document.getElementById('heroinInd').value;\n var marijuanaInd = document.getElementById('marijuanaInd').value;\n var steroidInd = document.getElementById('steroidInd').value;\n var painKillerInd = document.getElementById('painKillerInd').value;\n var ecstasyInd = document.getElementById('ecstasyInd').value;\n var otherInd = document.getElementById('otherInd').value;\n var otherDrugs = document.getElementById('otherDrugs').value;\n\n common.saveButton('saveLifestyleButton');\n\n xmlQuery(xml.create('iSalusExternal.SaveLifestyle')('tobacco')(noTobaccoInd, smokeInd, smokePacksPerDay, smokeYears, cigarInd, cigarPerDay, cigarYears, dipInd, dipCanPerDay, dipYears), self.waitForReload);\n xmlQuery(xml.create('iSalusExternal.SaveLifestyle')('alcohol')(noAlcoholInd, alcoholInd, drinksPerWeek, drinkYears), self.waitForReload);\n xmlQuery(xml.create('iSalusExternal.SaveLifestyle')('caffeine')(coffeeInd, coffeeCupsPerDay, colaInd, colaCansPerDay, teaInd, teaCupsPerDay), self.waitForReload);\n xmlQuery(xml.create('iSalusExternal.SaveLifestyle')('excercise')(exercise1, exercise1Times, exercise2, exercise2Times, exercise3, exercise3Times), self.waitForReload);\n xmlQuery(xml.create('iSalusExternal.SaveLifestyle')('recreational drugs')(noDrugsInd, cocaineInd, heroinInd, marijuanaInd, steroidInd, painKillerInd, ecstasyInd, otherInd, otherDrugs), self.waitForReload);\n }\n\n self.loadData = function(){\n currentScreen = lifestyle;\n xmlQuery(xml.create('iSalusExternal.GetLifestyle')('tobacco'), self.updateTobacco);\n xmlQuery(xml.create('iSalusExternal.GetLifestyle')('alcohol'), self.updateAlcohol);\n xmlQuery(xml.create('iSalusExternal.GetLifestyle')('caffeine'), self.updateCaffeine);\n xmlQuery(xml.create('iSalusExternal.GetLifestyle')('excercise'), self.updateExercise);\n xmlQuery(xml.create('iSalusExternal.GetLifestyle')('recreational drugs'), self.updateDrugs);\n }\n}","function mainScreen() {\n var self = this;\n\n self.screenTitle = \"Dashboard\";\n self.associatedNavItem = \"navDashboard\";\n self.associatedMobileNavItem = \"mobileDash\";\n\n self.showFamily = false;\n self.accountCreateId = '';\n\n self.databaseKey = '';\n self.databases = [];\n self.totalBalance = 0;\n self.totalPaymentPlans = 0;\n self.totalDatabases = 0;\n self.sendToMMLWeb = true;\n\n self.addFamilyMember = function () {\n\n var errorFlag = {\n 'error': false\n };\n\n var firstName = common.validateNameField('firstName', 'firstNameError', errorFlag);\n var lastName = common.validateNameField('lastName', 'lastNameError', errorFlag);\n var birthDate = common.validateDateField('birthDate', 'birthDateError', errorFlag);\n var relationshipCode = $('#relationshipCode').val();\n\n if ($('#familyMemberCreateLogin').prop('checked')) {\n if (self.accountCreateId == '') {\n if (!errorFlag.error) {\n\n validateEmail = function (email) {\n var re = /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\n return re.test(email);\n }\n\n validatePhone = function (phone) {\n var re = /^(\\+\\d{1,2}\\s)?\\(?\\d{3}\\)?[\\s.-]?\\d{3}[\\s.-]?\\d{4}$/;\n return re.test(phone);\n }\n\n var email = '';\n var phone = '';\n\n var userId = $('#registrationEmail').val();\n\n if (validateEmail(userId)) {\n email = userId;\n } else if (validatePhone(userId)) {\n phone = userId;\n } else {\n $(\"#registrationEmailError\").html('You must enter an email address or a phone number.');\n errorFlag.error = true;\n }\n\n if (!errorFlag.error) {\n xmlQuery(xml.create('iSalusExternal.AddFamilyMember')(firstName, lastName, birthDate, relationshipCode), self.createFamilyLogin);\n }\n }\n } else {\n self.createFamilyLogin(false, self.accountCreateId);\n }\n } else {\n if (!errorFlag.error) {\n common.hasRendered = false;\n xmlQuery(xml.create('iSalusExternal.AddFamilyMember')(firstName, lastName, birthDate, relationshipCode), self.handleFamilyMember);\n }\n }\n }\n\n self.handleFamilyMember = function (xmlDoc) {\n self.switchUser($(xmlDoc).find('account_id').text());\n }\n\n self.createFamilyLogin = function (xmlDoc, id) {\n var accountId = $(xmlDoc).find('account_id').text() || id;\n\n self.accountCreateId = accountId;\n\n if (accountId != '') {\n var xml2 = new XmlCreator(key);\n\n var email = '';\n var phone = '';\n\n var userId = $('#registrationEmail').val();\n\n if (validateEmail(userId)) {\n email = userId;\n } else if (validatePhone(userId)) {\n phone = userId;\n } else {\n $(\"#registrationEmailError\").html('You must enter an email address or a phone number.');\n }\n\n common.hasRendered = false;\n\n if (self.sendToMMLWeb) {\n const post_data = {\n \"system\": \"\",\n \"accountId\": accountId,\n \"email\": email,\n \"phone\": phone\n }\n postChoiceApiEndpoint(\"Account\", \"CreateFamilyLogin\", post_data)\n .then (data => {\n if (data.successful == true) {\n securityscreen.loginCreateSuccessEx(accountId, data.resetId);\n }\n else {\n common.displayError('familyMemberWebserviceError', data.responseMessage ?? \"Failed to create the login.\");\n }\n }); \n }\n else {\n xmlQuery(xml2.create('iSalusExternal.FamilyMemberCreateLoginEx')(accountId, email, phone, '', ''), securityscreen.loginCreateSuccess, common.webserviceError('familyMemberWebserviceError'));\n }\n }\n }\n\n self.familyInfoToggle = function () {\n if ($('#familyMemberCreateLogin').prop('checked')) {\n $('#familyMemberExtraInfo').css('display', 'inherit');\n } else {\n $('#familyMemberExtraInfo').css('display', 'none');\n }\n }\n\n self.showFamilyModal = function () {\n self.accountCreateId = '';\n $('#popup').fadeIn();\n $('.sidebar').removeClass('is-open');\n $('.menu-cover').fadeOut();\n $('#cover').fadeIn();\n $('#firstName').val('');\n $('#lastName').val('');\n $('#birthDate').val('');\n $('#familyMemberCreateLogin').prop('checked', false);\n self.familyInfoToggle();\n document.getElementById('relationshipCode').selectedIndex = 0;\n }\n\n self.updateData = function (xmlDoc) {\n var listTemplate = '
  • {1} {2}
  • ';\n var listString = listTemplate.format(mainUser.accountId, mainUser.firstName, mainUser.lastName);\n\n $(xmlDoc).find('list_item').each(function () {\n var accountId = $(this).find('account_id').text();\n var firstName = $(this).find('first_name').text();\n var lastName = $(this).find('last_name').text();\n listString += listTemplate.format(accountId, firstName, lastName);\n });\n\n $('#familyList').html(listString);\n }\n\n self.switchUser = function (accountId) {\n account = accountId;\n xml.setAccount(account);\n xmlQuery(xml.create('iSalusExternal.GetAccount'), common.showProfile, logOut);\n }\n\n self.updateList = function (listId, tagName) {\n return function (xmlDoc) {\n var listString = \"\";\n\n $(xmlDoc).find('list_item').each(function () {\n listString += '
  • ' + $(this).find(tagName).text() + '
  • ';\n });\n\n if (listString == '') {\n $('#' + listId).html('

    You have no ' + (listId == 'allergyList' ? listId.split('yList').join('ies') : listId.split('List').join('s') + '

    '))\n } else {\n $('#' + listId).html(listString);\n }\n\n\n }\n }\n\n self.updateintakeList = function (listId, tagName) {\n return function (xmlDoc) {\n var listString = \"\";\n var newIntakeCount = 0;\n\n\n $(xmlDoc).find('intake_item').each(function () {\n\n var id = $(this).find(\"mml_intake_id\").text();\n var title = $(this).find(\"intake_name\").text().i_replace(\"'\", \"\\\\'\");\n var instructions = $(this).find(\"intake_instructions\").text().i_replace(\"'\", \"\\\\'\");\n var date = $(this).find(\"intake_due\").text();\n var practice = $(this).find(\"database_title\").text();\n var intakeStatus = $(this).find('intake_status').text();\n if (intakeStatus == 'New') {\n listString += '
  • ' + '

    ' + '

    ' + $(this).find(tagName).text() + '

    ' + '
  • ';\n newIntakeCount++;\n }\n\n });\n if (newIntakeCount > 0 && newIntakeCount != 1) {\n $(\"#formCount\").text(newIntakeCount + \" New Forms\");\n } else if (newIntakeCount === 1) {\n $(\"#formCount\").text(newIntakeCount + \" New Form\");\n } else {\n $(\"#formCount\").text(\"No New Forms\");\n\n }\n $('#formDate').text('as of ' + common.getDateString());\n if (listString == '') {\n $('#' + listId).html('

    You have no current forms

    ');\n } else {\n $('#' + listId).html(listString);\n\n } \n }\n }\n\n self.updateAnnouncements = function (listId) {\n return function (xmlDoc) {\n var listString = \"\";\n\n $(xmlDoc).find('list_item').each(function () {\n listString += '
  • ' + $(this).find('message_name').text() + '
  • ';\n });\n\n if (listString == '') {\n $('#' + listId).html('

    You have no Announcements

    ')\n } else {\n $('#' + listId).html(listString);\n }\n }\n }\n\n\n self.updateGoalList = function (listId) {\n return function (xmlDoc) {\n var listString = \"\";\n\n $(xmlDoc).find('list_item').each(function () {\n if ($(this).find('goal_name').text() != '') {\n listString += '
  • ' + $(this).find('goal_name').text() + '

  • ';\n }\n });\n\n if (listString == '') {\n $('#' + listId).html('

    You have no Practice Goals

    ')\n } else {\n $('#' + listId).html(listString);\n }\n }\n }\n\n self.updateMedicationsList = function (listId, tagName) {\n return function (xmlDoc) {\n var listString = \"\";\n\n $(xmlDoc).find('list_item').each(function () {\n if ($(this).find('stopped_ind').text() == 'N') {\n listString += '
  • ' + $(this).find(tagName).text() + '
  • ';\n }\n });\n\n if (listString == '') {\n $('#' + listId).html('

    You have no medications

    ')\n } else {\n $('#' + listId).html(listString);\n }\n }\n }\n\n self.getChart = function (xmlDoc) {\n var accountId = $(xmlDoc).find('account_id').first().text();\n if (typeof updateChart === \"function\" && typeof updateBloodChart === \"function\") {\n xmlQuery(xml.create('iSalusExternal.GetJournalWeight')(accountId), updateChart);\n xmlQuery(xml.create('iSalusExternal.GetJournalBP')(accountId), updateBloodChart);\n }\n }\n\n self.updateBalanceDisplay = function (key, name, balance, index) {\n return function (xmlDoc) {\n self.totalDatabases+= 1\n // Check if the balance key is empty \n if (self.databases[index].balance === \"\") {\n self.databases[index].balance = $(xmlDoc).find('patient_balance').first().text();\n if ($(xmlDoc).find('patient_balance').first().text() === \"\") {\n self.databases[index].balance = 0;\n }\n } \n if (self.databases[index].paymentPlans === \"\") { \n self.databases[index].paymentPlans = 0;\n var payment_plan_totals = $(xmlDoc).find('plan_totals').first();\n if (payment_plan_totals) {\n self.databases[index].paymentPlans = parseFloat(payment_plan_totals.text());\n }\n } \n\n // Check if the function has been run the total number\n if (self.totalDatabases === self.databases.length) {\n for (var i = 0; i < self.databases.length; i++) {\n if (self.databases[i].balance === \"NOT_ACTIVE\") {\n self.inactiveDatabases+= 1;\n }\n }\n // Check if the total number of inactive databases matches the length\n if (self.inactiveDatabases === self.databases.length) {\n $(\"#accountBalance\").text(\"Please Contact Your Practice\")\n }\n // If the number of inacive databases does not match the length, change the balance to 0\n if (self.inactiveDatabases < self.databases.length){\n for (var j = 0; j < self.databases.length; j++) {\n if (self.databases[j].balance === \"NOT_ACTIVE\") {\n self.databases[j].balance = 0;\n self.totalBalance += parseFloat(self.databases[j].balance);\n\n } else {\n self.totalBalance += parseFloat(self.databases[j].balance);\n }\n self.totalPaymentPlans += self.databases[j].paymentPlans;\n }\n const balance_display = (self.totalBalance == 0 ? \"No Balance\" : \"$\" + self.totalBalance.toFixed(2));\n $(\"#accountBalance\").text(balance_display);\n if (self.totalPaymentPlans > 0) {\n $(\"#accountPlans\").show();\n const plan_display = \"$\" + (self.totalPaymentPlans == 0 ? \"0.00\" : self.totalPaymentPlans.toFixed(2)) + \" in Payment Plans\";\n $(\"#accountPlans\").text(plan_display);\n }\n else {\n $(\"#accountPlans\").hide();\n }\n } \n }\n } \n }\n \n self.updateBalance = function (xmlDoc) {\n self.totalDatabases = 0;\n self.totalBalance = 0;\n self.totalPaymentPlans = 0;\n\t self.inactiveDatabases = 0;\n self.databaseKey = '';\n self.databases = [];\n var count = 0;\n\n $(xmlDoc).find('list_item').each(function () {\n if ($(this).find('account_id').text() == account) {\n var databaseKey = $(this).find('database_key').text();\n var databaseName = $(this).find('client_name').text();\n\n self.databases.push({key: databaseKey, name: databaseName, balance: \"\", paymentPlans: \"\"});\n \n }\n });\n\n if (self.databases.length > 0) {\n $('#accountBalance').text(\"No Balance\");\n $.each(self.databases, function (index, value) {\n xmlQuery(xml.create('iSalusExternal.GetClaimReport')(value.key), self.updateBalanceDisplay(value.key, value.name, value.balance, index));\n });\n } else {\n $('#accountBalance').text(\"No Balance\");\n }\n\n $('#balanceDate').html('as of ' + common.getDateString());\n }\n\n self.updateBalanceError = function (xmlDoc) {\n $('#accountBalance').text(\"No Balance\");\n\n $('#balanceDate').html('as of ' + common.getDateString());\n }\n\n self.updateMessages = function (xmlDoc) {\n var changed = false;\n\n $(xmlDoc).find('list_item').each(function () {\n if ($(this).find('account_id').text() == account) {\n changed = true;\n\n var count = $(this).find('count').text();\n\n\n if (count == 1) {\n $('#messageCount').text(count); \n $('#newMessages').text('New Message');\n } else if (count == 0) {\n $('#messageCount').text('No');\n $('#newMessages').text('New Messages');\n } else {\n $('#messageCount').text(count);\n $('#newMessages').text('New Messages');\n }\n }\n });\n\n if (!changed) {\n $('#messageCount').text('No');\n $('#newMessages').text('New Messages');\n }\n\n $('#messageDate').html('as of ' + common.getDateString());\n }\n\n self.getDatabaseKey = function (xmlDoc) {\n if ($(xmlDoc).find('list_item').length > 0) {\n var databaseKey = $(xmlDoc).find('database_key').first().text();\n xmlQuery(xml.create('iSalusExternal.GetClaimReport')(databaseKey), self.updateBalance, self.updateBalanceError);\n } else {\n self.updateBalanceError();\n }\n }\n\n self.updateMyChart = function (xmlDoc) {\n var unread = 0;\n var newest = '';\n\n $(xmlDoc).find('list_item').each(function () {\n if (newest == '') {\n newest = $(this).find('post_date_time').text();\n }\n if ($(this).find('read_ind').text() == 'N') {\n unread += 1;\n }\n });\n\n\n\n\n if (unread == 1) {\n $('#myChartUnread').text(unread);\n $('#newItems').text('New Item');\n } else if (unread == 0) {\n $('#myChartUnread').text('');\n $('#newItems').text('No New Items');\n\n } else {\n $('#myChartUnread').text(unread);\n $('#newItems').text('New Items');\n }\n\n if (newest == '') {\n $('#chartText').text('as of');\n $('#chartDate').text(common.getDateString());\n } else {\n $('#chartText').html('newest: ');\n $('#chartDate').text(newest);\n }\n }\n\n self.updateAppointments = function (xmlDoc) {\n if ($(xmlDoc).find('list_item').length > 0) {\n var elem = $(xmlDoc).find('list_item').first();\n $('#appointmentPractice').text($(elem).find('location').text());\n $('#appointmentTime').text($(elem).find('start_time').text());\n $('#appointmentDate').text($(elem).find('long_date').text());\n $('#appointmentDateTime').css('visibility', 'inherit');\n } else {\n $('#appointmentPractice').text('No Scheduled Appointments');\n $('#appointmentDateTime').css('visibility', 'hidden');\n }\n }\n\n self.finishSync = function (xmlDoc) {\n xmlQuery(xml.create('iSalusExternal.GetMessagesCounts'), self.updateMessages);\n xmlQuery(xml.create('iSalusExternal.MyChartList')(''), self.updateMyChart);\n xmlQuery(xml.create('iSalusExternal.GetAppointments')('0'), self.updateAppointments);\n xmlQuery(xml.create(\"iSalusExternal.GetIntakes\")(\"N\"), self.updateintakeList(\"mainintakeList\", \"intake_name\"));\n }\n\n \n\n\n\n self.loadData = function () {\n currentScreen = main;\n\n xmlQuery(xml.create('iSalusExternal.GetAccount'), self.updateData, logOut);\n xmlQuery(xml.create('iSalusExternal.Sync')(['Messages', 'Appointments', 'ClinicalSummary', 'PatientEducation', 'CCMCarePlan', 'Vitals', 'Medications', 'Goals', 'PatientBalance', 'LabResults', 'Intake', 'Statements', 'PatientCostEstimator']), self.finishSync);\n xmlQuery(xml.create('iSalusExternal.GetAllergyList'), self.updateList('allergyList', 'allergy_desc'));\n xmlQuery(xml.create('iSalusExternal.GetConditionList'), self.updateList('conditionList', 'condition_desc'));\n xmlQuery(xml.create('iSalusExternal.GetConditionList'), self.updateList('conditionListNeuro', 'condition_desc'));\n xmlQuery(xml.create('iSalusExternal.GetMedicationList'), self.updateMedicationsList('medicationList', 'med_name'));\n xmlQuery(xml.create('iSalusExternal.GetMedicationList'), self.updateMedicationsList('medicationListNeuro', 'med_name'));\n xmlQuery(xml.create('iSalusExternal.GetAnnouncements'), self.updateAnnouncements('announcementList'));\n xmlQuery(xml.create('iSalusExternal.GetPracticeGoals'), self.updateGoalList('goalList'));\n xmlQuery(xml.create('iSalusExternal.GetJournal'), self.getChart);\n common.getConnection(self.updateBalance);\n\n if (self.showFamily) {\n self.showFamilyModal();\n self.showFamily = false;\n }\n }\n}\n","\nfunction medicationsScreen(){\n var self = this;\n\n self.screenTitle = \"Medications\";\n self.associatedNavItem = \"navAboutMe\";\n\n self.hasInitialized = false;\n self.pharmacySearchInfo = {};\n self.waitingForData = false;\n self.pharmacyList = [];\n self.selectedPharmacy = -1;\n\n \n\n self.updateMedications = function(xmlDoc) {\n var html = \"\";\n //var template = '

    {0}

    {1}

    {2} - {3}

    ';\n html += ''\n var template = '{4}{0}{1}{2}{3}{5}{8}';\n\n $(xmlDoc).find('list_item').each(function () {\n var medName = $(this).find('med_name').text();\n var medFreq = $(this).find('frequency_desc').text();\n var medStarted = ($(this).find('started_value').text() === \"\" ? \"\" : $(this).find('started_value').text() + \" - \");\n var medStopped = ($(this).find('stopped_value').text() === \"\" ? \"Present\" : $(this).find('stopped_value').text());\n var medStopInd = ($(this).find('stopped_ind').text() == \"N\" ? \"

    Current

    \" : \"

    Stopped

    \");\n var medReported = $(this).find('database_title').text();\n var medId = $(this).find('medication_id').text();\n var medDisabled = ($(this).find('stopped_ind').text() == \"N\" ? \"\" : \"class='disabled'\");\n var medDelete = (medReported == 'Self Reported' ? '' : '');\n\n html += template.format(medName, medFreq, medStarted, medStopped, medStopInd, medReported, medId, medDisabled, medDelete);\n });\n if(html === ''){\n document.getElementById('noMeds').style.display = 'inherit';\n document.getElementById('table').style.display = 'none';\n } else {\n document.getElementById('noMeds').style.display = 'none';\n document.getElementById('table').style.display = 'table';\n }\n document.getElementById('medications-table').innerHTML = html;\n }\n\n self.createSelect = function(id, list){\n var html = '';\n var template = '';\n\n for(var i = 0; i < list.length; i++){\n html += template.format(list[i][0], list[i][1]);\n }\n\n var elem = document.getElementById(id);\n elem.innerHTML = html;\n elem.selectedIndex = 0;\n }\n\n self.refillModal = function(){\n $(\"#popup\").fadeOut();\n $(\"#medRefillSearch\").fadeOut();\n self.disableElements();\n $('#medRefill').fadeIn();\n }\n\n self.disableElements = function(){\n $('#refillCity').prop('disabled', true);\n $('#refillZip').prop('disabled', true);\n $('#refillChain').prop('disabled', true);\n $('#refillSearch').prop('disabled', true);\n }\n\n self.searchModal = function(){\n if(self.hasInitialized){\n $(\"#medRefill\").fadeOut();\n self.createSelect('refillState', self.pharmacySearchInfo.stateList);\n $('#refillCity').autocomplete({\n source: self.pharmacySearchInfo.cityList,\n select: self.cityOnSelect\n });\n self.createSelect('refillZip', self.pharmacySearchInfo.zipList);\n document.getElementById('refillZip').value = self.pharmacySearchInfo.zip;\n document.getElementById('refillState').value = self.pharmacySearchInfo.state;\n document.getElementById('refillCity').value = self.pharmacySearchInfo.city;\n self.searchPharmacy();\n document.getElementById('medRefillSearch').style.display = 'inherit';\n document.getElementById('cover').style.display = 'inherit';\n } else {\n self.waitingForData = true;\n }\n }\n\n self.medicationModal = function(){\n $(\"#medRefill\").fadeOut();\n $('#popup').fadeIn();\n $(\"#cover\").fadeIn();\n }\n \n\n self.savePharmacyData = function(xmlDoc){\n self.pharmacySearchInfo.city = $(xmlDoc).find('city').text();\n self.pharmacySearchInfo.state = $(xmlDoc).find('state').text();\n self.pharmacySearchInfo.zip = $(xmlDoc).find('zip').text();\n self.pharmacySearchInfo.zipList = [['', '']];\n self.pharmacySearchInfo.cityList = [];\n self.pharmacySearchInfo.stateList = [];\n\n var stateListElement = $(xmlDoc).find('state_list');\n var cityListElement = $(xmlDoc).find('city_list');\n var zipListElement = $(xmlDoc).find('zip_list');\n\n $(stateListElement).find('list_item').each(function(){\n self.pharmacySearchInfo.stateList.push([$(this).find('encode').text(), $(this).find('encode').text()]);\n });\n $(cityListElement).find('list_item').each(function(){\n self.pharmacySearchInfo.cityList.push($(this).find('encode').text());\n });\n $(zipListElement).find('list_item').each(function(){\n self.pharmacySearchInfo.zipList.push([$(this).find('encode').text(),$(this).find('encode').text()]);\n });\n\n self.hasInitialized = true;\n\n if(self.waitingForData){\n self.waitingForData = false;\n self.searchModal();\n }\n }\n\n self.initializePharmacySearch = function(){\n if(!self.hasInitialized){\n xmlQuery(xml.create('iSalusWindow.Initialize')('medication.pharmacy_search_initialize')(account), self.savePharmacyData);\n }\n }\n\n self.updatePharmacyList = function(list){\n var html = '';\n var template = '

    '+\n '{0}

    {1}

    ';\n\n for(var i = 0; i < list.length; i++){\n html += template.format(list[i][2], list[i][3], i, list[i][7]);\n }\n\n self.selectedPharmacy = -1;\n document.getElementById('pharmacyList').innerHTML = html;\n }\n\n self.pharmacySearch = function(){\n var regex = new RegExp(document.getElementById('refillSearch').value.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, \"\\\\$&\"), 'i');\n var results = [];\n\n for(var i = 0; i < self.pharmacyList.length; i++){\n if(self.pharmacyList[i][2].match(regex)){\n results.push(self.pharmacyList[i]);\n }\n }\n\n self.updatePharmacyList(results);\n }\n\n self.getPharmacyData = function(xmlDoc){\n self.pharmacyList = [];\n\n $(xmlDoc).find('list_item').each(function(){\n var pharmacyId = $(this).find('pharmacy_id').text();\n var sureScriptsPharmacy = $(this).find('sure_scripts_pharmacy').text();\n var pharmacyName = $(this).find('pharmacy_name').text();\n var address = $(this).find('address1').text() + ' ' + $(this).find('address2').text();\n var city = $(this).find('city').text();\n var state = $(this).find('state').text();\n var zipCode = $(this).find('zip_code').text();\n var googleMap = $(this).find('google_map').text();\n\n self.pharmacyList.push([pharmacyId, sureScriptsPharmacy, pharmacyName, address, city, state, zipCode, googleMap]);\n });\n\n self.updatePharmacyList(self.pharmacyList);\n }\n\n self.choosePharmacy = function(){\n document.getElementById('refillPharmacy').value = self.pharmacyList[self.selectedPharmacy][2];\n medications.refillModal();\n }\n\n self.selectPharmacy = function(elem, index){\n $('.pharm-list__item').each(function(){\n $(this).removeClass('active');\n })\n\n $(elem).addClass('active');\n\n self.selectedPharmacy = index;\n }\n\n self.searchPharmacy = function(){\n var state = document.getElementById('refillState').value;\n var city = document.getElementById('refillCity').value;\n var zip = document.getElementById('refillZip').value;\n var chain = document.getElementById('refillChain').value;\n var key = document.getElementById('refillDatabaseKey').value;\n\n if(state != ''){\n xmlQuery(xml.create('iSalusWindow.InitializeEMR')('MML.pharmacy_search')(account, currentUser.firstName + ' ' + currentUser.lastName, key, state, city, zip, chain), self.getPharmacyData);\n }\n }\n\n self.showRefillResponse = function(xmlDoc){\n common.closeModals();\n document.getElementById('refillRequestResponse').innerHTML = $(xmlDoc).find('message_response').text();\n document.getElementById('popupRefillResponse').style.display = 'inherit';\n document.getElementById('cover').style.display = 'inherit';\n }\n\n self.sendRefillRequest = function(){\n var key = document.getElementById('refillDatabaseKey').value;\n var name = currentUser.firstName + ' ' + currentUser.lastName;\n var prescriptionId = document.getElementById('refillPrescriptionId').value;\n var medName = document.getElementById('refillName').value;\n var pharmacyDescription = self.pharmacyList[self.selectedPharmacy][2];\n var pharmacyId = self.pharmacyList[self.selectedPharmacy][0];\n var note = document.getElementById('refillNote').value;\n var phone = document.getElementById('refillPhone').value;\n var other = document.getElementById('refillOther').value;\n\n xmlQuery(xml.create('iSalusWindow.InitializeEMR')('MML.message_send_refill')(account, name, key, prescriptionId, medName, pharmacyDescription, pharmacyId, note, phone, other), self.showRefillResponse);\n }\n\n self.cityOnSelect = function(event, ui){\n $('#refillSearch').prop('disabled', false);\n $('#refillChain').prop('disabled', false);\n $('#refillZip').prop('disabled', false);\n $('#refillZip').val('');\n $(this).val(ui.item.value);\n self.searchPharmacy();\n\n var key = document.getElementById('refillDatabaseKey').value;\n var state = $('#refillState').val();\n xmlQuery(xml.create('iSalusExternal.PharmacyChains')(key, state, ui.item.value, ''), self.updatePharmacyChains);\n xmlQuery(xml.create('iSalusWindow.Initialize')('medication.pharmacy_search_city')(state, ui.item.value), self.updateZipList);\n }\n\n self.updateCityList = function(xmlDoc){\n $('#refillCity').prop('disabled', false);\n\n var cityListElement = $(xmlDoc).find('city_list');\n var cityData = [];\n\n $('#refillCity').val('');\n\n $(cityListElement).find('list_item').each(function(){\n cityData.push($(this).find('encode').text());\n });\n\n $('#refillCity').autocomplete({\n source: cityData,\n select: self.cityOnSelect\n });\n }\n\n self.updateZipList = function(xmlDoc){\n var zipListElement = $(xmlDoc).find('zip_list');\n var zipData = [['','']];\n\n $(zipListElement).find('list_item').each(function(){\n zipData.push([$(this).find('encode').text(), $(this).find('encode').text()]);\n });\n\n self.createSelect('refillZip', zipData);\n document.getElementById('refillZip').selectedIndex = 0;\n }\n\n self.updatePharmacyChains = function(xmlDoc){\n var chainListElement = $(xmlDoc).find('chain_list');\n var chainData = [['','']];\n\n $(chainListElement).find('list_item').each(function(){\n chainData.push([$(this).find('encode').text(), $(this).find('decode').text()]);\n });\n\n self.createSelect('refillChain', chainData);\n document.getElementById('refillChain').selectedIndex = 0;\n }\n\n self.getCities = function(state){\n self.disableElements();\n $('#refillCity').val('')\n $('#refillZip').val('')\n xmlQuery(xml.create('iSalusWindow.Initialize')('medication.pharmacy_search_state')(state), self.updateCityList);\n }\n\n self.showMedication = function(xmlDoc){\n document.getElementById('medName').value = $(xmlDoc).find('med_name').text();\n document.getElementById('refillName').value = $(xmlDoc).find('med_name').text();\n document.getElementById('refillPractice').value = $(xmlDoc).find('database_title').text();\n document.getElementById('refillDatabaseKey').value = $(xmlDoc).find('database_key').text();\n document.getElementById('refillPrescriptionId').value = $(xmlDoc).find('prescription_id').text();\n document.getElementById('medDose').value = $(xmlDoc).find('dose_quantity').text();\n var startedType = $(xmlDoc).find('started_type').text();\n var stoppedType = $(xmlDoc).find('stopped_type').text();\n var prescriptionRxStatusCode = $(xmlDoc).find('prescription_rx_status_code').text();\n if(startedType == 'A'){\n var select = document.getElementById('Astarted');\n var startedValue = $(xmlDoc).find('started_value').text();\n for(var i = 0; i < select.length; i++){\n var option = select.options[i];\n if(startedValue == option.value){\n select.selectedIndex = i;\n break;\n }\n }\n }else{\n document.getElementById(startedType+'started').value = $(xmlDoc).find('started_value').text();\n }\n common.showField(startedType, 'started');\n if(stoppedType == 'A'){\n var select = document.getElementById('Astopped');\n var stoppedValue = $(xmlDoc).find('stopped_value').text()\n for(var i = 0; i < select.length; i++){\n var option = select.options[i];\n if(stoppedValue == option.value){\n select.selectedIndex = i;\n break;\n }\n }\n }else{\n document.getElementById(stoppedType+'stopped').value = $(xmlDoc).find('stopped_value').text();\n }\n common.showField(stoppedType, 'stopped');\n $(\"input[name=startDateType]\").val([startedType]);\n $(\"input[name=stoppedDateType]\").val([stoppedType]);\n var frequencyCode = $(xmlDoc).find('frequency_code').text();\n var select = document.getElementById('medFrequency');\n select.value = frequencyCode;\n\n if(prescriptionRxStatusCode == '2' || prescriptionRxStatusCode == '5'){\n self.initializePharmacySearch();\n self.toggleDisabledFields(true);\n } else {\n self.toggleDisabledFields(false);\n }\n\n document.getElementById('medicationId').value = $(xmlDoc).find('medication_id').text();\n document.getElementById('modalEditType').innerText = \"Edit\";\n self.medicationModal();\n }\n\n self.toggleDisabledFields = function(boolean){\n $('.disableable').each(function(){\n $(this).prop('disabled', boolean);\n });\n\n document.getElementById('refillButton').style.display = boolean ? 'inherit' : 'none';\n }\n\n self.newMedication = function(){\n document.getElementById('refillButton').style.display = 'none';\n document.getElementById('medicationId').value = '';\n document.getElementById('medName').value = '';\n document.getElementById('medDose').value = '';\n document.getElementById('medFrequency').selectedIndex = 0;\n $(\"input[name=startDateType]\").val(['Y']);\n common.showField('Y', 'started');\n document.getElementById('Astarted').selectedIndex = 0;\n document.getElementById('Dstarted').value = '';\n document.getElementById('Ystarted').value = '';\n $(\"input[name=stoppedDateType]\").val(['Y']);\n common.showField('Y', 'stopped');\n document.getElementById('Astopped').selectedIndex = 0;\n document.getElementById('Dstopped').value = '';\n document.getElementById('Ystopped').value = '';\n document.getElementById('modalEditType').innerText = \"Add a\";\n self.toggleDisabledFields(false);\n self.medicationModal();\n }\n\n self.removeFromDatabase = function(xmlDoc){\n var medicationId = $(xmlDoc).find('medication_id').text();\n var medName = $(xmlDoc).find('med_name').text();\n\n xmlQuery(xml.create('iSalusExternal.SaveMedication')(medicationId, medName, '', '', '', '', '', '', 'Y'), common.refresh);\n }\n\n self.deleteMedication = function(){\n var id = document.getElementById('deleteMedicationId').value;\n xmlQuery(xml.create('iSalusExternal.GetMedication')(id), self.removeFromDatabase);\n }\n\n self.deleteConfirmation = function(id){\n document.getElementById('deleteMedicationId').value = id;\n document.getElementById('popup-confirmation').style.display = 'inherit';\n document.getElementById('cover').style.display = 'inherit';\n }\n\n self.saveMedication = function(){\n\n var errorFlag = {'error': false};\n\n var medicationId = document.getElementById('medicationId').value;\n var medName = common.validateNotEmpty('medName', 'medNameError', errorFlag);\n var doseQuantity = document.getElementById('medDose').value;\n var frequencyCode = $('#medFrequency').val();\n var startedType = $(\"input[name=startDateType]:checked\").val()\n var startedValue = document.getElementById(startedType+'started').value;\n var stoppedType = $(\"input[name=stoppedDateType]:checked\").val();\n var stoppedValue = document.getElementById(stoppedType+'stopped').value;\n\n if(!errorFlag.error){\n xmlQuery(xml.create('iSalusExternal.SaveMedication')(medicationId, medName, doseQuantity, frequencyCode, startedType, startedValue, stoppedType, stoppedValue, 'N'), common.refresh)\n }\n }\n\n self.editMedication = function(id){\n xmlQuery(xml.create('iSalusWindow.Initialize')('medication.medication_edit')(account, id), self.showMedication);\n }\n\n self.yearDropdowns = function(){\n var birthDate = currentUser.birthDate.split('/');\n var birthYear = parseInt(birthDate[2]);\n\n var template = '';\n var listHtml = \"\";\n\n for(var i = new Date().getFullYear(); i >= birthYear; i--){\n listHtml += template.format(i);\n }\n\n document.getElementById('Ystarted').innerHTML = listHtml;\n document.getElementById('Ystopped').innerHTML = listHtml;\n }\n\n self.ageDropdowns = function(xmlDoc){\n common.renderDropdown('Astarted', '0')(xmlDoc);\n common.renderDropdown('Astopped', '0')(xmlDoc);\n }\n\n self.loadData = function(){\n currentScreen = medications;\n self.yearDropdowns();\n\n xmlQuery(xml.create('iSalusExternal.GetMedicationList'), self.updateMedications);\n xmlQuery(xml.create(\"iSalusWindow.GetList\")(\"how_often\"), common.renderDropdown('medFrequency', '1'));\n xmlQuery(xml.create(\"iSalusExternal.GetMedicationAge\"), self.ageDropdowns);\n }\n}","\nfunction messagesScreen(){\n var self = this;\n\n self.screenTitle = \"Messages\";\n self.associatedNavItem = \"navMessages\";\n self.associatedMobileNavItem = \"mobileMessage\";\n\n self.databaseKey = '';\n self.data = [];\n self.providerInfo = [];\n self.unread = 0;\n self.databases = [];\n\n self.updateMessages = function(xmlDoc) {\n var html = '';\n var template_old = '

    {0}, {1}, {2}, {3}, {4}, {5}, {6}, {7}, {8}, {9}, {10}, {11}

    ';\n var template = '
    '+\n '

    {0}

    {1}

    {2}

    '+\n '

    {3}

    ';\n self.data = [];\n\n var xmlString = new XMLSerializer().serializeToString(xmlDoc.documentElement);\n xmlString = xmlString.replace(/\\{CR\\}/g, \"\\n\");\n xmlDoc = $.parseXML(xmlString);\n\n $(xmlDoc).find('list_item').each(function(){\n var mmlMessageId = $(this).find('mml_message_id').text();\n var accountId = $(this).find('account_id').text();\n var readInd = $(this).find('read_ind').text();\n var accountName = $(this).find('account_name').text();\n var requestedDate = $(this).find('requested_date').text();\n var status = $(this).find('status').text();\n var location = $(this).find('location').text();\n var message = $(this).find('message').text();\n var responseDate = $(this).find('response_date').text();\n var responseMessage = $(this).find('response_message').text();\n var messageTypeId = $(this).find('message_type_id').text();\n var messageTypeDesc = $(this).find('message_type_desc').text();\n var providerId = $(this).find('provider_id').text();\n var database = $(this).find('database_key').text();\n\n var summary = message;\n if(summary != ''){\n summary += '
    '\n }\n summary += responseMessage;\n\n self.data.push([mmlMessageId, accountId, readInd, accountName, requestedDate, status, location, message, responseDate, responseMessage, messageTypeId, messageTypeDesc, providerId, database]);\n html += template.format(location, responseDate == '' ? requestedDate : responseDate, messageTypeDesc, summary, readInd, mmlMessageId);\n });\n\n if(html == ''){\n document.getElementById('messageList').innerHTML = '
    No messages to view.
    ';\n } else {\n document.getElementById('messageList').innerHTML = html;\n }\n }\n\n self.selectMessage = function(which){\n var dataBox = document.getElementById('messageData');\n var template = 'Message:

    {0}

    Response:

    {1}

    ';\n var header = '
    To: {0}
    '+\n '

    Subject: {2}

    Sent: {1}

    ';\n var response = '

    {0}

    '+\n 'Received: {1}

    {2}

    ';\n var message = '

    Me

    Sent: {0}

    {1}

    ';\n var replyButton = '';\n\n var heading = /(.*)\\((\\d\\d\\/\\d\\d\\/\\d\\d\\d\\d.*\\d?\\d:\\d\\d..)\\)/;\n var formatted = '';\n\n for(var i = 0; i < self.data.length; i++){\n $('#message-'+self.data[i][0]).removeClass('message-selected');\n\n if(self.data[i][0] == which){\n dataBox.innerHTML = header.format(self.data[i][6], self.data[i][4], self.data[i][11]);\n \n if(self.data[i][9] != ''){\n dataBox.innerHTML += response.format(self.data[i][6], self.data[i][8], self.data[i][9]);\n }\n if(self.data[i][11] != 'Message from Practice'){\n formatted = self.data[i][7];\n var count = 0\n while(formatted.match(heading)){\n formatted = formatted.replace(heading,\"
    \" + \"

    $1

    $2

    \");\n count++\n }\n formatted = formatted.replace(/\\n/g, \"
    \");\n\n dataBox.innerHTML += message.format(self.data[i][4], formatted);\n }\n\n document.getElementById(\"reply\").innerHTML += replyButton.format(self.data[i][0]);\n\n $('#message-'+self.data[i][0]).addClass('message-selected');\n\n if(self.data[i][2] == 'N'){\n $('#message-'+self.data[i][0]).removeClass('message-read--N');\n xmlQuery(xml.create('iSalusExternal.SaveMessageRead')(which), function(){});\n self.unread -= 1;\n self.updateInboxCount();\n }\n }\n }\n if($(window).width() <= 768){\n $(\".message-list\").hide();\n $(\".message-window\").show().css(\"flex\", 1);\n $(\".text-tab\").hide();\n $(\"#backMessage\").show();\n }\n }\n\n self.selectCategory = function(kind){\n var kinds = ['S', 'R'];\n\n for(var i = 0; i < 2; i++){\n if(kinds[i] == kind){\n $('#message-category-'+kinds[i]).addClass('text-tab-item--active');\n $('#message-category-'+kinds[i]).removeClass('text-tab-item--inactive');\n } else {\n $('#message-category-'+kinds[i]).addClass('text-tab-item--inactive');\n $('#message-category-'+kinds[i]).removeClass('text-tab-item--active');\n }\n }\n xmlQuery(xml.create('iSalusExternal.GetMessages')(kind, '2'), self.updateMessages);\n }\n\n self.resetCursor = function(txtElement) { \n if (txtElement.setSelectionRange) { \n txtElement.focus(); \n txtElement.setSelectionRange(0, 0); \n } else if (txtElement.createTextRange) { \n var range = txtElement.createTextRange(); \n range.moveStart('character', 0); \n range.select(); \n }\n txtElement.scrollTop = 0;\n }\n\n self.reply = function(which){\n $(\"#replyContent\").val(\"\")\n document.getElementById('replySendButton').disabled = false;\n for(var i = 0; i < self.data.length; i++){\n\n if(self.data[i][0] == which){\n document.getElementById('popupReply').style.display = 'inherit';\n document.getElementById('cover').style.display = 'inherit';\n\n var formatted = self.data[i][7];\n if(formatted != ''){\n formatted = '\\n\\n\\n' + self.data[i][11] + ' (' + self.data[i][4] + ')\\n' + formatted;\n }\n\n if(self.data[i][9] != ''){\n formatted = '\\n\\n\\nResponse (' + self.data[i][8] + ')\\n' + self.data[i][9] + formatted;\n }\n\n document.getElementById('replyContentType').value = self.data[i][10];\n document.getElementById('replyQuoted').value = formatted;\n document.getElementById('replyProvider').value = self.data[i][12];\n document.getElementById('replyDatabase').value = self.data[i][13];\n\n self.resetCursor(document.getElementById('replyContent'));\n\n break;\n }\n }\n }\n\n self.newMessage = function(){\n if(self.databaseKey != ''){\n $(\"#popup\").fadeIn();\n $(\"#cover\").fadeIn();;\n\n document.getElementById('contentTypeId').value = '1';\n document.getElementById('content').value = '';\n document.getElementById('phone').value = '';\n document.getElementById('other').value = '';\n $(\"#btnMessageSend\").attr(\"disabled\", false).html(\"Send\");\n } else {\n self.showDatabaseSelect();\n }\n }\n\n self.showPracticeMessage = function(xmlDoc){\n self.resetKey();\n common.closeModals();\n\n var messageResponse = $(xmlDoc).find('message_response').text() || 'Your message has been received.';\n\n document.getElementById('popupPracticeMessage').style.display = 'inherit';\n document.getElementById('cover').style.display = 'inherit';\n\n document.getElementById('practiceMessageContent').innerHTML = messageResponse;\n $(\"#btnMessageSend\").attr(\"disabled\", true).html(\"Sent\");\n }\n\n self.sendMessage = function(){\n var contentTypeId = document.getElementById('contentTypeId').value;\n var content = document.getElementById('content').value;\n var phone = document.getElementById('phone').value;\n var other = document.getElementById('other').value;\n var providerId = document.getElementById('providerId').value;\n if (self.databaseKey != \"\") {\n $(\"#btnMessageSend\").attr(\"disabled\", true).html(\"Sending\");\n }\n xmlQuery(xml.create('iSalusExternal.SendMessage')(contentTypeId, content, phone, other, self.databaseKey, providerId), self.showPracticeMessage);\n }\n\n self.sendReply = function(){\n var contentTypeId = document.getElementById('replyContentType').value;\n var content = document.getElementById('replyContent').value + document.getElementById('replyQuoted').value;\n var providerId = document.getElementById('replyProvider').value;\n var database = document.getElementById('replyDatabase').value;\n\n // Prevent resending of message\n document.getElementById('replySendButton').disabled = true;\n\n xmlQuery(xml.create('iSalusExternal.SendMessage')(contentTypeId, content, '', '', database, providerId), common.refresh);\n }\n\n self.updateInboxCount = function(){\n if(self.unread > 0){\n document.getElementById('inboxCount').innerText = self.unread;\n } else {\n document.getElementById('inboxCount').innerText = '0';\n }\n }\n\n self.updateUnreadCount = function(xmlDoc){\n self.unread = parseInt($(xmlDoc).find('count').first().text());\n self.updateInboxCount();\n }\n\n self.renderProviderDropdown = function(){\n var html = '';\n var template = '';\n\n for(var i = 0; i < self.providerInfo.length; i++) {\n html += template.format(self.providerInfo[i][1], self.providerInfo[i][0]);\n }\n\n var elem = document.getElementById('providerId');\n elem.innerHTML = html;\n elem.selectedIndex = 0;\n }\n\n self.getProviderInfo = function(openModal) {\n return function(xmlDoc){\n \n self.providerInfo = [];\n\n $(xmlDoc).find('list_item').each(function(){\n var name = $(this).find('ProviderName').text();\n var id = $(this).find('ProviderId').text();\n\n self.providerInfo.push([name, id]);\n });\n \n\n self.renderProviderDropdown();\n\n if(openModal){\n common.closeModals();\n self.newMessage();\n }\n }\n }\n\n self.selectDatabase = function(number){\n self.databaseKey = self.databases[number][0];\n\n \n\n xmlQuery(xml.create('iSalusExternal.GetProviders')(self.databaseKey), self.getProviderInfo(true));\n }\n\n\n self.showDatabaseSelect = function(){\n var html = '';\n var template = '
    {1}
    ';\n\n for(var i = 0; i < self.databases.length; i++){\n html += template.format(i, self.databases[i][1]);\n }\n\n document.getElementById('popupDatabaseList').innerHTML = html;\n document.getElementById('popupDatabase').style.display = 'inherit';\n document.getElementById('cover').style.display = 'inherit';\n }\n\n self.resetKey = function(){\n if(self.databases.length != 1){\n self.databaseKey = '';\n }\n }\n\n self.getDatabaseKey = function(xmlDoc) {\n self.databaseKey = '';\n self.databases = [];\n\n $(xmlDoc).find('list_item').each(function(){\n if($(this).find('account_id').text() == account){\n self.databases.push([$(this).find('database_key').text(), $(this).find('client_name').text()]);\n }\n });\n\n if(self.databases.length == 1){\n self.databaseKey = self.databases[0][0];\n\n xmlQuery(xml.create('iSalusExternal.GetProviders')(self.databaseKey), self.getProviderInfo(false));\n }\n\n if(self.databases.length > 0){\n document.getElementById('noPractices').style.display = 'none';\n $('#messagesContainer').addClass(\"is-visible\");\n } else {\n document.getElementById('noPractices').style.display = 'inherit';\n $('#messagesContainer').removeClass(\"is-visible\");\n }\n }\n\n self.loadData = function(){\n currentScreen = messages;\n\n document.getElementById('messageData').innerHTML = '';\n\n self.selectCategory('R');\n xmlQuery(xml.create('iSalusExternal.GetMessagesCounts'), self.updateUnreadCount);\n common.getConnection(self.getDatabaseKey);\n }\n}\n\n// Show Message Window\nfunction showMessageList () {\n $(\".message-list\").show();\n $(\".message-window\").hide();\n $(\".text-tab\").show();\n $(\"#backMessage\").hide();\n $(\".message-selected\").removeClass(\"message-selected\")\n}\n\n","\nfunction passwordScreen(){\n var self = this;\n\n self.screenTitle = \"Password\";\n self.associatedNavItem = \"navMyAccount\";\n\n self.passwordReset = function(){\n var oldPassword = document.getElementById('oldPassword').value;\n var password1 = document.getElementById('password1').value;\n var password2 = document.getElementById('password2').value;\n\n common.saveButton('savePasswordButton');\n\n xmlQuery(xml.create('iSalusExternal.PasswordReset')(oldPassword, password1, password2), self.dataUpdated, common.webserviceError('passwordWebserviceError'));\n }\n\n self.dataUpdated = function(xmlDoc){\n common.buttonDataUpdated('savePasswordButton');\n self.loadData();\n }\n\n self.loadData = function(){\n document.getElementById('oldPassword').value = '';\n document.getElementById('password1').value = '';\n document.getElementById('password2').value = '';\n \n currentScreen = passwordReset;\n\n if(account != mainUser.accountId && currentUser.emailAddress == mainUser.emailAddress){\n document.getElementById('noAccount').style.display = 'inherit';\n document.getElementById('mainContainer').style.display = 'none';\n } else {\n document.getElementById('noAccount').style.display = 'none';\n document.getElementById('mainContainer').style.display = 'inherit';\n }\n }\n}","function practiceForms() {\n var self = this;\n\n self.screenTitle = \"Practice Forms\";\n self.associatedNavItem = \"navForms\";\n self.associatedMobileNavItem = \"mobileForms\";\n self.completedId = '';\n self.inputs;\n\n self.updateIntakes = function (xmlDoc) {\n var html = \"\";\n\n var template = '

    {3}

    {7}{1}{2}{5}';\n\n // var template = '

    {3}

    {7}

    {2}

    {1}

    \"arrow\"
    ';\n \n $(xmlDoc).find('intake_item').each(function () {\n html += template.format( //Fetch the Allergy Description\n $(this).find(\"intake_name\").text().i_replace(\"'\",\"\\\\'\"),\n $(this).find(\"intake_due\").text(),\n $(this).find(\"database_title\").text(),\n ($(this).find(\"intake_status\").text().toLowerCase() == \"completed\" ? \"Imported by Practice\" : $(this).find(\"intake_status\").text().toLowerCase()),\n $(this).find(\"mml_intake_id\").text(),\n $(this).find(\"intake_instructions\").text().i_replace(\"'\",\"\\\\'\"),\n $(this).find(\"intake_status\").text().toLowerCase().split(\" \").join(\"-\"),\n $(this).find(\"intake_name\").text(),\n $(this).find(\"database_key\").text()\n \n );\n });\n\n\n\n if (html == '') {\n document.getElementById('noForms').style.display = 'inherit';\n document.getElementById('tableHeader').style.display = 'none';\n document.getElementById('mainHeader').style.display = 'inherit';\n } else {\n document.getElementById('noForms').style.display = 'none';\n document.getElementById('tableHeader').style.display = 'table';\n document.getElementById('mainHeader').style.display = 'inherit';\n }\n $(\"#intakeList\").html(html);\n }\n\n self.selectIntakes = function (completedId) {\n \n xmlQuery(xml.create('iSalusExternal.GetIntakes')(completedId), self.updateIntakes);\n }\n\n self.openForm = function (id, name, practice, instructions, date, databaseId) {\n $(\"#cover\").hide();\n self.inputs = {\n id: id,\n name: name,\n practice: practice,\n instructions: instructions,\n date: date,\n databaseId: databaseId\n }\n window.location.href = \"#!form\";\n window.setTimeout(\"practiceforms.openForm_delayed()\",50);\n g_formDetails.title = name;\n g_formDetails.date = date;\n g_formDetails.instructions = instructions;\n }\n\n self.openForm_delayed = function() {\n common.switchScreen(intakeform, self.inputs);\n }\n\n self.loadData = function (completedId) {\n if (completedId == 'Y') {\n $('#intakeArchive').addClass('text-tab-item--active');\n $('#intakeCurrent').removeClass('text-tab-item--active');\n\n } else {\n $('#intakeCurrent').addClass('text-tab-item--active');\n $('#intakeArchive').removeClass('text-tab-item--active');\n }\n currentScreen = practiceforms;\n xmlQuery(xml.create(\"iSalusExternal.GetIntakes\")(completedId), self.updateIntakes);\n };\n}","var today = new Date();\nvar date = (today.getMonth()+1)+'-'+ today.getDate() +'-'+today.getFullYear();\nvar time = today.getHours() + \":\" + today.getMinutes() + \":\" + today.getSeconds();\nvar dateTime = date;\nvar is_ipad = navigator.userAgent.match(/iPad/i) != null;\n\nif (is_ipad) {\n $(\"html, body\").css(\"position\", \"fixed\").css(\"overflow\", \"hidden\").css(\"width\", \"100vw\");\n}\nfunction intakeForm() {\n var self = this;\n this.id = \"\";\n this.currentSection = \"\";\n this.nextSectionId = \"\";\n this.sectionArr = [];\n this.direction = \"\";\n this.connected_ind = \"N\";\n this.readonly_ind = \"N\";\n this.sectionId = \"\";\n this.errorFieldIndex;\n this.letterSigned = false;\n this.sendToMMLWeb = false;\n this.referringList;\n this.referringListBuilding = false;\n\n self.screenTitle = \"Practice Intake\";\n self.associatedNavItem = \"navMyPractices\";\n\n self.m_intakesignature_is_drawn = false;\n\n self.updatePracticeIntake = function (xmlDoc) {\n var sidebarHTML = \"\"\n // sidebarHTML += '

    * = Required Section

    ';\n var sidebarTemplate = '
  • {0} {3}

  • ';\n var results = xmlQueryResultString(xmlDoc, \"GetIntakeSections\");\n var arr = results.xml_array(\"section_list\", \"section_item\");\n \n intakeform.connected_ind = results.xml_get(\"connected_ind\");\n intakeform.readonly_ind = results.xml_get(\"readonly_ind\");\n intakeform.sendToMMLWeb = results.xml_get(\"use_mmlweb\") == \"Y\";\n //Message here if not connected\n // $(\"#errorMessage\").text(\"You are not connected to a practice\");\n // $(\"#errorMessagePopup\").show();\n // $(\"#cover\").show();\n var totalItems = 1;\n intakeform.sectionArr = [];\n for (i = 0; i < arr.length; i++) {\n \n intakeform.sectionArr.push(arr[i].xml_get(\"section_id\"));\n sidebarHTML += sidebarTemplate.format(\n arr[i].xml_get(\"section_name\"),\n arr[i].xml_get(\"section_id\"),\n (arr[i].xml_get(\"saved_ind\") == \"Y\" ? \" is-complete\" : \"\"),\n (arr[i].xml_get(\"required_ind\") == \"Y\" ? \"*\" : \"\"),\n totalItems++\n );\n\n \n\n }\n intakeform.sectionArr.push('sf');\n intakeform.currentSection = intakeform.sectionArr[0];\n $(\".main\").attr(\"current\", intakeform.currentSection);\n\n sidebarHTML += '
  • Submit Form';\n\n $(\".main\").attr(\"ids\", intakeform.sectionArr.join(','));\n\n $(\"#formNav\").html(sidebarHTML);\n $(\"li[section-id='\" + intakeform.currentSection + \"']\").addClass(\"is-active\");\n xmlQuery(xml.create(\"iSalusExternal.GetIntakeSectionFields\")(readCookie(\"formId\"), intakeform.sectionArr[0]), self.updateFormData, self.errorFormData);\n }\n\n self.submitIntakeForm = function () {\n var intake_ind = (window.location.href.indexOf(\"intake\") > 0 ? \"Y\" : \"N\");\n xmlQuery(xml.create(\"iSalusExternal.SaveIntakeSubmit\")(readCookie(\"formId\"), intake_ind), self.submitIntakeFormCompleted, self.submitIntakeFormError);\n }\n\n self.submitIntakeFormCompleted = function (xmlDoc) {\n if (window.location.href.indexOf(\"intake\") > 0) {\n $(\"#submissionSuccessful\").fadeIn(\"fast\");\n } else {\n $(\"#submitIntakeSuccess\").show(\"fast\");\n }\n }\n\n self.submitIntakeFormError = function (xmlDoc) {\n \n var result = xmlQueryResultString(xmlDoc, \"SaveIntakeSubmit\");\n var error_code = result.xml_get(\"error\").xml_get(\"code\");\n var error_message = result.xml_get(\"error\").xml_get(\"message\");\n $(\"#errorMessage\").text(error_message);\n $(\"#errorMessagePopup\").show();\n $(\"#cover\").show();\n }\n\n\n self.errorPracticeIntake = function (xmlDoc) {\n \n var result = xmlQueryResultString(xmlDoc, \"GetIntakeSections\");\n var error_code = result.xml_get(\"error\").xml_get(\"code\");\n var error_message = result.xml_get(\"error\").xml_get(\"message\");\n //this would be the case where the intakes where brought down but never were opened.\n $(\"#errorMessage\").text(error_message);\n $(\"#errorMessagePopup\").show();\n $(\"#cover\").show();\n\n }\n\n\n self.updateFormData = function (xmlDoc) {\n intakesection.build(\"formData\", xmlQueryResultString(xmlDoc, \"GetIntakeSectionFields\"), intakeform.connected_ind);\n }\n\n self.errorFormData = function (xmlDoc) {\n \n var result = xmlQueryResultString(xmlDoc, \"GetIntakeSectionFields\");\n var error_code = result.xml_get(\"error\").xml_get(\"code\");\n var error_message = result.xml_get(\"error\").xml_get(\"message\");\n //this would be the case where partially got through sections and then disconnected\n $(\"#errorMessage\").text(error_message);\n $(\"#errorMessagePopup\").show();\n $(\"#cover\").show();\n\n\n }\n\n self.errorIntakeDocument = function(message) {\n $(\"#errorMessage\").text(message);\n $(\"#errorMessagePopup\").show();\n $(\"#cover\").show(); \n }\n\n self.nextSection = async function () {\n await self.saveSection(\"n\");\n }\n\n self.saveSection = async function (direction) {\n intakeform.direction = direction;\n if (intakeform.connected_ind == 'Y' && intakeform.readonly_ind != \"Y\" && intakeform.currentSection != 'sf') {\n const fieldsVerified = await intakesection.verify_fields();\n if (fieldsVerified) {\n // Chris hide error button here\n intakeform.errorFieldIndex = -1;\n $(\"#requiredAlert\").removeClass(\"is-active\");\n $(\".form-container\").removeClass('required-visible');\n this.toggleOverlay(true);\n\n var save_xml = intakesection.save();\n if (save_xml != \"\") {\n if (this.sendToMMLWeb) {\n const post_data = {\n \"mmlIntakeId\": readCookie(\"formId\"),\n \"sectionId\": intakeform.currentSection,\n \"sectionName\": save_xml.xml_get(\"section_name\"),\n \"sectionData\": save_xml\n }\n postChoiceApiEndpoint(\"Intake\", \"IntakeSectionSave\", post_data)\n .then (data => {\n if (data == \"\") {\n self.sectionNotSavedEx(\"\");\n }\n else {\n if (data.success == true) {\n self.sectionSaved();\n }\n else {\n if (data.infectedItems != null) {\n intakesection.clear_infected_items(data.infectedItems);\n }\n self.sectionNotSavedEx(data.message);\n }\n }\n }); \n }\n else {\n xmlQuery(xml.create(\"iSalusExternal.SaveIntakeSection\")(readCookie(\"formId\"), intakeform.currentSection, save_xml), self.sectionSaved, self.sectionNotSaved);\n }\n }\n } else {\n $(\"#requiredAlert\").addClass(\"is-active\");\n $(\".form-container\").addClass('required-visible');\n $(\".step\").removeClass(\"is-active\");\n $(\"li[section-id='\" + intakeform.currentSection + \"']\").addClass(\"is-active\");\n intakeform.errorFieldIndex = intakesection.find_next_field_issue();\n // Chris display error button here. \n // Chris on the click event for the error button call intakeform.findNextFieldIssue(); or intakeform.findPreviousFieldIssue();\n }\n } else {\n \n intakeform.sectionNavigate();\n }\n }\n\n\n self.delayedIntialize = function () {\n html2canvas($(\"#capture\"), {\n onrendered: function (canvas) {\n theCanvas = canvas;\n initialcanvasData = theCanvas.toDataURL();\n }\n });\n }\n\n self.signLetter = function () {\n signaturePad.clear();\n $(\"#signaturePopup\").fadeIn(\"fast\");\n $(\"#signaturePopupTitle\").text(\"Sign Letter\").attr(\"type\", \"letter\");\n $(\"#cover\").fadeIn(\"fast\");\n window.setTimeout(\"intakeform.delayedIntialize()\", 50);\n \n }\n\n self.isIntakeSignatureDrawn = function (isDrawing) {\n self.m_intakesignature_is_drawn = isDrawing;\n }\n \n\n self.applySignature = function () {\n $(\"#signaturePopup\").fadeOut(\"fast\");\n $(\"#cover\").fadeOut(\"fast\");\n html2canvas($(\"#capture\"), {\n onrendered: function (canvas) {\n theCanvas = canvas;\n // theCanvas.width = \"458\";\n newcanvasData = theCanvas.toDataURL();\n if (initialcanvasData == newcanvasData) {\n alert(\"Please sign the document\");\n\n //popup the modal again\n if (\"es\" == intakeform.currentSection) {\n accountbalance.signEstimateModal();\n }\n // bsk - reverted it back to what it was before pull request 7156\n //else {\n // self.signLetter();\n //}\n } else {\n const isEstimate = $(\"#signaturePopupTitle\").attr(\"type\") == \"estimate\";\n if (isEstimate) {\n //note the below comparison (initialcanvasData == newcanvasData) is accurate only if I type my signature, not if I draw it\n //note that below isEmpty function does not return an accurate state. It's accurate if I draw but not if I type. Typed in sig shows as Empty.\n //so need to detect where we're coming from, the drawing canvas or typing canvas.\n const isIntakeSignatureEmpty = signaturePad.isEmpty();\n const isIntakeTypedSignatureEmpty = !(signatureField?.value?.length);\n\n if ((self.m_intakesignature_is_drawn && isIntakeSignatureEmpty) || (!self.m_intakesignature_is_drawn && isIntakeTypedSignatureEmpty)) {\n alert(\"Please sign the document\");\n accountbalance.signEstimateModal();\n } else {\n accountbalance.m_initial_estimate_intake = true;\n accountbalance.applyEstimateSignatureExt(theCanvas.toDataURL(), intakesection.current_estimation_id);\n $(\"#signEstimate\").hide();\n $(\"#nextSection\").show();\n } \n }\n else {\n // bsk - reverted it back to what it was before pull request 7156\n //const isIntakeSignatureEmpty = signaturePad.isEmpty();\n //const isIntakeTypedSignatureEmpty = !(signatureField?.value?.length);\n\n //if ((self.m_intakesignature_is_drawn && isIntakeSignatureEmpty) || (!self.m_intakesignature_is_drawn && isIntakeTypedSignatureEmpty)) {\n // alert(\"Please sign the document\");\n // self.signLetter();\n //} else {\n $(intakesection.patientSig[intakesection.currentSigID]).html(\"

    Electronically Signed:\" + \" \" + dateTime + \"

    \");\n $('#divPatientSignatureRequired').html(\"

    Electronically Signed:\" + \" \" + dateTime + \"

    \");\n $(\"#nextSection\").show();\n $(\"#signLetter\").hide();\n $(\"#sigCheck\").attr(\"checked\", true);\n //}\n }\n }\n }\n });\n\n }\n\n self.findNextFieldIssue = function () {\n intakeform.errorFieldIndex = intakesection.find_next_field_issue(intakeform.errorFieldIndex);\n if (intakeform.errorFieldIndex < 0) {\n // There are no more errors\n $(\"#requiredAlert\").removeClass(\"is-active\");\n // Chris hide the error button here\n }\n }\n\n self.findPreviousFieldIssue = function () {\n intakeform.errorFieldIndex = intakesection.find_previous_field_issue(intakeform.errorFieldIndex);\n if (intakeform.errorFieldIndex < 0) {\n // There are no more errors\n $(\"#requiredAlert\").removeClass(\"is-active\");\n // Chris hide the error button here\n }\n }\n\n self.sectionSaved = function () {\n $(\"#saveSuccessful\").fadeIn('fast');\n $(\"#formData\").html(\"\");\n $(\"#letter\").html(\"\");\n $(\"#nextSection, #previousSection, #signLetter\").attr(\"disabled\", true);\n $(\"li[section-id='\" + intakeform.currentSection + \"']\").addClass(\"is-complete\");\n intakeform.sectionNavigate();\n }\n\n self.sectionNavigate = function () {\n if (intakeform.direction == \"n\")\n intakeform.nextSectionNavigate();\n else if (intakeform.direction == \"p\")\n intakeform.previousSectionNavigate();\n else {\n intakeform.loadFormData(intakeform.nextSectionId);\n intakeform.nextSectionId = \"\";\n \n }\n }\n\n self.sectionNotSaved = function (xmlDoc) {\n \n var result = xmlQueryResultString(xmlDoc, \"SaveIntakeSection\");\n var error_code = result.xml_get(\"error\").xml_get(\"code\");\n var error_message = result.xml_get(\"error\").xml_get(\"message\");\n if (error_code == 100) {\n //Display message to user here and go to the next page\n $(\"#errorMessage\").text(error_message);\n $(\"#errorMessagePopup\").show();\n $(\"#cover\").show();\n intakeform.sectionNavigate();\n\n } else {\n //Display message to user and do not go forward\n $(\"#errorMessage\").text(error_message);\n $(\"#errorMessagePopup\").show();\n $(\"#cover\").show();\n }\n }\n\n self.sectionNotSavedEx = function (error_message) {\n if (error_message == null || error_message == \"\")\n error_message = \"An error occurred while saving the section. Please try again.\";\n $(\"#errorMessage\").text(error_message);\n $(\"#errorMessagePopup\").show();\n $(\"#cover\").show();\n }\n\n self.nextSectionNavigate = function () {\n var ids = $(\".main\").attr(\"ids\");\n var idsArr = ids.split(\",\");\n var nextId = \"\";\n var blnLastPage = false;\n\n\n for (var i = 0; i < idsArr.length; i++) {\n\n if (this.currentSection == idsArr[i]) {\n if (i == idsArr.length - 2) {\n nextId = idsArr.length;\n blnLastPage = true;\n } else {\n nextId = (i == idsArr.length - 1 ? idsArr[0] : idsArr[++i]);\n }\n break;\n }\n }\n $(\".step\").removeClass(\"is-active\");\n if (blnLastPage) {\n\n this.displaySummaryPage();\n } else {\n this.loadFormData(nextId);\n $('#nextSection').show();\n\n }\n }\n\n self.displaySummaryPage = function () {\n this.currentSection = 'sf';\n this.toggleOverlay(false);\n $(\"#saveSuccessful\").fadeOut();\n $('li').removeClass('is-active');\n $('li[section-id=\"sf\"]').addClass('is-active');\n var html = \"\"\n if (intakesection.intake_status_id === \"4\") {\n html = '

    This form has been imported by your practice

    You can still review your submission. However, you can not make any changes at this time.

    ';\n\n } else if (intakesection.intake_status_id === \"9\") {\n html = '

    This form has expired.

    The form has expired and can no longer be sumitted to the practice.

    ';\n }\n else {\n\n html = '

    Thank you for filling out your information!

    If you feel you have filled out everything to your best ability,
    please submit the form using the button below.

    ';\n }\n $(\"#nextSection\").hide();\n $(\"#signLetter\").hide();\n $(\"#formData\").html(html);\n $(\"#previousSection\").attr(\"disabled\", false);\n\n }\n\n self.toggleOverlay = function (overlay) {\n if(overlay) {\n $(\".overlay\").fadeIn();\n } else {\n $(\".overlay\").fadeOut();\n }\n }\n\n self.previousSection = async function () {\n await self.saveSection(\"p\");\n }\n\n self.previousSectionNavigate = function () {\n var ids = $(\".main\").attr(\"ids\");\n var idsArr = ids.split(\",\");\n var previousId = \"\";\n\n for (var i = 0; i < idsArr.length; i++) {\n\n if (this.currentSection == idsArr[i]) {\n previousId = (i == 0 ? idsArr[idsArr.length - 1] : idsArr[--i]);\n break;\n }\n }\n $(\".step\").removeClass(\"is-active\");\n $(\"#nextSection\").show();\n this.loadFormData(previousId);\n }\n\n self.loadSection = async function (sectionId) {\n // $(\"#nextSection\").show();\n this.nextSectionId = sectionId;\n $(\".step\").removeClass(\"is-active\");\n $(\"li[section-id='\" + sectionId + \"']\").addClass(\"is-active\");\n await self.saveSection(\"\");\n }\n\n self.loadFormData = function (sectionId) {\n this.currentSection = sectionId;\n $(\".main\").attr(\"current\", sectionId);\n $(\"li[section-id='\" + this.currentSection + \"']\").addClass(\"is-active\");\n xmlQuery(xml.create(\"iSalusExternal.GetIntakeSectionFields\")(this.id, sectionId), self.updateFormData, self.errorFormData);\n }\n\n self.updateDeviceData = function (xmlDoc) {\n var result = xmlQueryResultString(xmlDoc, \"SaveIntakeDevice\");\n }\n\n self.loadData = function (inputs) {\n if (window.location.href.indexOf(\"intake\") > 0) {\n g_formDetails.title = window.localStorage.getItem(\"formTitle\");\n g_formDetails.date = window.localStorage.getItem(\"formDate\");\n g_formDetails.instructions = window.localStorage.getItem(\"formInstructions\");\n }\n if (inputs == undefined) {\n this.name = g_formDetails.title;\n this.id = readCookie(\"formId\");\n this.practice = readCookie(\"formPractice\");\n this.instructions = g_formDetails.instructions;\n this.date = g_formDetails.date;\n } else {\n this.id = inputs.id;\n this.practice = inputs.practice;\n this.databaseId = inputs.databaseId\n createCookie(\"formId\", this.id);\n createCookie(\"formPractice\", this.practice);\n // createCookie(\"formInstructions\", this.instructions);\n createCookie(\"databaseId\", this.databaseId);\n\n }\n\n\n currentScreen = intakeform;\n \n var deviceId = readCookie(\"deviceId\");\n if (deviceId == null)\n deviceId = \"\";\n if (deviceId.length > 0)\n xmlQuery(xml.create(\"iSalusExternal.SaveIntakeDevice\")(this.id, deviceId), self.updateDeviceData, self.updateDeviceData);\n\n xmlQuery(xml.create(\"iSalusExternal.GetIntakeSections\")(this.id), self.updatePracticeIntake, self.errorPracticeIntake);\n \n // $(\"#formTitle\").html(this.name);\n \n $(\"#formPractice\").html(readCookie(\"formPractice\"));\n $(document).ready(function() {\n $(\"#formName\").html(g_formDetails.title);\n $(\"#formDate\").html(g_formDetails.date);\n $(\"#formInstructions\").html(g_formDetails.instructions == \"\" ? \"No instructions provided\" : g_formDetails.instructions);\n\n })\n // $(\"#formInstructions\").html((readCookie(\"formInstructions\") == \"\" ? \"No instructions provided\" : readCookie(\"formInstructions\")));\n\n };\n\n self.getReferringList = function() {\n if (self.referringList == undefined && !self.referringListBuilding) {\n self.referringListBuilding = true;\n const formId = readCookie(\"formId\");\n callChoiceApiEndpoint(\"Intake\", \"ReferringList\", formId)\n .then (data => {\n if (Array.isArray(data)) {\n self.referringList = data;\n } \n self.referringListBuilding = false;\n }\n ) \n } \n }\n\n}\n\n","function results() {\n var self = this;\n\n self.screenTitle = \"Lab Results\";\n self.associatedNavItem = \"navResults\";\n\n var daysOfWeek = [\"Sun\", \"Mon\", \"Tues\", \"Wed\", \"Thur\", \"Fri\", \"Sat\", \"Sun\"];\n var months = [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"June\", \"July\", \"Aug\", \"Sep\",\"Oct\", \"Nov\", \"Dec\"];\n\n self.prettierDate = function(date) {\n var dateResponse = date.replace(\" \", \" \")\n var prettyDate = new Date(dateResponse.split(\" \")[0]);\n var time = dateResponse.split(\" \")[1];\n var dayOfWeek = daysOfWeek[prettyDate.getDay()];\n var month = months[prettyDate.getMonth()];\n var year = prettyDate.getFullYear();\n var numDate = prettyDate.getDate();\n return dayOfWeek + \", \" + month + \" \" + numDate + \", \" + year + \" at \" + time;\n }\n\n\n\n self.databaseKey = '';\n self.databases = [];\n\n self.labResultList = {};\n\n self.checkDate = function () {\n if ($(\"#dateRangeTo\").val().length === 10 && $(\"#dateRangeFrom\").val().length === 10) {\n $(\"#filterDone\").attr(\"disabled\", false);\n } else {\n $(\"#filterDone\").attr(\"disabled\", true);\n }\n }\n\n\n\n\n\n\n\n\n\n\n\n\n self.viewLabResult = function (databaseKey, labRequisitionId, recordId) {\n xmlQuery(xml.create('iSalusExternal.GetLabResult')(databaseKey, labRequisitionId, recordId), self.showDownloadLink);\n }\n\n self.viewHistory = function (labRequisitionId) {\n var template = '

    {0}

    View

    ';\n var html = '';\n\n for (var i = 0; i < self.labResultList[labRequisitionId].length; i++) {\n var item = self.labResultList[labRequisitionId][i];\n html += template.format(item.reviewedDate, account, item.databaseKey, item.labRequisitionId, item.recordId);\n }\n\n $('#resultsHistoryList').html(html);\n $('#popupResultsHistory').fadeIn();\n $('.cover').fadeIn();\n }\n\n self.processLabResults = function (xmlDoc) {\n var template = '
    {0}{1}{2}{3}View';\n var html = '';\n\n self.labResultList = {};\n var count = 0;\n $(xmlDoc).find('list_item').each(function () {\n var item = {\n databaseKey: $(this).find('database_key').text(),\n databaseTitle: $(this).find('database_title').text(),\n labRequisitionId: $(this).find('lab_requisition_id').text(),\n recordId: $(this).find('record_id').text(),\n patientComment: $(this).find('patient_comment').text(),\n orderList: $(this).find('order_list').text().split('|'),\n reviewedDate: common.prettierDate($(this).find('reviewed_date').text()),\n readInd: $(this).find('read_ind').text()\n };\n\n var exists = self.labResultList.hasOwnProperty(item.labRequisitionId);\n\n if (!exists) {\n var orders = '';\n for (var i = 0; i < item.orderList.length; i++) {\n orders += '

    {0}

    '.format(item.orderList[i]);\n }\n\n self.labResultList[item.labRequisitionId] = [];\n\n html += template.format(item.reviewedDate, item.databaseTitle, orders, item.patientComment, item.readInd, item.databaseKey, item.labRequisitionId, item.recordId, account);\n count++\n }\n\n self.labResultList[item.labRequisitionId].push(item);\n \n });\n console.log(count);\n if (html == '') {\n $('#labTemplate').html('');\n $('#labTable').hide();\n $('#noLabs').show();\n } else {\n $('#labTemplate').html(html);\n $('#labTable').show();\n $('#noLabs').hide();\n }\n \n }\n\n self.selectDatabase = function (number) {\n self.databaseKey = self.databases[number][0];\n\n common.closeModals();\n\n self.pullClinicalSummary();\n }\n\n self.showDatabaseSelect = function () {\n var html = '';\n var template = '
    {1}
    ';\n\n for (var i = 0; i < self.databases.length; i++) {\n html += template.format(i, self.databases[i][1]);\n }\n\n document.getElementById('popupDatabaseList').innerHTML = html;\n document.getElementById('popupDatabase').style.display = 'inherit';\n document.getElementById('cover').style.display = 'inherit';\n }\n\n self.getDatabaseKey = function (xmlDoc) {\n self.databaseKey = '';\n self.databases = [];\n\n $(xmlDoc).find('list_item').each(function () {\n if ($(this).find('account_id').text() == account) {\n self.databases.push([$(this).find('database_key').text(), $(this).find('client_name').text()]);\n }\n });\n\n if (self.databases.length == 1) {\n self.databaseKey = self.databases[0][0];\n }\n\n if (self.databases.length < 1) {\n $('#pullSummaryButton').addClass('btn--disabled');\n $('#pullSummaryButton2').addClass('btn--disabled');\n } else {\n $('#pullSummaryButton').removeClass('btn--disabled');\n $('#pullSummaryButton2').removeClass('btn--disabled');\n }\n }\n\n self.syncAndRefresh = function () {\n self.buttonFinished();\n xmlQuery(xml.create('iSalusExternal.Sync')(['Messages', 'Appointments', 'ClinicalSummary', 'PatientEducation', 'CCMCarePlan', 'Vitals', 'Medications']), common.refresh);\n }\n\n self.toggleRead = function (elem) {\n $(elem).removeClass('chart-item--unread');\n $(elem).addClass('chart-item--read');\n }\n\n self.finishSync = function (xmlDoc) {\n console.log('Synced!');\n }\n\n self.loadData = function () {\n currentScreen = results;\n\n xmlQuery(xml.create('iSalusExternal.Sync')(['LabResults']), self.finishSync);\n xmlQuery(xml.create('iSalusExternal.GetLabResults')(account), self.processLabResults);\n common.getConnection(self.getDatabaseKey);\n }\n \n}","\nfunction securityScreen(){\n var self = this;\n\n self.screenTitle = \"Account Security\";\n self.associatedNavItem = \"navMyAccount\";\n\n self.newAccount = '';\n self.resetId = '';\n self.sendToMMLWeb = true;\n \n self.accountPopup = function(){\n document.getElementById('cover').style.display = 'inherit';\n document.getElementById('popup').style.display = 'inherit';\n }\n\n self.loginCreateSuccess2 = function(xmlDoc){\n common.closeModals();\n\n document.getElementById('cover').style.display = 'inherit';\n document.getElementById('accountCreationFinish2').style.display = 'inherit';\n }\n\n self.loginCreateSuccess = function(xmlDoc){\n common.closeModals();\n\n self.newAccount = $(xmlDoc).find('account_id').text();\n self.resetId = $(xmlDoc).find('reset_id').text();\n\n document.getElementById('cover').style.display = 'inherit';\n document.getElementById('accountCreationFinish').style.display = 'inherit';\n }\n\n self.loginCreateSuccessEx = function(accountId, resetId) {\n common.closeModals();\n\n self.newAccount = accountId;\n self.resetId = resetId;\n\n document.getElementById('cover').style.display = 'inherit';\n document.getElementById('accountCreationFinish').style.display = 'inherit'; \n }\n\n self.finishCreateLogin = function(){\n\n var errorFlag = {'error': false};\n\n var registerPassword = common.validateNotEmpty('securityPassword', 'securityPasswordError', errorFlag);\n var registerPassword2 = common.validateMatchingField('retypePassword', 'retypePasswordError', errorFlag, registerPassword, \"Does not match the above.\");\n var token = common.validateNotEmpty('registrationToken', 'registrationTokenError', errorFlag);\n\n if(!errorFlag.error){\n xmlQuery(xml.create('iSalusExternal.FamilyMemberCreateLoginExContinued')(self.newAccount, self.resetId, token, registerPassword2), self.loginCreateSuccess2);\n }\n }\n\n self.createLogin = function(){\n\n var errorFlag = {'error': false};\n\n validateEmail = function (email) {\n var re = /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\n return re.test(email);\n }\n\n validatePhone = function (phone) {\n var re = /^(\\+\\d{1,2}\\s)?\\(?\\d{3}\\)?[\\s.-]?\\d{3}[\\s.-]?\\d{4}$/;\n return re.test(phone);\n }\n\n var email = '';\n var phone = '';\n\n var userId = $('#registrationEmail').val();\n\n if (validateEmail(userId)) {\n email = userId;\n } else if (validatePhone(userId)) {\n phone = userId;\n } else {\n $(\"#registrationEmailError\").html('You must enter an email address or a phone number.');\n return false;\n }\n\n var registerQuestion = '';\n var registerAnswer = '';\n\n if(!errorFlag.error) {\n if (self.sendToMMLWeb) {\n const post_data = {\n \"system\": \"\",\n \"accountId\": account,\n \"email\": email,\n \"phone\": phone\n }\n postChoiceApiEndpoint(\"Account\", \"CreateFamilyLogin\", post_data)\n .then (data => {\n if (data.successful == true) {\n this.loginCreateSuccessEx(account, data.resetId);\n }\n else {\n common.displayError('familyMemberWebserviceError', data.responseMessage ?? \"Failed to create the login.\");\n }\n }); \n }\n else {\n xmlQuery(xml.create('iSalusExternal.FamilyMemberCreateLoginEx')(account, email, phone, registerQuestion, registerAnswer), self.loginCreateSuccess, common.webserviceError('familyMemberCreateError'));\n }\n }\n }\n\n self.updateSecurity = function(xmlDoc) {\n var emailAddress = $(xmlDoc).find('email_address').text();\n var phoneNumber = $(xmlDoc).find('phone').text();\n\n if(account != mainUser.accountId && emailAddress == mainUser.emailAddress){\n document.getElementById('noAccount').style.display = 'inherit';\n document.getElementById('mainContainer').style.display = 'none';\n } else {\n document.getElementById('noAccount').style.display = 'none';\n document.getElementById('mainContainer').style.display = 'inherit';\n }\n\n document.getElementById('password').value = '';\n document.getElementById('userAlias').value = $(xmlDoc).find('user_alias').text();\n document.getElementById('emailAddress').value = emailAddress;\n document.getElementById('phoneNumber').value = phoneNumber;\n\n $spans.each(function() {\n var $this = $(this);\n $sibling = $this.siblings(\".toggleable\");\n if($sibling[0].tagName == \"INPUT\"){\n $this.text($sibling.val());\n }else{\n $this.text($sibling.find(\":selected\").text());\n }\n });\n }\n\n self.saveSecurity = function(){\n\n var errorFlag = {'error': false};\n\n var password = document.getElementById('password').value;\n var userAlias = common.validateNotEmpty('userAlias', 'userAliasError', errorFlag);\n var emailAddress = common.validateNotEmpty('emailAddress', 'emailAddressError', errorFlag);\n var phone = common.validateNotEmpty('phoneNumber', 'phoneNumberError', errorFlag);\n var securityQuestion = '';\n var securityAnswer = '';\n\n if(!errorFlag.error){\n $inputs.each(function() {\n var $this = $(this);\n $this.hide().siblings(\"span\").show();\n });\n\n common.saveButton('saveSecurityButton');\n document.getElementById('securityWebserviceError').innerHTML = '';\n xmlQuery(xml.create('iSalusExternal.SaveSecurity')(password, userAlias, emailAddress, securityQuestion, securityAnswer, phone), self.dataUpdated, common.webserviceError('securityWebserviceError'));\n }\n }\n\n self.dataUpdated = function(xmlDoc){\n common.buttonDataUpdated('saveSecurityButton');\n document.getElementById('securityWebserviceError').innerHTML = '';\n self.loadData();\n }\n\n self.loadData = function(){\n currentScreen = securityscreen;\n xmlQuery(xml.create('iSalusExternal.GetSecurity'), self.updateSecurity);\n }\n}","\nfunction securityLogScreen(){\n var self = this;\n\n self.screenTitle = \"Security Log\";\n self.associatedNavItem = \"navMyAccount\";\n\n self.updateList = function(xmlDoc) {\n var html = '';\n var template = '{0}{1}{2}{3}{4}';\n\n $(xmlDoc).find('list_item').each(function(){\n var date = $(this).find('log_date').text();\n var logTime = $(this).find('log_time').text();\n var name = $(this).find('user_name').text();\n var action = $(this).find('action').text();\n var section = $(this).find('section').text();\n var owner = $(this).find('owner_name').text();\n\n html += template.format(name, action, section, owner, date, logTime);\n });\n\n if(html == ''){\n document.getElementById('noSecurityLog').style.display = 'inherit';\n document.getElementById('table').style.display = 'none';\n } else {\n document.getElementById('noSecurityLog').style.display = 'none';\n document.getElementById('table').style.display = 'table';\n }\n\n document.getElementById('securityLogList').innerHTML = html;\n }\n\n self.loadData = function(){\n currentScreen = securityLog;\n xmlQuery(xml.create('iSalusExternal.GetSecurityLogList')('0'), self.updateList);\n }\n}","\nfunction spo2Screen(){\n var self = this;\n\n self.screenTitle = \"SpO2\";\n self.associatedNavItem = \"navMyVitals\";\n\n self.data = [];\n\n self.updateSpo2 = function(xmlDoc) {\n var html = \"\";\n // var template = '

    {0}

    ' +\n // '

    {1}

    {2}

    ' +\n // '

    {3}

    ' +\n // '
  • ';\n\n var template = '{0}{1}{2}{3}'\n updateChart(xmlDoc);\n\n $(xmlDoc).find('list_item').each(function () {\n var date = $(this).find('spo2_date').text();\n var time = $(this).find('encounter_date_time').text();\n var reading = $(this).find('spo2_data').text();\n var value = $(this).find('spo2').text();\n var from = $(this).find('self_reported').text();\n var journalId = $(this).find('journal_id').text();\n var note = $(this).find('note').text();\n var databaseTitle = $(this).find('database_title').text();\n var reported = from == 'Y' ? 'Self-Reported' : databaseTitle;\n self.data.push([journalId, time.split(' ')[0], value, note]);\n html += template.format(date, reading, note, reported, journalId);\n });\n\n if(html == ''){\n document.getElementById('noSpo2').style.display = 'inherit';\n document.getElementById('table').style.display = 'none';\n document.getElementById('spo2ChartContainer').style.display = 'none';\n } else {\n document.getElementById('noSpo2').style.display = 'none';\n document.getElementById('table').style.display = 'table';\n document.getElementById('spo2ChartContainer').style.display = 'inherit';\n }\n document.getElementById('spo2-table').innerHTML = html;\n }\n\n self.editSpo2 = function(journalId){\n document.getElementById('popup').style.display = 'inherit';\n document.getElementById('cover').style.display = 'inherit';\n \n for(var i = 0; i < self.data.length; i++){\n if(self.data[i][0] == journalId){\n document.getElementById('journalId').value = self.data[i][0];\n document.getElementById('spo2Value').value = self.data[i][2];\n document.getElementById('note').value = self.data[i][3];\n document.getElementById('encounterDateTime').value = self.data[i][1];\n break;\n }\n }\n }\n\n self.newSpo2 = function(){\n document.getElementById('popup').style.display = 'inherit';\n document.getElementById('cover').style.display = 'inherit';\n document.getElementById('journalId').value = '';\n document.getElementById('spo2Value').value = '';\n document.getElementById('note').value = '';\n document.getElementById('encounterDateTime').value = common.getDateString();\n }\n\n self.deleteSpo2 = function(){\n var journalId = document.getElementById('deleteJournalId').value;\n\n for(var i = 0; i < self.data.length; i++){\n if(self.data[i][0] == journalId){\n var encounterDate = self.data[i][1];\n break;\n }\n }\n\n xmlQuery(xml.create('iSalusExternal.SaveJournalSpO2')(account, journalId, '1', '', encounterDate, 'Y'), common.refresh);\n }\n\n self.deleteConfirmation = function(id){\n document.getElementById('deleteJournalId').value = id;\n document.getElementById('popup-confirmation').style.display = 'inherit';\n document.getElementById('cover').style.display = 'inherit';\n }\n\n self.saveSpo2 = function(){\n\n var errorFlag = {'error': false};\n\n var journalId = document.getElementById('journalId').value;\n var value = common.validateCustomField('spo2Value', 'spo2ValueError', errorFlag, function(x){return x <= 100 && x > 80}, 'Value out of valid range.');\n var note = document.getElementById('note').value;\n var encounterDateTime = common.validateDateField('encounterDateTime', 'encounterDateTimeError', errorFlag);\n\n if(!errorFlag.error){\n xmlQuery(xml.create('iSalusExternal.SaveJournalSpO2')(account, journalId, value, note, encounterDateTime, 'N'), common.refresh)\n }\n }\n\n self.loadData = function(){\n currentScreen = spo2;\n self.data = [];\n\n if(account == ''){\n setTimeout(self.loadData, 200);\n }else{\n xmlQuery(xml.create('iSalusExternal.GetJournalSpO2')(account), self.updateSpo2);\n }\n }\n}","\nfunction summaryScreen(){\n var self = this;\n\n self.screenTitle = \"Summary\";\n self.associatedNavItem = \"navAboutMe\";\n\n self.databaseKey = '';\n self.databases = [];\n\n self.updateSummary = function(xmlDoc) {\n var patientSummary = $(xmlDoc).find('patient_summary');\n var employerSummary = $(xmlDoc).find('employer_summary');\n var emergencyList = $(xmlDoc).find('emergency_list');\n var allergiesList = $(xmlDoc).find('allergies_list');\n var medicationList = $(xmlDoc).find('medication_list');\n var familyHistoryList = $(xmlDoc).find('family_history_list');\n var lifestyleList = $(xmlDoc).find('lifestyle_list');\n var journalHwList = $(xmlDoc).find('journal_hw_list');\n var journalBpList = $(xmlDoc).find('journal_bp_list');\n var journalBsList = $(xmlDoc).find('journal_bs_list');\n var journalGoalList = $(xmlDoc).find('journal_goal_list');\n var conditionList = $(xmlDoc).find('condition_list');\n\n document.getElementById('patientSummary-firstName').innerText = $(patientSummary).find('first_name').text();\n document.getElementById('patientSummary-lastName').innerText = $(patientSummary).find('last_name').text();\n document.getElementById('patientSummary-birthDate').innerText = $(patientSummary).find('birth_date').text();\n document.getElementById('patientSummary-age').innerText = $(patientSummary).find('age').text().split('|').join(' ');\n document.getElementById('patientSummary-gender').innerText = $(patientSummary).find('gender').text();\n document.getElementById('patientSummary-maritalStatus').innerText = $(patientSummary).find('marital_status').text();\n document.getElementById('patientSummary-ethnicity').innerText = $(patientSummary).find('ethnicity').text();\n document.getElementById('patientSummary-bloodType').innerText = $(patientSummary).find('blood_type').text();\n document.getElementById('patientSummary-eyeColor').innerText = $(patientSummary).find('eye_color').text();\n document.getElementById('patientSummary-hairColor').innerText = $(patientSummary).find('hair_color').text();\n document.getElementById('patientSummary-birthmarksScars').innerText = $(patientSummary).find('birthmarks_scars').text();\n document.getElementById('patientSummary-specialConditions').innerText = $(patientSummary).find('special_conditions').text();\n document.getElementById('patientSummary-ssn').innerText = $(patientSummary).find('ssn').text();\n document.getElementById('patientSummary-address').innerText = $(patientSummary).find('address').text();\n document.getElementById('patientSummary-city').innerText = $(patientSummary).find('city').text();\n document.getElementById('patientSummary-state').innerText = $(patientSummary).find('state').text();\n document.getElementById('patientSummary-zip').innerText = $(patientSummary).find('zip').text();\n document.getElementById('patientSummary-myHome').innerText = $(patientSummary).find('my_home').text();\n document.getElementById('patientSummary-myCell').innerText = $(patientSummary).find('my_cell').text();\n document.getElementById('patientSummary-myWork').innerText = $(patientSummary).find('my_work').text();\n document.getElementById('employerSummary-occupation').innerText = $(employerSummary).find('occupation').text();\n document.getElementById('employerSummary-employerName').innerText = $(employerSummary).find('employer_name').text();\n document.getElementById('employerSummary-work').innerText = $(employerSummary).find('work').text();\n document.getElementById('employerSummary-fax').innerText = $(employerSummary).find('fax').text();\n document.getElementById('employerSummary-address').innerText = $(employerSummary).find('address').text();\n document.getElementById('employerSummary-city').innerText = $(employerSummary).find('city').text();\n document.getElementById('employerSummary-state').innerText = $(employerSummary).find('state').text();\n document.getElementById('employerSummary-zip').innerText = $(employerSummary).find('zip').text();\n\n var emergencyHtml = \"\";\n var emergencyTemplate = \"

    {0} Contact:

    Contact Name: {1}

    Home Phone: {2}

    Cell Phone: {3}

    Work Phone: {4}

    Relationship: {5}

    \";\n\n $(emergencyList).find('list_item').each(function(){\n var contactName = $(this).find('contact_name').text();\n var homePhone = $(this).find('home').text();\n var cellPhone = $(this).find('cell').text();\n var workPhone = $(this).find('work').text();\n var relationship = $(this).find('relationship').text();\n var contactType = $(this).find('contact_type').text();\n emergencyHtml += emergencyTemplate.format(contactType, contactName, homePhone, cellPhone, workPhone, relationship);\n });\n\n var allergyHtml = \"\";\n var allergyTemplate = \"

    {0}

    \";\n\n $(allergiesList).find('list_item').each(function(){\n var allergenDesc = $(this).find('allergen_desc').text();\n allergyHtml += allergyTemplate.format(allergenDesc);\n });\n\n var medicationHtml = \"\";\n var medicationTemplate = \"

    {0}

    \";\n\n $(medicationList).find('list_item').each(function(){\n var medName = $(this).find('med_name').text();\n medicationHtml += medicationTemplate.format(medName);\n });\n\n var familyHistoryHtml = \"\";\n var familyHistoryTemplate = \"

    {0} - {1}

    \";\n\n $(familyHistoryList).find('list_item').each(function(){\n var relationshipDesc = $(this).find('relationship_desc').text();\n var conditionDesc = $(this).find('condition_desc').text();\n familyHistoryHtml += familyHistoryTemplate.format(relationshipDesc, conditionDesc);\n });\n\n var lifestyleHtml = \"\";\n var lifestyleTemplate = \"

    {0}

    \";\n\n $(lifestyleList).find('list_item').each(function(){\n var lifestyleDesc = $(this).find('lifestyle_desc').text();\n lifestyleHtml += lifestyleTemplate.format(lifestyleDesc);\n });\n\n var journalHwHtml = \"\";\n var journalHwTemplate = \"

    {0}

    \";\n\n $(journalHwList).find('list_item').each(function(){\n var journalHwDesc = $(this).find('hw_desc').text();\n journalHwHtml += journalHwTemplate.format(journalHwDesc);\n });\n\n var journalBpHtml = \"\";\n var journalBpTemplate = \"

    {0}

    \";\n\n $(journalBpList).find('list_item').each(function(){\n var journalBpDesc = $(this).find('bp_desc').text();\n journalBpHtml += journalBpTemplate.format(journalBpDesc);\n });\n\n var journalBsHtml = \"\";\n var journalBsTemplate = \"

    {0}

    \";\n\n $(journalBsList).find('list_item').each(function(){\n var journalBsDesc = $(this).find('bs_desc').text();\n journalBsHtml += journalHwTemplate.format(journalBsDesc);\n });\n\n var journalGoalHtml = \"\";\n var journalGoalTemplate = \"

    {0}

    \";\n\n $(journalGoalList).find('list_item').each(function(){\n var journalGoalDesc = $(this).find('goal_desc').text();\n journalGoalHtml += journalGoalTemplate.format(journalGoalDesc);\n });\n\n var medicalConditionHtml = \"\";\n var medicalConditionTemplate = \"

    {0} - {1}

    \";\n\n $(conditionList).find('list_item').each(function(){\n var conditionTypeDesc = $(this).find('condition_type_desc').text();\n var conditionDesc = $(this).find('condition_desc').text();\n medicalConditionHtml += medicalConditionTemplate.format(conditionTypeDesc, conditionDesc);\n });\n\n document.getElementById('emergencyContacts').innerHTML = emergencyHtml;\n document.getElementById('allergiesList').innerHTML = allergyHtml;\n document.getElementById('medicationList').innerHTML = medicationHtml;\n document.getElementById('familyHistoryList').innerHTML = familyHistoryHtml;\n document.getElementById('lifestyleList').innerHTML = lifestyleHtml;\n document.getElementById('journalHwList').innerHTML = journalHwHtml;\n document.getElementById('journalBpList').innerHTML = journalBpHtml;\n document.getElementById('journalBsList').innerHTML = journalBsHtml;\n document.getElementById('journalGoalList').innerHTML = journalGoalHtml;\n document.getElementById('conditionsList').innerHTML = medicalConditionHtml;\n }\n\n self.resetKey = function(){\n if(self.databases.length != 1){\n self.databaseKey = '';\n }\n }\n\n self.getDatabaseKey = function(xmlDoc) {\n self.databaseKey = '';\n self.databases = [];\n\n $(xmlDoc).find('list_item').each(function(){\n if($(this).find('account_id').text() == account){\n self.databases.push([$(this).find('database_key').text(), $(this).find('client_name').text()]);\n }\n });\n\n if(self.databases.length == 1){\n self.databaseKey = self.databases[0][0];\n }\n\n if(self.databases.length < 1){\n $('#shareSummaryButton').addClass('btn--disabled');\n } else {\n $('#shareSummaryButton').removeClass('btn--disabled');\n }\n }\n\n self.selectDatabase = function(number){\n self.databaseKey = self.databases[number][0];\n\n common.closeModals();\n\n self.share();\n }\n\n self.share = function(){\n if(self.databaseKey != ''){\n document.getElementById('cover').style.display = 'inherit';\n document.getElementById('popup').style.display = 'inherit';\n document.getElementById('demographicsInd').checked = true;\n document.getElementById('employerInd').checked = true;\n document.getElementById('insuranceInd').checked = true;\n document.getElementById('medicationInd').checked = true;\n document.getElementById('allergiesInd').checked = true;\n document.getElementById('medicalInd').checked = true;\n document.getElementById('lifestyleInd').checked = true;\n document.getElementById('familyInd').checked = true;\n document.getElementById('hwInd').checked = true;\n document.getElementById('bpInd').checked = true;\n document.getElementById('bsInd').checked = true;\n document.getElementById('goalInd').checked = true;\n } else {\n self.showDatabaseSelect();\n }\n }\n\n self.showDatabaseSelect = function(){\n var html = '';\n var template = '
    {1}
    ';\n\n for(var i = 0; i < self.databases.length; i++){\n html += template.format(i, self.databases[i][1]);\n }\n\n document.getElementById('popupDatabaseList').innerHTML = html;\n document.getElementById('popupDatabase').style.display = 'inherit';\n document.getElementById('cover').style.display = 'inherit';\n }\n\n self.shareSummary = function(){\n var demographicsInd = document.getElementById('demographicsInd').checked ? 'Y' : 'N';\n var employerInd = document.getElementById('employerInd').checked ? 'Y' : 'N';\n var insuranceInd = document.getElementById('insuranceInd').checked ? 'Y' : 'N';\n var medicationInd = document.getElementById('medicationInd').checked ? 'Y' : 'N';\n var allergiesInd = document.getElementById('allergiesInd').checked ? 'Y' : 'N';\n var medicalInd = document.getElementById('medicalInd').checked ? 'Y' : 'N';\n var lifestyleInd = document.getElementById('lifestyleInd').checked ? 'Y' : 'N';\n var familyInd = document.getElementById('familyInd').checked ? 'Y' : 'N';\n var hwInd = document.getElementById('hwInd').checked ? 'Y' : 'N';\n var bpInd = document.getElementById('bpInd').checked ? 'Y' : 'N';\n var bsInd = document.getElementById('bsInd').checked ? 'Y' : 'N';\n var goalInd = document.getElementById('goalInd').checked ? 'Y' : 'N';\n\n xmlQuery(xml.create('iSalusExternal.ShareSummary')(self.databaseKey, demographicsInd, employerInd, insuranceInd, medicationInd, allergiesInd, medicalInd, lifestyleInd, familyInd, hwInd, bpInd, bsInd, goalInd), common.closeModals);\n \n self.resetKey();\n }\n\n self.loadData = function(){\n currentScreen = summary;\n xmlQuery(xml.create('iSalusExternal.GetConnection'), self.getDatabaseKey);\n xmlQuery(xml.create('iSalusExternal.GetSummary'), self.updateSummary);\n }\n}\n","\nfunction testScreen(){\n var self = this;\n\n self.screenTitle = \"Test\";\n self.associatedNavItem = \"navAboutMe\";\n\n self.updateAllergies = function(xmlDoc) {\n var html = '';\n\n var template = '
  • {0} / {1}

    {2}

  • ';\n\n $(xmlDoc).find('list_item').each(function() {\n html += template.format(\n //Fetch the Allergy Description\n $(this).find('allergy_id').text(),\n $(this).find('allergy_desc').text(), \n $(this).find('allergy_type_desc').text(), \n $(this).find('reaction_treatment').text()\n )\n });\n\n $('#allergyList').html(html);\n }\n\n self.loadData = function(){\n currentScreen = testscreen;\n\n xmlQuery(xml.create('iSalusExternal.GetAllergyList'), self.updateAllergies);\n }\n}","\nfunction timezoneScreen(){\n var self = this;\n\n self.screenTitle = \"Timezone\";\n self.associatedNavItem = \"navMyAccount\";\n\n self.updateTimezone = function(xmlDoc) {\n document.getElementById('timezone').value = $(xmlDoc).find('timezone').text();\n $spans.each(function() {\n var $this = $(this);\n $this.text($this.siblings(\"input\").val());\n });\n }\n\n self.resetFields = function(xmlDoc){\n $inputs.each(function() {\n var $this = $(this);\n $this.hide().siblings(\"span\").text($this.val()).show();\n });\n\n common.buttonDataUpdated('saveTimezoneButton');\n\n self.loadData();\n }\n\n self.saveTimezone = function(){\n\n var errorFlag = {'error': false};\n\n var timezone = document.getElementById('timezone').value;\n\n if(!errorFlag.error){\n common.saveButton('saveTimezoneButton');\n xmlQuery(xml.create('iSalusExternal.SaveTimezone')(timezone), self.resetFields);\n }\n }\n\n self.loadData = function(){\n currentScreen = timezone;\n xmlQuery(xml.create('iSalusExternal.GetTimezone'), self.updateTimezone);\n }\n}","\nfunction weightScreen(){\n var self = this;\n\n self.screenTitle = \"Weight\";\n self.associatedNavItem = \"navMyVitals\";\n\n self.data = [];\n\n self.updateWeight = function(xmlDoc) {\n var html = \"\";\n\n var template = '{1}{0}{2}{3}';\n\n updateChart(xmlDoc);\n\n $(xmlDoc).find('list_item').each(function () {\n var date = $(this).find('weight_date').text();\n var time = $(this).find('encounter_date_time').text();\n var weight = $(this).find('weight_data').text();\n var weightLbs = $(this).find('weight_lbs').text();\n var from = $(this).find('self_reported').text();\n var journalId = $(this).find('journal_id').text();\n var note = $(this).find('note').text();\n var databaseTitle = $(this).find('database_title').text();\n var reported = from == 'Y' ? 'Self-Reported' : databaseTitle;\n self.data.push([journalId, time.split(' ')[0], weightLbs, note]);\n html += template.format(date, weight, note, reported, journalId);\n });\n\n if(html == ''){\n document.getElementById('noWeight').style.display = 'inherit';\n document.getElementById('table').style.display = 'none';\n document.getElementById('weightChartContainer').style.display = 'none';\n document.getElementById('weightChartContainer').style.visibility = 'hidden';\n } else {\n document.getElementById('noWeight').style.display = 'none';\n document.getElementById('table').style.display = 'table';\n document.getElementById('weightChartContainer').style.display = 'inherit';\n document.getElementById('weightChartContainer').style.visibility = 'inherit';\n }\n document.getElementById('weight-table').innerHTML = html;\n }\n\n self.editWeight = function(journalId){\n document.getElementById('popup').style.display = 'inherit';\n document.getElementById('cover').style.display = 'inherit';\n \n for(var i = 0; i < self.data.length; i++){\n if(self.data[i][0] == journalId){\n document.getElementById('journalId').value = self.data[i][0];\n document.getElementById('weightLbs').value = self.data[i][2];\n document.getElementById('note').value = self.data[i][3];\n document.getElementById('encounterDateTime').value = self.data[i][1];\n break;\n }\n }\n }\n\n self.newWeight = function(){\n document.getElementById('popup').style.display = 'inherit';\n document.getElementById('cover').style.display = 'inherit';\n document.getElementById('journalId').value = '';\n document.getElementById('weightLbs').value = '';\n document.getElementById('note').value = '';\n document.getElementById('encounterDateTime').value = common.getDateString();\n }\n\n self.deleteWeight = function(){\n var journalId = document.getElementById('deleteJournalId').value;\n\n for(var i = 0; i < self.data.length; i++){\n if(self.data[i][0] == journalId){\n var encounterDate = self.data[i][1];\n break;\n }\n }\n\n xmlQuery(xml.create('iSalusExternal.SaveJournalWeight')(account, journalId, '100', '', encounterDate, 'Y'), common.refresh);\n }\n\n self.deleteConfirmation = function(id){\n document.getElementById('deleteJournalId').value = id;\n document.getElementById('popup-confirmation').style.display = 'inherit';\n document.getElementById('cover').style.display = 'inherit';\n }\n\n self.saveWeight = function(){\n\n var errorFlag = {'error': false};\n\n var journalId = document.getElementById('journalId').value;\n var weightLbs = common.validateCustomField('weightLbs', 'weightLbsError', errorFlag, function(x){return x < 2000 && x > 0}, 'Not a valid weight.');\n var note = document.getElementById('note').value;\n var encounterDateTime = common.validateDateField('encounterDateTime', 'encounterDateTimeError', errorFlag);\n\n if(!errorFlag.error){\n xmlQuery(xml.create('iSalusExternal.SaveJournalWeight')(account, journalId, weightLbs, note, encounterDateTime, 'N'), common.refresh)\n }\n }\n \n self.loadData = function(){\n currentScreen = weight;\n self.data = [];\n\n if(account == ''){\n setTimeout(self.loadData, 200);\n }else{\n xmlQuery(xml.create('iSalusExternal.GetJournalWeight')(account), self.updateWeight);\n }\n }\n}"]}